@next-core/runtime 1.22.4 → 1.22.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"RendererContext.js","names":["_lodash","require","_bindListeners","_history","_proxyFactories","_mediaQuery","_mount","_enums","_bindTemplateProxy","_Runtime","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_allMenuRequests","_memoizedMenuRequestMap","_locationChangeCallbacks","_unmountBricks","WeakSet","_initializeRerenderBricks","_dispatchGeneralLifeCycle","_addObserver","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec2","default","_defineProperty2","_classPrivateFieldInitSpec2","writable","value","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet2","routeHelper","setInitialMenuRequests","menuRequests","memoizeMenuRequests","route","_classPrivateFieldGet2","set","reMergeMenuRequests","routes","currentRoute","previousMenuRequest","previousRoute","get","mergedMenuRequests","previousIndex","indexOf","length","push","splice","delete","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","results","Promise","all","map","callback","some","result","performIncrementalRender","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","isEmpty","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","node","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","_prevLastPortal$eleme2","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","element","nextSibling","insertPortalBeforeChild","prevSibling","current","child","sibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","tag","RenderTag","ROOT","container","createPortal","return","removeBricks","getBrickRange","_classPrivateMethodGet2","_unmountBricks2","call","mountTree","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","newBricks","_initializeRerenderBricks2","dispose","list","Object","values","observer","disconnect","clear","mediaEventTarget","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle2","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","getHistory","anchor","substring","initializeScrollIntoView","conf","_addObserver2","initializeMediaChange","getReadOnlyProxy","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc2","confList","concat","_hooks$messageDispatc","hooks","messageDispatcher","channel","listenerFactory","runtimeContext","onClose","dispatchOnMount","dispatchOnUnmount","exports","bricks","unmountList","removed","remove","item","has","_brick$element","_brick$element2","observers","unbindTemplateProxy","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","includes","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { Action, Location } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type { RenderBrick, RenderNode, RenderRoot } from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { hooks } from \"./Runtime.js\";\nimport type { RenderOutput } from \"./Renderer.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\ntype LocationChangeCallback = (\n location: Location<NextHistoryState>\n) => Promise<boolean>;\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n \"onMessage\",\n \"onMessageClose\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n routeHelper?: RouteHelper;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n catch: (\n error: unknown,\n returnNode: RenderNode\n ) =>\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n };\n}\n\nexport class RendererContext {\n /**\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n public readonly scope: \"page\" | \"fragment\";\n\n public readonly unknownBricks: \"silent\" | \"throw\";\n\n #routeHelper: RouteHelper | undefined;\n\n constructor(scope: \"page\" | \"fragment\", options?: RendererContextOptions) {\n this.scope = scope;\n this.unknownBricks = options?.unknownBricks ?? \"throw\";\n this.#routeHelper = options?.routeHelper;\n }\n\n #memoizedLifeCycle: MemoizedLifeCycle<\n Required<\n Pick<\n BrickLifeCycle,\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onScrollIntoView\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMessage\"\n | \"onMessageClose\"\n >\n >\n > = {\n onBeforePageLoad: [],\n onPageLoad: [],\n onPageLeave: [],\n onBeforePageLeave: [],\n onAnchorLoad: [],\n onAnchorUnload: [],\n onMediaChange: [],\n onScrollIntoView: [],\n onMount: [],\n onUnmount: [],\n onMessage: [],\n onMessageClose: [],\n };\n #observers = new Map<RenderBrick, IntersectionObserver[]>();\n #mediaListener: EventListener | undefined;\n\n #arbitraryLifeCycle = new Map<string, Set<() => void>>();\n\n #memoized?: WeakMap<\n RenderNode,\n Map<\n string,\n {\n node?: RenderBrick;\n last?: RenderBrick;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n #allMenuRequests?: Promise<StaticMenuConf>[];\n #memoizedMenuRequestMap?: WeakMap<RouteConf, Promise<StaticMenuConf>>;\n\n setInitialMenuRequests(menuRequests: Promise<StaticMenuConf>[]) {\n this.#allMenuRequests = menuRequests;\n }\n\n memoizeMenuRequests(\n route: RouteConf,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n if (!this.#memoizedMenuRequestMap) {\n this.#memoizedMenuRequestMap = new WeakMap();\n }\n this.#memoizedMenuRequestMap.set(route, menuRequests[0]);\n }\n\n async reMergeMenuRequests(\n routes: RouteConf[],\n currentRoute: RouteConf | undefined,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n let previousMenuRequest: Promise<StaticMenuConf> | undefined;\n let previousRoute: RouteConf | undefined;\n for (const route of routes) {\n previousMenuRequest = this.#memoizedMenuRequestMap!.get(route);\n if (previousMenuRequest) {\n previousRoute = route;\n break;\n }\n }\n const mergedMenuRequests = this.#allMenuRequests!;\n const previousIndex = previousMenuRequest\n ? mergedMenuRequests.indexOf(previousMenuRequest)\n : -1;\n if (previousIndex === -1) {\n if (!menuRequests.length) {\n return;\n }\n mergedMenuRequests.push(...menuRequests);\n } else {\n mergedMenuRequests.splice(\n previousIndex,\n mergedMenuRequests.length - previousIndex,\n ...menuRequests\n );\n }\n if (previousRoute && previousRoute !== currentRoute) {\n this.#memoizedMenuRequestMap!.delete(previousRoute);\n }\n await this.#routeHelper!.mergeMenus(mergedMenuRequests);\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n reCatch(error: unknown, returnNode: RenderNode) {\n return this.#routeHelper!.catch(error, returnNode);\n }\n\n #locationChangeCallbacks: LocationChangeCallback[] = [];\n\n async didPerformIncrementalRender(location: Location<NextHistoryState>) {\n const results = await Promise.all(\n this.#locationChangeCallbacks.map((callback) => callback(location))\n );\n return results.some((result) => result);\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(callback: LocationChangeCallback) {\n this.#locationChangeCallbacks.push(callback);\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderBrick | undefined,\n returnNode: RenderNode\n ) {\n if (!this.#memoized) {\n this.#memoized = new WeakMap();\n }\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n let mem = this.#memoized.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoized.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n reRender(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderBrick | undefined,\n returnNode: RenderNode\n ) {\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoized!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n const insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n const insertPortalBeforeChild =\n prevLastPortal?.element?.nextSibling ?? null;\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderBrick | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\"Cannot find render root node\");\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoized = undefined;\n this.#allMenuRequests = undefined;\n this.#memoizedMenuRequestMap = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#locationChangeCallbacks.length = 0;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(node: RenderBrick | undefined): RenderBrick | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (!current.portal) {\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.portal) {\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderBrick | undefined,\n to: RenderBrick | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n range.add(current);\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"RendererContext.js","names":["_lodash","require","_bindListeners","_history","_proxyFactories","_mediaQuery","_mount","_enums","_bindTemplateProxy","_Runtime","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_allMenuRequests","_memoizedMenuRequestMap","_locationChangeCallbacks","_unmountBricks","WeakSet","_initializeRerenderBricks","_dispatchGeneralLifeCycle","_addObserver","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec2","default","_defineProperty2","_classPrivateFieldInitSpec2","writable","value","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet2","routeHelper","setInitialMenuRequests","menuRequests","memoizeMenuRequests","route","_classPrivateFieldGet2","set","reMergeMenuRequests","routes","currentRoute","previousMenuRequest","previousRoute","get","mergedMenuRequests","previousIndex","indexOf","length","push","splice","delete","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","results","Promise","all","map","callback","some","result","performIncrementalRender","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","isEmpty","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","node","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","insertPortalBeforeChild","tag","RenderTag","PLACEHOLDER","_getNextNormalNode$el","_getNextNormalNode","_getNextPortalNode$el","_getNextPortalNode","getNextNormalNode","element","getNextPortalNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","_prevLastPortal$eleme2","nextSibling","prevSibling","current","child","sibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","ROOT","container","createPortal","return","removeBricks","getBrickRange","_classPrivateMethodGet2","_unmountBricks2","call","mountTree","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","newBricks","_initializeRerenderBricks2","dispose","list","Object","values","observer","disconnect","clear","mediaEventTarget","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle2","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","getHistory","anchor","substring","initializeScrollIntoView","conf","_addObserver2","initializeMediaChange","getReadOnlyProxy","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc2","confList","concat","_hooks$messageDispatc","hooks","messageDispatcher","channel","listenerFactory","runtimeContext","onClose","dispatchOnMount","dispatchOnUnmount","exports","bricks","unmountList","removed","remove","item","has","_brick$element","_brick$element2","observers","unbindTemplateProxy","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","includes","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","getSpecifiedNormalNode","next","BRICK","getSpecifiedPortalNode","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { Action, Location } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type {\n RenderBrick,\n RenderChildNode,\n RenderNode,\n RenderReturnNode,\n RenderRoot,\n} from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { hooks } from \"./Runtime.js\";\nimport type { RenderOutput } from \"./Renderer.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\ntype LocationChangeCallback = (\n location: Location<NextHistoryState>\n) => Promise<boolean>;\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n \"onMessage\",\n \"onMessageClose\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n routeHelper?: RouteHelper;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n catch: (\n error: unknown,\n returnNode: RenderReturnNode\n ) =>\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n };\n}\n\nexport class RendererContext {\n /**\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n public readonly scope: \"page\" | \"fragment\";\n\n public readonly unknownBricks: \"silent\" | \"throw\";\n\n #routeHelper: RouteHelper | undefined;\n\n constructor(scope: \"page\" | \"fragment\", options?: RendererContextOptions) {\n this.scope = scope;\n this.unknownBricks = options?.unknownBricks ?? \"throw\";\n this.#routeHelper = options?.routeHelper;\n }\n\n #memoizedLifeCycle: MemoizedLifeCycle<\n Required<\n Pick<\n BrickLifeCycle,\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onScrollIntoView\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMessage\"\n | \"onMessageClose\"\n >\n >\n > = {\n onBeforePageLoad: [],\n onPageLoad: [],\n onPageLeave: [],\n onBeforePageLeave: [],\n onAnchorLoad: [],\n onAnchorUnload: [],\n onMediaChange: [],\n onScrollIntoView: [],\n onMount: [],\n onUnmount: [],\n onMessage: [],\n onMessageClose: [],\n };\n #observers = new Map<RenderBrick, IntersectionObserver[]>();\n #mediaListener: EventListener | undefined;\n\n #arbitraryLifeCycle = new Map<string, Set<() => void>>();\n\n #memoized?: WeakMap<\n RenderNode,\n Map<\n string,\n {\n node?: RenderChildNode;\n last?: RenderChildNode;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n #allMenuRequests?: Promise<StaticMenuConf>[];\n #memoizedMenuRequestMap?: WeakMap<RouteConf, Promise<StaticMenuConf>>;\n\n setInitialMenuRequests(menuRequests: Promise<StaticMenuConf>[]) {\n this.#allMenuRequests = menuRequests;\n }\n\n memoizeMenuRequests(\n route: RouteConf,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n if (!this.#memoizedMenuRequestMap) {\n this.#memoizedMenuRequestMap = new WeakMap();\n }\n this.#memoizedMenuRequestMap.set(route, menuRequests[0]);\n }\n\n async reMergeMenuRequests(\n routes: RouteConf[],\n currentRoute: RouteConf | undefined,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n let previousMenuRequest: Promise<StaticMenuConf> | undefined;\n let previousRoute: RouteConf | undefined;\n for (const route of routes) {\n previousMenuRequest = this.#memoizedMenuRequestMap!.get(route);\n if (previousMenuRequest) {\n previousRoute = route;\n break;\n }\n }\n const mergedMenuRequests = this.#allMenuRequests!;\n const previousIndex = previousMenuRequest\n ? mergedMenuRequests.indexOf(previousMenuRequest)\n : -1;\n if (previousIndex === -1) {\n if (!menuRequests.length) {\n return;\n }\n mergedMenuRequests.push(...menuRequests);\n } else {\n mergedMenuRequests.splice(\n previousIndex,\n mergedMenuRequests.length - previousIndex,\n ...menuRequests\n );\n }\n if (previousRoute && previousRoute !== currentRoute) {\n this.#memoizedMenuRequestMap!.delete(previousRoute);\n }\n await this.#routeHelper!.mergeMenus(mergedMenuRequests);\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode);\n }\n\n #locationChangeCallbacks: LocationChangeCallback[] = [];\n\n async didPerformIncrementalRender(location: Location<NextHistoryState>) {\n const results = await Promise.all(\n this.#locationChangeCallbacks.map((callback) => callback(location))\n );\n return results.some((result) => result);\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(callback: LocationChangeCallback) {\n this.#locationChangeCallbacks.push(callback);\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n if (!this.#memoized) {\n this.#memoized = new WeakMap();\n }\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n let mem = this.#memoized.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoized.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n reRender(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoized!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n let insertBeforeChild: ChildNode | null;\n let insertPortalBeforeChild: ChildNode | null;\n if (prevNode?.tag === RenderTag.PLACEHOLDER) {\n insertBeforeChild = getNextNormalNode(prevNode)?.element ?? null;\n insertPortalBeforeChild = getNextPortalNode(prevNode)?.element ?? null;\n } else {\n insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n insertPortalBeforeChild = prevLastPortal?.element?.nextSibling ?? null;\n }\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderChildNode | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n // istanbul ignore next\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\n \"Cannot find render root node. This is a bug of Brick Next, please report it.\"\n );\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoized = undefined;\n this.#allMenuRequests = undefined;\n this.#memoizedMenuRequestMap = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#locationChangeCallbacks.length = 0;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(\n node: RenderChildNode | undefined\n): RenderChildNode | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, false);\n}\n\nfunction getNextNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, true);\n}\n\nfunction getSpecifiedNormalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && !current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, false);\n}\n\nfunction getNextPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, true);\n}\n\nfunction getSpecifiedPortalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderChildNode | undefined,\n to: RenderChildNode | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n range.add(current);\n }\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ exports.RenderTag = void 0;
7
7
  let RenderTag = /*#__PURE__*/function (RenderTag) {
8
8
  RenderTag[RenderTag["ROOT"] = 1] = "ROOT";
9
9
  RenderTag[RenderTag["BRICK"] = 2] = "BRICK";
10
+ RenderTag[RenderTag["PLACEHOLDER"] = 3] = "PLACEHOLDER";
10
11
  return RenderTag;
11
12
  }({});
12
13
  exports.RenderTag = RenderTag;
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","names":["RenderTag","exports"],"sources":["../../../src/internal/enums.ts"],"sourcesContent":["export enum RenderTag {\n ROOT = 1,\n BRICK = 2,\n}\n"],"mappings":";;;;;;IAAYA,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAAAC,OAAA,CAAAD,SAAA,GAAAA,SAAA"}
1
+ {"version":3,"file":"enums.js","names":["RenderTag","exports"],"sources":["../../../src/internal/enums.ts"],"sourcesContent":["export enum RenderTag {\n ROOT = 1,\n BRICK = 2,\n PLACEHOLDER = 3,\n}\n"],"mappings":";;;;;;IAAYA,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAAAC,OAAA,CAAAD,SAAA,GAAAA,SAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderBrick;\n sibling?: RenderBrick;\n return?: RenderNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n provider?: string;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n provider?: string;\n}\n"],"mappings":""}
@@ -17,47 +17,49 @@ function mountTree(root, initializedElement) {
17
17
  let current = root.child;
18
18
  const portalElements = [];
19
19
  while (current) {
20
- var _current$tplHostMetad;
21
- const tagName = current.type;
22
- if (tagName.includes("-") && !customElements.get(tagName)) {
23
- // eslint-disable-next-line no-console
24
- console.error(`Undefined custom element: ${tagName}`);
25
- }
20
+ if (current.tag === _enums.RenderTag.BRICK) {
21
+ var _current$tplHostMetad;
22
+ const tagName = current.type;
23
+ if (tagName.includes("-") && !customElements.get(tagName)) {
24
+ // eslint-disable-next-line no-console
25
+ console.error(`Undefined custom element: ${tagName}`);
26
+ }
26
27
 
27
- // istanbul ignore if
28
- if (tagName === "basic-bricks.script-brick") {
29
- // eslint-disable-next-line no-console
30
- console.warn("`basic-bricks.script-brick` is deprecated, please take caution when using it");
31
- }
32
- const element = initializedElement && current === root.child ? initializedElement : document.createElement(tagName);
33
- current.element = element;
34
- if (current.slotId) {
35
- element.setAttribute("slot", current.slotId);
36
- }
37
- if (current.iid) {
38
- element.dataset.iid = current.iid;
39
- }
40
- if ((_current$tplHostMetad = current.tplHostMetadata) !== null && _current$tplHostMetad !== void 0 && _current$tplHostMetad.tplStateStoreId) {
41
- element.dataset.tplStateStoreId = current.tplHostMetadata.tplStateStoreId;
42
- }
43
- (0, _setRealProperties.setRealProperties)(element, current.properties);
44
- (0, _bindListeners.bindListeners)(element, current.events, current.runtimeContext);
45
- if (current.tplHostMetadata) {
46
- // 先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,
47
- // 避免初始化的一次 state update 操作及其 onChange 事件。
48
- element.$$tplStateStore = (0, _utils.getTplStateStore)({
49
- tplStateStoreId: current.tplHostMetadata.tplStateStoreId,
50
- tplStateStoreMap: current.runtimeContext.tplStateStoreMap
51
- }, "mount");
52
- }
53
- (0, _bindTemplateProxy.bindTemplateProxy)(current);
54
- if (current.portal) {
55
- portalElements.push(element);
56
- } else if (current.return) {
57
- if (!current.return.childElements) {
58
- current.return.childElements = [];
28
+ // istanbul ignore if
29
+ if (tagName === "basic-bricks.script-brick") {
30
+ // eslint-disable-next-line no-console
31
+ console.warn("`basic-bricks.script-brick` is deprecated, please take caution when using it");
32
+ }
33
+ const element = initializedElement && current === root.child ? initializedElement : document.createElement(tagName);
34
+ current.element = element;
35
+ if (current.slotId) {
36
+ element.setAttribute("slot", current.slotId);
37
+ }
38
+ if (current.iid) {
39
+ element.dataset.iid = current.iid;
40
+ }
41
+ if ((_current$tplHostMetad = current.tplHostMetadata) !== null && _current$tplHostMetad !== void 0 && _current$tplHostMetad.tplStateStoreId) {
42
+ element.dataset.tplStateStoreId = current.tplHostMetadata.tplStateStoreId;
43
+ }
44
+ (0, _setRealProperties.setRealProperties)(element, current.properties);
45
+ (0, _bindListeners.bindListeners)(element, current.events, current.runtimeContext);
46
+ if (current.tplHostMetadata) {
47
+ // 先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,
48
+ // 避免初始化的一次 state update 操作及其 onChange 事件。
49
+ element.$$tplStateStore = (0, _utils.getTplStateStore)({
50
+ tplStateStoreId: current.tplHostMetadata.tplStateStoreId,
51
+ tplStateStoreMap: current.runtimeContext.tplStateStoreMap
52
+ }, "mount");
53
+ }
54
+ (0, _bindTemplateProxy.bindTemplateProxy)(current);
55
+ if (current.portal) {
56
+ portalElements.push(element);
57
+ } else if (current.return) {
58
+ if (!current.return.childElements) {
59
+ current.return.childElements = [];
60
+ }
61
+ current.return.childElements.push(element);
59
62
  }
60
- current.return.childElements.push(element);
61
63
  }
62
64
  if (current.child) {
63
65
  current = current.child;
@@ -1 +1 @@
1
- {"version":3,"file":"mount.js","names":["_bindTemplateProxy","require","_utils","_bindListeners","_setRealProperties","_enums","unmountTree","mountPoint","replaceChildren","mountTree","root","initializedElement","current","child","portalElements","_current$tplHostMetad","tagName","type","includes","customElements","get","console","error","warn","element","document","createElement","slotId","setAttribute","iid","dataset","tplHostMetadata","tplStateStoreId","setRealProperties","properties","bindListeners","events","runtimeContext","$$tplStateStore","getTplStateStore","tplStateStoreMap","bindTemplateProxy","portal","push","return","childElements","sibling","_currentReturn","currentReturn","tag","RenderTag","ROOT","_currentReturn$contai","container","append","undefined","length","createPortal"],"sources":["../../../src/internal/mount.ts"],"sourcesContent":["import { bindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\nimport { bindListeners } from \"./bindListeners.js\";\nimport { setRealProperties } from \"./compute/setRealProperties.js\";\nimport { RenderTag } from \"./enums.js\";\nimport type {\n RenderNode,\n RenderRoot,\n RuntimeBrickElement,\n} from \"./interfaces.js\";\n\nexport function unmountTree(mountPoint: HTMLElement | DocumentFragment) {\n mountPoint.replaceChildren();\n}\n\nexport function mountTree(\n root: RenderRoot,\n initializedElement?: RuntimeBrickElement\n): void {\n let current = root.child;\n const portalElements: RuntimeBrickElement[] = [];\n while (current) {\n const tagName = current.type;\n\n if (tagName.includes(\"-\") && !customElements.get(tagName)) {\n // eslint-disable-next-line no-console\n console.error(`Undefined custom element: ${tagName}`);\n }\n\n // istanbul ignore if\n if (tagName === \"basic-bricks.script-brick\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"`basic-bricks.script-brick` is deprecated, please take caution when using it\"\n );\n }\n\n const element: RuntimeBrickElement =\n initializedElement && current === root.child\n ? initializedElement\n : document.createElement(tagName);\n current.element = element;\n\n if (current.slotId) {\n element.setAttribute(\"slot\", current.slotId);\n }\n if (current.iid) {\n element.dataset.iid = current.iid;\n }\n if (current.tplHostMetadata?.tplStateStoreId) {\n element.dataset.tplStateStoreId = current.tplHostMetadata.tplStateStoreId;\n }\n setRealProperties(element, current.properties);\n bindListeners(element, current.events, current.runtimeContext);\n if (current.tplHostMetadata) {\n // 先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,\n // 避免初始化的一次 state update 操作及其 onChange 事件。\n element.$$tplStateStore = getTplStateStore(\n {\n tplStateStoreId: current.tplHostMetadata.tplStateStoreId,\n tplStateStoreMap: current.runtimeContext.tplStateStoreMap,\n },\n \"mount\"\n );\n }\n bindTemplateProxy(current);\n\n if (current.portal) {\n portalElements.push(element);\n } else if (current.return) {\n if (!current.return.childElements) {\n current.return.childElements = [];\n }\n current.return.childElements.push(element);\n }\n\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn) {\n // Append elements inside out\n if (currentReturn.childElements) {\n if (currentReturn.tag === RenderTag.ROOT) {\n currentReturn.container?.append(...currentReturn.childElements);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n currentReturn.element!.append(...currentReturn.childElements);\n }\n currentReturn.childElements = undefined;\n }\n\n if (currentReturn.tag === RenderTag.ROOT && portalElements.length > 0) {\n const portal =\n typeof currentReturn.createPortal === \"function\"\n ? currentReturn.createPortal()\n : currentReturn.createPortal;\n portal.append(...portalElements);\n }\n\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mount.js","names":["_bindTemplateProxy","require","_utils","_bindListeners","_setRealProperties","_enums","unmountTree","mountPoint","replaceChildren","mountTree","root","initializedElement","current","child","portalElements","tag","RenderTag","BRICK","_current$tplHostMetad","tagName","type","includes","customElements","get","console","error","warn","element","document","createElement","slotId","setAttribute","iid","dataset","tplHostMetadata","tplStateStoreId","setRealProperties","properties","bindListeners","events","runtimeContext","$$tplStateStore","getTplStateStore","tplStateStoreMap","bindTemplateProxy","portal","push","return","childElements","sibling","_currentReturn","currentReturn","ROOT","_currentReturn$contai","container","append","undefined","length","createPortal"],"sources":["../../../src/internal/mount.ts"],"sourcesContent":["import { bindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\nimport { bindListeners } from \"./bindListeners.js\";\nimport { setRealProperties } from \"./compute/setRealProperties.js\";\nimport { RenderTag } from \"./enums.js\";\nimport type {\n RenderReturnNode,\n RenderRoot,\n RuntimeBrickElement,\n} from \"./interfaces.js\";\n\nexport function unmountTree(mountPoint: HTMLElement | DocumentFragment) {\n mountPoint.replaceChildren();\n}\n\nexport function mountTree(\n root: RenderRoot,\n initializedElement?: RuntimeBrickElement\n): void {\n let current = root.child;\n const portalElements: RuntimeBrickElement[] = [];\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n const tagName = current.type;\n\n if (tagName.includes(\"-\") && !customElements.get(tagName)) {\n // eslint-disable-next-line no-console\n console.error(`Undefined custom element: ${tagName}`);\n }\n\n // istanbul ignore if\n if (tagName === \"basic-bricks.script-brick\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"`basic-bricks.script-brick` is deprecated, please take caution when using it\"\n );\n }\n\n const element: RuntimeBrickElement =\n initializedElement && current === root.child\n ? initializedElement\n : document.createElement(tagName);\n current.element = element;\n\n if (current.slotId) {\n element.setAttribute(\"slot\", current.slotId);\n }\n if (current.iid) {\n element.dataset.iid = current.iid;\n }\n if (current.tplHostMetadata?.tplStateStoreId) {\n element.dataset.tplStateStoreId =\n current.tplHostMetadata.tplStateStoreId;\n }\n setRealProperties(element, current.properties);\n bindListeners(element, current.events, current.runtimeContext);\n if (current.tplHostMetadata) {\n // 先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,\n // 避免初始化的一次 state update 操作及其 onChange 事件。\n element.$$tplStateStore = getTplStateStore(\n {\n tplStateStoreId: current.tplHostMetadata.tplStateStoreId,\n tplStateStoreMap: current.runtimeContext.tplStateStoreMap,\n },\n \"mount\"\n );\n }\n bindTemplateProxy(current);\n\n if (current.portal) {\n portalElements.push(element);\n } else if (current.return) {\n if (!current.return.childElements) {\n current.return.childElements = [];\n }\n current.return.childElements.push(element);\n }\n }\n\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n // Append elements inside out\n if (currentReturn.childElements) {\n if (currentReturn.tag === RenderTag.ROOT) {\n currentReturn.container?.append(...currentReturn.childElements);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n currentReturn.element!.append(...currentReturn.childElements);\n }\n currentReturn.childElements = undefined;\n }\n\n if (currentReturn.tag === RenderTag.ROOT && portalElements.length > 0) {\n const portal =\n typeof currentReturn.createPortal === \"function\"\n ? currentReturn.createPortal()\n : currentReturn.createPortal;\n portal.append(...portalElements);\n }\n\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n}\n"],"mappings":"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"}
@@ -31,7 +31,7 @@ var _CustomTemplates = require("../CustomTemplates.js");
31
31
  var _registerAppI18n = require("./registerAppI18n.js");
32
32
  var _utils = require("./CustomTemplates/utils.js");
33
33
  async function renderUseBrick(useBrick, data) {
34
- var _scopedRuntimeContext, _scopedRuntimeContext2, _output$node;
34
+ var _scopedRuntimeContext, _scopedRuntimeContext2, _output$node, _output$node2;
35
35
  const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] = (0, _Renderer.createScopedRuntimeContext)({
36
36
  ...(0, _Runtime._internalApiGetRuntimeContext)(),
37
37
  data,
@@ -59,7 +59,10 @@ async function renderUseBrick(useBrick, data) {
59
59
  }, scopedRuntimeContext, rendererContext, []);
60
60
  const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];
61
61
  await (0, _Renderer.postAsyncRender)(output, scopedRuntimeContext, scopedStores);
62
- if ((_output$node = output.node) !== null && _output$node !== void 0 && _output$node.portal) {
62
+ if (((_output$node = output.node) === null || _output$node === void 0 ? void 0 : _output$node.tag) === _enums.RenderTag.PLACEHOLDER) {
63
+ throw new Error("The root brick of useBrick cannot be an ignored control node");
64
+ }
65
+ if ((_output$node2 = output.node) !== null && _output$node2 !== void 0 && _output$node2.portal) {
63
66
  throw new Error("The root brick of useBrick cannot be a portal brick");
64
67
  }
65
68
  renderRoot.child = output.node;
@@ -1 +1 @@
1
- {"version":3,"file":"secret_internals.js","names":["_loader","require","_lodash","_Runtime","_Renderer","_RendererContext","_mount","_enums","_computeRealValue","_isStrictMode","_CustomTemplates","_registerAppI18n","_utils","renderUseBrick","useBrick","data","_scopedRuntimeContext","_scopedRuntimeContext2","_output$node","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","_internalApiGetRuntimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","createPortal","transform","strict","isStrictMode","warnAboutStrictMode","output","renderBrick","properties","scopedStores","postAsyncRender","node","portal","Error","child","tagName","type","mountUseBrick","element","portalRoot","document","querySelector","createElement","appendChild","mountTree","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","unmountUseBrick","mountResult","unmountTree","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","computeRealValue","noInject","updateStoryboard","appId","storyboardPatch","storyboard","_internalApiGetStoryboardInBootstrapData","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","registerAppI18n","updateStoryboardByRoute","newRoute","match","getKey","route","path","exact","replaceRoute","routes","key","map","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","customTemplates","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","pick","getSnippetPreviewPath","snippetId","updateStoryboardBySnippet","snippetData","_snippetData$bricks","length","context","updateSnippetPreviewSettings","exports","previewRouteIndex","findIndex","newPreviewRoute","menu","splice","getContextValue","tplStateStoreId","runtimeContext","tplStateStore","getTplStateStore","getValue","ctxStore","getAllContextValues","getAllValues","getBrickPackagesById","id","getBrickPackages","find","pkg","filePath","startsWith","getRenderId","_internalApiGetRenderId","getAddedContracts","updateStoryboardType","provider","collectContractProvider","updatedStoryboard","meta","_storyboard$routes","snippetPreviewPath","currentRoute","addedContracts","loadBricksImperatively","contractApis","resolve","forEach","api","_storyboard$meta","_","namespaceId","contracts","some","contract","push"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n RuntimeSnippet,\n ContextConf,\n} from \"@next-core/types\";\nimport { loadBricksImperatively } from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRenderId,\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n} from \"./Runtime.js\";\nimport {\n createScopedRuntimeContext,\n postAsyncRender,\n renderBrick,\n} from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type {\n DataValueOption,\n PreviewOption,\n PreviewStoryboardPatch,\n RenderRoot,\n} from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\n\nexport type { DataValueOption, RuntimeContext } from \"./interfaces.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[];\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext({\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n });\n\n scopedRuntimeContext.tplStateStoreMap ??= new Map();\n scopedRuntimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n scopedRuntimeContext,\n rendererContext,\n []\n );\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n\n await postAsyncRender(output, scopedRuntimeContext, scopedStores);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext, scopedStores };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext, scopedStores }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\n/** For v2 compatibility of `doTransform` from brick-kit. */\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nfunction getSnippetPreviewPath(snippetId: string): string {\n return `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetId}`;\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n context?: ContextConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n getSnippetPreviewPath(snippetData.snippetId),\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }],\n snippetData.context\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[],\n context?: ContextConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n context,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n\nexport function getContextValue(\n name: string,\n { tplStateStoreId }: DataValueOption\n): unknown {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getValue(name);\n }\n\n return runtimeContext.ctxStore.getValue(name);\n}\n\nexport function getAllContextValues({\n tplStateStoreId,\n}: DataValueOption): Record<string, unknown> {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getAllValues();\n }\n\n return runtimeContext.ctxStore.getAllValues();\n}\n\nexport function getBrickPackagesById(id: string) {\n return getBrickPackages().find((pkg) =>\n pkg.id ? pkg.id === id : pkg.filePath.startsWith(id)\n );\n}\n\nexport function getRenderId() {\n return _internalApiGetRenderId();\n}\n\nexport async function getAddedContracts(\n storyboardPatch: PreviewStoryboardPatch,\n {\n appId,\n updateStoryboardType,\n provider: collectContractProvider,\n }: PreviewOption\n): Promise<string[]> {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId);\n let updatedStoryboard;\n\n // 拿到更新部分的 storyboard 配置,然后扫描一遍,找到新增的 contracts\n if (updateStoryboardType === \"route\") {\n updatedStoryboard = {\n routes: [storyboardPatch as RouteConf],\n } as Storyboard;\n } else if (updateStoryboardType === \"template\") {\n updatedStoryboard = {\n meta: {\n customTemplates: [storyboardPatch as CustomTemplate],\n },\n } as Storyboard;\n } else if (updateStoryboardType === \"snippet\") {\n // snippet 是放在挂载 route 里预览,通过 previewPath 拿到当前修改 route\n const snippetPreviewPath = getSnippetPreviewPath(\n (storyboardPatch as RuntimeSnippet).snippetId\n );\n const currentRoute = storyboard?.routes?.find(\n (route) => route.path === snippetPreviewPath\n );\n\n updatedStoryboard = {\n routes: [currentRoute],\n } as Storyboard;\n }\n\n const addedContracts: string[] = [];\n\n if (updatedStoryboard && collectContractProvider) {\n await loadBricksImperatively([collectContractProvider], getBrickPackages());\n\n const provider = document.createElement(collectContractProvider) as any;\n const contractApis = await provider.resolve(updatedStoryboard);\n\n contractApis.forEach((api: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, namespaceId, name] = api.match(\n /(.*)@(.*):\\d\\.\\d\\.\\d/\n ) as string[];\n\n if (\n !storyboard?.meta?.contracts?.some(\n (contract) =>\n contract.namespaceId === namespaceId && contract.name === name\n )\n ) {\n addedContracts.push(api);\n }\n });\n }\n\n return addedContracts;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"secret_internals.js","names":["_loader","require","_lodash","_Runtime","_Renderer","_RendererContext","_mount","_enums","_computeRealValue","_isStrictMode","_CustomTemplates","_registerAppI18n","_utils","renderUseBrick","useBrick","data","_scopedRuntimeContext","_scopedRuntimeContext2","_output$node","_output$node2","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","_internalApiGetRuntimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","createPortal","transform","strict","isStrictMode","warnAboutStrictMode","output","renderBrick","properties","scopedStores","postAsyncRender","node","PLACEHOLDER","Error","portal","child","tagName","type","mountUseBrick","element","portalRoot","document","querySelector","createElement","appendChild","mountTree","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","unmountUseBrick","mountResult","unmountTree","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","computeRealValue","noInject","updateStoryboard","appId","storyboardPatch","storyboard","_internalApiGetStoryboardInBootstrapData","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","registerAppI18n","updateStoryboardByRoute","newRoute","match","getKey","route","path","exact","replaceRoute","routes","key","map","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","customTemplates","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","pick","getSnippetPreviewPath","snippetId","updateStoryboardBySnippet","snippetData","_snippetData$bricks","length","context","updateSnippetPreviewSettings","exports","previewRouteIndex","findIndex","newPreviewRoute","menu","splice","getContextValue","tplStateStoreId","runtimeContext","tplStateStore","getTplStateStore","getValue","ctxStore","getAllContextValues","getAllValues","getBrickPackagesById","id","getBrickPackages","find","pkg","filePath","startsWith","getRenderId","_internalApiGetRenderId","getAddedContracts","updateStoryboardType","provider","collectContractProvider","updatedStoryboard","meta","_storyboard$routes","snippetPreviewPath","currentRoute","addedContracts","loadBricksImperatively","contractApis","resolve","forEach","api","_storyboard$meta","_","namespaceId","contracts","some","contract","push"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n RuntimeSnippet,\n ContextConf,\n} from \"@next-core/types\";\nimport { loadBricksImperatively } from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRenderId,\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n} from \"./Runtime.js\";\nimport {\n createScopedRuntimeContext,\n postAsyncRender,\n renderBrick,\n} from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type {\n DataValueOption,\n PreviewOption,\n PreviewStoryboardPatch,\n RenderRoot,\n} from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\n\nexport type { DataValueOption, RuntimeContext } from \"./interfaces.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[];\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext({\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n });\n\n scopedRuntimeContext.tplStateStoreMap ??= new Map();\n scopedRuntimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n scopedRuntimeContext,\n rendererContext,\n []\n );\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n\n await postAsyncRender(output, scopedRuntimeContext, scopedStores);\n\n if (output.node?.tag === RenderTag.PLACEHOLDER) {\n throw new Error(\n \"The root brick of useBrick cannot be an ignored control node\"\n );\n }\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext, scopedStores };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext, scopedStores }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\n/** For v2 compatibility of `doTransform` from brick-kit. */\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nfunction getSnippetPreviewPath(snippetId: string): string {\n return `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetId}`;\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n context?: ContextConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n getSnippetPreviewPath(snippetData.snippetId),\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }],\n snippetData.context\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[],\n context?: ContextConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n context,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n\nexport function getContextValue(\n name: string,\n { tplStateStoreId }: DataValueOption\n): unknown {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getValue(name);\n }\n\n return runtimeContext.ctxStore.getValue(name);\n}\n\nexport function getAllContextValues({\n tplStateStoreId,\n}: DataValueOption): Record<string, unknown> {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getAllValues();\n }\n\n return runtimeContext.ctxStore.getAllValues();\n}\n\nexport function getBrickPackagesById(id: string) {\n return getBrickPackages().find((pkg) =>\n pkg.id ? pkg.id === id : pkg.filePath.startsWith(id)\n );\n}\n\nexport function getRenderId() {\n return _internalApiGetRenderId();\n}\n\nexport async function getAddedContracts(\n storyboardPatch: PreviewStoryboardPatch,\n {\n appId,\n updateStoryboardType,\n provider: collectContractProvider,\n }: PreviewOption\n): Promise<string[]> {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId);\n let updatedStoryboard;\n\n // 拿到更新部分的 storyboard 配置,然后扫描一遍,找到新增的 contracts\n if (updateStoryboardType === \"route\") {\n updatedStoryboard = {\n routes: [storyboardPatch as RouteConf],\n } as Storyboard;\n } else if (updateStoryboardType === \"template\") {\n updatedStoryboard = {\n meta: {\n customTemplates: [storyboardPatch as CustomTemplate],\n },\n } as Storyboard;\n } else if (updateStoryboardType === \"snippet\") {\n // snippet 是放在挂载 route 里预览,通过 previewPath 拿到当前修改 route\n const snippetPreviewPath = getSnippetPreviewPath(\n (storyboardPatch as RuntimeSnippet).snippetId\n );\n const currentRoute = storyboard?.routes?.find(\n (route) => route.path === snippetPreviewPath\n );\n\n updatedStoryboard = {\n routes: [currentRoute],\n } as Storyboard;\n }\n\n const addedContracts: string[] = [];\n\n if (updatedStoryboard && collectContractProvider) {\n await loadBricksImperatively([collectContractProvider], getBrickPackages());\n\n const provider = document.createElement(collectContractProvider) as any;\n const contractApis = await provider.resolve(updatedStoryboard);\n\n contractApis.forEach((api: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, namespaceId, name] = api.match(\n /(.*)@(.*):\\d\\.\\d\\.\\d/\n ) as string[];\n\n if (\n !storyboard?.meta?.contracts?.some(\n (contract) =>\n contract.namespaceId === namespaceId && contract.name === name\n )\n ) {\n addedContracts.push(api);\n }\n });\n }\n\n return addedContracts;\n}\n"],"mappings":"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"}