35 lines
1.1 KiB
JavaScript
Executable file
35 lines
1.1 KiB
JavaScript
Executable file
import { c as componentOnReady } from './helpers.js';
|
|
|
|
const attachComponent = async (delegate, container, component, cssClasses, componentProps) => {
|
|
if (delegate) {
|
|
return delegate.attachViewToDom(container, component, componentProps, cssClasses);
|
|
}
|
|
if (typeof component !== 'string' && !(component instanceof HTMLElement)) {
|
|
throw new Error('framework delegate is missing');
|
|
}
|
|
const el = (typeof component === 'string')
|
|
? container.ownerDocument && container.ownerDocument.createElement(component)
|
|
: component;
|
|
if (cssClasses) {
|
|
cssClasses.forEach(c => el.classList.add(c));
|
|
}
|
|
if (componentProps) {
|
|
Object.assign(el, componentProps);
|
|
}
|
|
container.appendChild(el);
|
|
await new Promise(resolve => componentOnReady(el, resolve));
|
|
return el;
|
|
};
|
|
const detachComponent = (delegate, element) => {
|
|
if (element) {
|
|
if (delegate) {
|
|
const container = element.parentElement;
|
|
return delegate.removeViewFromDom(container, element);
|
|
}
|
|
element.remove();
|
|
}
|
|
return Promise.resolve();
|
|
};
|
|
|
|
export { attachComponent as a, detachComponent as d };
|