@dooboostore/dom-render
Version:
html view template engine
169 lines (168 loc) • 7.78 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var DomRender_exports = {};
__export(DomRender_exports, {
DomRender: () => DomRender
});
module.exports = __toCommonJS(DomRender_exports);
var import_DomRenderProxy = require("./DomRenderProxy");
var import_core_web = require("@dooboostore/core-web");
var import_core_web2 = require("@dooboostore/core-web");
var import_Types = require("./types/Types");
var import_RawSet = require("./rawsets/RawSet");
var import_DefaultMessenger = require("./messenger/DefaultMessenger");
var import_components = require("./components");
var import_EventManager = require("./events/EventManager");
var import_core2 = require("@dooboostore/core");
let eventManager = null;
class DomRender {
constructor(parameter, executeConfig) {
const s = DomRender.runSet(parameter, executeConfig);
this._config = s.config;
this._target = s.target;
this._rootObject = s.rootObject;
this._router = s.config.router;
this._eventManager = s.config.eventManager;
}
get rootObject() {
return this._rootObject;
}
get config() {
return this._config;
}
get router() {
return this._router;
}
get eventManager() {
return this._eventManager;
}
get target() {
return this._target;
}
static run(data) {
return DomRender.runSet(data).rootObject;
}
static runSet({
rootObject,
target,
config
}, executeConfig) {
rootObject = typeof rootObject === "function" ? rootObject() : rootObject;
let targetObject = rootObject;
if ("_DomRender_isProxy" in rootObject) {
if (target) {
rootObject._DomRender_proxy.initRender(target);
}
targetObject = rootObject;
return { rootObject: targetObject, target, config: rootObject._domRender_config };
}
const targetConfig = Object.assign({}, config);
eventManager ?? (eventManager = new import_EventManager.EventManager(targetConfig.window));
targetConfig.uuid = import_core2.RandomUtils.uuid4();
targetConfig.messenger = import_Types.DomRenderFinalProxy.final(targetConfig.messenger ?? new import_DefaultMessenger.DefaultMessenger(targetConfig));
targetConfig.proxyExcludeTyps = targetConfig.proxyExcludeTyps ?? [];
targetConfig.targetElements ?? (targetConfig.targetElements = []);
if (typeof Window !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === Window)) {
targetConfig.proxyExcludeTyps.push(Window);
}
if (typeof Map !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === Map)) {
targetConfig.proxyExcludeTyps.push(Map);
}
if (typeof Set !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === Set)) {
targetConfig.proxyExcludeTyps.push(Set);
}
if (typeof Promise !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === Promise)) {
targetConfig.proxyExcludeTyps.push(Promise);
}
if (typeof ResizeObserver !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === ResizeObserver)) {
targetConfig.proxyExcludeTyps.push(ResizeObserver);
}
if (typeof ImageBitmap !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === ImageBitmap)) {
targetConfig.proxyExcludeTyps.push(ImageBitmap);
}
if (typeof CanvasRenderingContext2D !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === CanvasRenderingContext2D)) {
targetConfig.proxyExcludeTyps.push(CanvasRenderingContext2D);
}
if (typeof CSSStyleDeclaration !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === CSSStyleDeclaration)) {
targetConfig.proxyExcludeTyps.push(CSSStyleDeclaration);
}
if (typeof Date !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === Date)) {
targetConfig.proxyExcludeTyps.push(Date);
}
if (typeof MutationObserver !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === IntersectionObserver)) {
targetConfig.proxyExcludeTyps.push(IntersectionObserver);
}
if (typeof IntersectionObserver !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === IntersectionObserver)) {
targetConfig.proxyExcludeTyps.push(IntersectionObserver);
}
if (typeof HTMLElement !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === HTMLElement)) {
targetConfig.proxyExcludeTyps.push(HTMLElement);
}
if (!targetConfig.proxyExcludeTyps.some((it) => it === import_RawSet.RawSet)) {
targetConfig.proxyExcludeTyps.push(import_RawSet.RawSet);
}
if (!targetConfig.proxyExcludeTyps.some((it) => it === DomRender)) {
targetConfig.proxyExcludeTyps.push(DomRender);
}
targetConfig.rootElement = target;
targetConfig.eventManager = eventManager;
const domRender = new import_DomRenderProxy.DomRenderProxy(rootObject, target, targetConfig);
const dest = new Proxy(rootObject, domRender);
targetObject = dest;
targetConfig.root = targetObject;
if (!targetConfig.router) {
let targetRouter;
if ("routerType" in config && config?.routerType === "hash") {
targetRouter = new import_core_web2.HashRouter({ rootObject: targetObject, window: targetConfig.window, firstUrl: executeConfig?.firstUrl });
} else if ("routerType" in config && config?.routerType === "path") {
targetRouter = new import_core_web.PathRouter({ rootObject: targetObject, window: targetConfig.window, firstUrl: executeConfig?.firstUrl });
} else if ("routerType" in config && typeof config?.routerType === "function") {
targetRouter = config.routerType(targetObject, targetConfig);
} else if ("routerType" in config && typeof config?.routerType === "object") {
targetRouter = config.routerType;
}
targetConfig.router = targetRouter;
}
for (const value of Object.values(import_components.drComponent)) {
const a = value(targetConfig, DomRender);
if (!targetConfig.targetElements.some((it) => it.name === a.name)) {
targetConfig.targetElements.push(a);
}
}
domRender.run(targetObject);
return { rootObject: targetObject, config: targetConfig, target };
}
static createComponent(param) {
const component = import_RawSet.RawSet.createComponentTargetElement({
name: param.tagName ?? (typeof param.type === "function" ? param.type.name : param.type.constructor.name),
objFactory: (e, o, r2, counstructorParam) => {
return typeof param.type === "function" ? new param.type(...counstructorParam) : param.type;
},
noStrip: param.noStrip,
template: param.template ?? "",
styles: Array.isArray(param.styles) ? param.styles : param.styles ? [param.styles] : void 0
});
return component;
}
// ?? 언제 쓰는거지?? 훔..
static createAttribute(attrName, getThisObj, factory) {
const targetAttribute = import_RawSet.RawSet.createComponentTargetAttribute(attrName, getThisObj, factory);
return targetAttribute;
}
}
//# sourceMappingURL=DomRender.js.map