UNPKG

uikit

Version:

UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.

73 lines (55 loc) 1.75 kB
import { $, apply, isString, mergeOptions, parents, toNode } from 'uikit-util'; export default function (UIkit) { const DATA = UIkit.data; UIkit.use = function (plugin) { if (plugin.installed) { return; } plugin.call(null, this); plugin.installed = true; return this; }; UIkit.mixin = function (mixin, component) { component = (isString(component) ? UIkit.component(component) : component) || this; component.options = mergeOptions(component.options, mixin); }; UIkit.extend = function (options) { options = options || {}; const Super = this; const Sub = function UIkitComponent(options) { this._init(options); }; Sub.prototype = Object.create(Super.prototype); Sub.prototype.constructor = Sub; Sub.options = mergeOptions(Super.options, options); Sub.super = Super; Sub.extend = Super.extend; return Sub; }; UIkit.update = function (element, e) { element = element ? toNode(element) : document.body; for (const parentEl of parents(element).reverse()) { update(parentEl[DATA], e); } apply(element, (element) => update(element[DATA], e)); }; let container; Object.defineProperty(UIkit, 'container', { get() { return container || document.body; }, set(element) { container = $(element); }, }); function update(data, e) { if (!data) { return; } for (const name in data) { if (data[name]._connected) { data[name]._callUpdate(e); } } } }