UNPKG

@chasemoskal/magical

Version:

web toolkit for lit apps

67 lines 4.5 kB
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var _TemplateSlots_instances, _a, _TemplateSlots_parent, _TemplateSlots_templates, _TemplateSlots_parentObserver, _TemplateSlots_templateObservers, _TemplateSlots_onChange, _TemplateSlots_refresh; export class TemplateSlots { constructor(parent, onChange = () => { }) { _TemplateSlots_instances.add(this); _TemplateSlots_parent.set(this, void 0); _TemplateSlots_templates.set(this, new Map()); _TemplateSlots_parentObserver.set(this, void 0); _TemplateSlots_templateObservers.set(this, new Set); _TemplateSlots_onChange.set(this, () => { }); __classPrivateFieldSet(this, _TemplateSlots_parent, parent, "f"); __classPrivateFieldSet(this, _TemplateSlots_onChange, onChange, "f"); __classPrivateFieldSet(this, _TemplateSlots_parentObserver, new MutationObserver(() => __classPrivateFieldGet(this, _TemplateSlots_instances, "m", _TemplateSlots_refresh).call(this)), "f"); __classPrivateFieldGet(this, _TemplateSlots_parentObserver, "f").observe(parent, _a.parentObservationOptions); __classPrivateFieldGet(this, _TemplateSlots_instances, "m", _TemplateSlots_refresh).call(this); } get(name) { const selector = name ? `:scope > template[slot="${name}"]` : `:scope > template:not([slot])`; const template = __classPrivateFieldGet(this, _TemplateSlots_parent, "f") .querySelector(selector); return template?.content.cloneNode(true); } } _a = TemplateSlots, _TemplateSlots_parent = new WeakMap(), _TemplateSlots_templates = new WeakMap(), _TemplateSlots_parentObserver = new WeakMap(), _TemplateSlots_templateObservers = new WeakMap(), _TemplateSlots_onChange = new WeakMap(), _TemplateSlots_instances = new WeakSet(), _TemplateSlots_refresh = function _TemplateSlots_refresh() { for (const observer of __classPrivateFieldGet(this, _TemplateSlots_templateObservers, "f")) observer.disconnect(); __classPrivateFieldGet(this, _TemplateSlots_templates, "f").clear(); __classPrivateFieldGet(this, _TemplateSlots_templateObservers, "f").clear(); const templates = Array.from(__classPrivateFieldGet(this, _TemplateSlots_parent, "f").querySelectorAll(":scope > template")); for (const template of templates) { const name = template.getAttribute("slot") ?? undefined; __classPrivateFieldGet(this, _TemplateSlots_templates, "f").set(name, template); const deepObserver = new MutationObserver(__classPrivateFieldGet(this, _TemplateSlots_onChange, "f")); const attributeObserver = new MutationObserver(() => { __classPrivateFieldGet(this, _TemplateSlots_instances, "m", _TemplateSlots_refresh).call(this); __classPrivateFieldGet(this, _TemplateSlots_onChange, "f").call(this); }); deepObserver.observe(template.content, _a.templateDeepObserverationOptions); attributeObserver.observe(template, _a.templateAttributeObserverationOptions); __classPrivateFieldGet(this, _TemplateSlots_templateObservers, "f").add(deepObserver); } }; TemplateSlots.parentObservationOptions = { childList: true, }; TemplateSlots.templateDeepObserverationOptions = { childList: true, attributes: true, characterData: true, subtree: true, }; TemplateSlots.templateAttributeObserverationOptions = { attributes: true, }; //# sourceMappingURL=template-slots.js.map