@stilljs/core
Version:
<div style="display:flex; justify-content: center"> <img src="@still/img/logo-no-bg.png" style="width: 5em;"/> </div>
81 lines (64 loc) • 3.64 kB
JavaScript
import { StillAppSetup } from "../config/app-setup.js";
import { stillRoutesMap } from "../config/route.map.js";
import { ComponentNotFoundException, ComponentRegistror } from "./component/manager/registror.js";
import { BaseComponent } from "./component/super/BaseComponent.js";
import { BehaviorComponent } from "./component/super/BehaviorComponent.js";
import { BaseService, ServiceEvent } from "./component/super/service/BaseService.js";
import { Router } from "./routing/router.js";
import { Components } from "./setup/components.js";
import { UUIDUtil } from "./util/UUIDUtil.js";
(() => {
const boolMap = { 'false': false, 'true': true, false: false, true: true, 'no': false, 'yes': true };
Router.parseRouteMap()
.then(async () => {
Router.setStillHomeUrl();
Components.loadCssAssets();
StillAppSetup.loadInterceptWorker();
StillAppSetup.register(Router);
StillAppSetup.register(stillRoutesMap);
StillAppSetup.register(UUIDUtil);
StillAppSetup.register(BehaviorComponent);
StillAppSetup.register(Components);
StillAppSetup.register(BaseService);
StillAppSetup.register(ServiceEvent);
StillAppSetup.register(ComponentNotFoundException);
/** Only for dev mode */ StillAppSetup.setDevErrorTracing();
if (document.readyState != 'loading') {
const stillDeclarations = document.getElementsByTagName('st-element');
[...stillDeclarations].forEach(async elm => {
elm.id = `stillLone_${UUIDUtil.newId()}`;
const cmpName = elm.getAttribute('component'), ref = elm.getAttribute('stRef');
const { newInstance: cmp } = await Components.produceComponent({ cmp: cmpName, lone: true });
const attrs = [...elm.getAttributeNames()];
for(const atr of attrs){
const attrVal = elm.getAttribute(atr);
const realVal = attrVal in boolMap ? boolMap[attrVal] : attrVal;
if(!['component','id','ref'].includes(atr)) cmp[atr] = realVal;
}
await cmp.onRender();
new BaseComponent().parseStTag(elm.outerHTML, '', cmp);
const template = cmp.getBoundTemplate(elm.id);
ComponentRegistror.add(cmp.cmpInternalId, cmp);
setTimeout(() => cmp.parseOnChange(), 500);
setTimeout(() => {
cmp.setAndGetsParsed = true;
(new Components).parseGetsAndSets(cmp)
}, 10);
document.getElementById(elm.id).innerHTML = template;
if(ref && ref != ''){
if(window['stillFrontendsList']){
const appLoaderId = window['stillFrontendsList'][ref];
window['stillFrontendsLoader'][appLoaderId][ref] = cmp;
}
}
const cmpParts = Components.componentPartsMap[cmp.cmpInternalId];
setTimeout(async () => {
Components.emitAction(cmp.getName());
Components.handleInPlacePartsInit(cmp, cmp.cmpInternalId, cmpParts);
setTimeout(() => Components.runAfterInit(cmp),100);
Components.handleMarkedToRemoveParts();
});
});
};
});
})()