UNPKG

uikit

Version:

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

67 lines (48 loc) 1.54 kB
import {getComponentName} from './component'; import {apply, fastdom, hasAttr, inBrowser} from 'uikit-util'; export default function (UIkit) { const {connect, disconnect} = UIkit; if (!inBrowser || !window.MutationObserver) { return; } fastdom.read(function () { if (document.body) { apply(document.body, connect); } new MutationObserver(records => records.forEach(applyChildListMutation) ).observe(document, { childList: true, subtree: true }); new MutationObserver(records => records.forEach(applyAttributeMutation) ).observe(document, { attributes: true, subtree: true }); UIkit._initialized = true; }); function applyChildListMutation({addedNodes, removedNodes}) { for (let i = 0; i < addedNodes.length; i++) { apply(addedNodes[i], connect); } for (let i = 0; i < removedNodes.length; i++) { apply(removedNodes[i], disconnect); } } function applyAttributeMutation({target, attributeName}) { const name = getComponentName(attributeName); if (!name || !(name in UIkit)) { return; } if (hasAttr(target, attributeName)) { UIkit[name](target); return; } const component = UIkit.getComponent(target, name); if (component) { component.$destroy(); } } }