forked from openinula/inula
63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
import { DLNode } from './DLNode';
|
|
import { insertNode } from './HTMLNode';
|
|
|
|
export * from './HTMLNode';
|
|
export * from './CompNode';
|
|
export * from './EnvNode';
|
|
export * from './TextNode';
|
|
export * from './PropView';
|
|
export * from './SnippetNode';
|
|
export * from './MutableNode/ForNode';
|
|
export * from './MutableNode/ExpNode';
|
|
export * from './MutableNode/CondNode';
|
|
export * from './MutableNode/TryNode';
|
|
|
|
import { DLStore } from './store';
|
|
|
|
export { setGlobal, setDocument } from './store';
|
|
|
|
function initStore() {
|
|
// Declare a global variable to store willUnmount functions
|
|
DLStore.global.WillUnmountStore = [];
|
|
// Declare a global variable to store didUnmount functions
|
|
DLStore.global.DidUnmountStore = [];
|
|
}
|
|
|
|
/**
|
|
* @brief Render the DL class to the element
|
|
* @param {typeof import('./CompNode').CompNode} Comp
|
|
* @param {HTMLElement | string} idOrEl
|
|
*/
|
|
export function render(Comp, idOrEl) {
|
|
let el = idOrEl;
|
|
if (typeof idOrEl === 'string') {
|
|
const elFound = DLStore.document.getElementById(idOrEl);
|
|
if (elFound) el = elFound;
|
|
else {
|
|
throw new Error(`DLight: Element with id ${idOrEl} not found`);
|
|
}
|
|
}
|
|
initStore();
|
|
el.innerHTML = '';
|
|
const dlNode = new Comp();
|
|
dlNode._$init();
|
|
insertNode(el, dlNode, 0);
|
|
DLNode.runDidMount();
|
|
}
|
|
|
|
export function manual(callback, _deps) {
|
|
return callback();
|
|
}
|
|
export function escape(arg) {
|
|
return arg;
|
|
}
|
|
|
|
export const $ = escape;
|
|
export const required = null;
|
|
|
|
export function use() {
|
|
console.error(
|
|
'DLight: use() is not supported be called directly. You can only assign `use(model)` to a dlight class property. Any other expressions are not allowed.'
|
|
);
|
|
}
|