UNPKG

@dooboostore/dom-render

Version:
169 lines (168 loc) 7.78 kB
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