@surface/custom-element
Version:
Provides support of directives and data binding on custom elements.
20 lines (19 loc) • 758 B
JavaScript
export default function fragmentFactory(factories) {
return () => {
const fragment = document.createDocumentFragment();
const activators = [];
for (const factory of factories) {
const [element, activator] = factory();
fragment.appendChild(element);
activators.push(activator);
}
const activator = (parent, host, scope, directives) => {
const disposables = [];
for (const activator of activators) {
disposables.push(activator(parent, host, scope, directives));
}
return { dispose: () => disposables.splice(0).forEach(x => x.dispose()) };
};
return [fragment, activator];
};
}