@next-core/runtime 1.55.4 → 1.55.6

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","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_RendererContext_brand","WeakSet","RendererContext","constructor","scope","options","_classPrivateMethodInitSpec2","default","_defineProperty2","_classPrivateFieldInitSpec2","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet2","routeHelper","renderId","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","_classPrivateFieldGet2","set","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","node","get","previousSibling","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","finalResult","shouldIgnoreRoutes","parentRoutes","callback","values","reverse","parentRoute","length","includes","result","slice","performIncrementalRender","slotConf","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","isEmpty","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","insertPortalBeforeChildCandidates","tag","RenderTag","PLACEHOLDER","_getNextNormalNode","_getNextPortalNode","getNextNormalNode","element","nextSibling","getNextPortalNode","_prevLastNormal$eleme","_prevLastPortal$eleme","HTMLElement","tagName","prevSibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","ROOT","container","createPortal","removeBricks","getBrickRange","_assertClassBrand2","_unmountBricks","call","mountTree","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","observer","disconnect","clear","mediaEventTarget","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","getHistory","anchor","substring","initializeScrollIntoView","conf","_addObserver","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","delete","unbindTemplateProxy","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","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 SlotConfOfRoutes,\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 MenuRequestNode,\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 prevLocation: Location<NextHistoryState>\n) => Promise<boolean | null>;\n\ninterface IncrementalRenderState {\n parentRoutes: RouteConf[];\n callback: LocationChangeCallback;\n}\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 renderId?: string;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n /** Will always resolve */\n catch: (\n error: unknown,\n returnNode: RenderReturnNode,\n isCurrentBootstrap?: boolean,\n isReCatch?: boolean\n ) => Promise<\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n }\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 public readonly renderId: string | undefined;\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 this.renderId = options?.renderId;\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\n #initialMenuRequestNode?: MenuRequestNode;\n #memoizedMenuRequestNodeMap?: WeakMap<\n RouteConf[],\n MenuRequestNode | undefined\n > = new WeakMap<RouteConf[], MenuRequestNode | undefined>();\n\n setInitialMenuRequestNode(menuRequestNode: MenuRequestNode) {\n this.#initialMenuRequestNode = menuRequestNode;\n }\n\n memoizeMenuRequestNode(\n routes: RouteConf[],\n menuRequestNode: MenuRequestNode\n ) {\n this.#memoizedMenuRequestNodeMap!.set(routes, menuRequestNode);\n }\n\n getMenuRequests() {\n const menuRequests: Promise<StaticMenuConf>[] = [];\n let current = this.#initialMenuRequestNode;\n while (current) {\n if (current.request) {\n menuRequests.push(current.request);\n }\n if (current.child) {\n current = current.child;\n } else {\n while (current && !current.sibling) {\n current = current.return;\n }\n current = current?.sibling;\n }\n }\n return menuRequests;\n }\n\n async reMergeMenuRequestNodes(\n parentMenuRequestNode: MenuRequestNode,\n routes: RouteConf[],\n menuRequestNode: MenuRequestNode = {}\n ) {\n const node = this.#memoizedMenuRequestNodeMap!.get(routes);\n this.#memoizedMenuRequestNodeMap!.set(routes, menuRequestNode);\n\n let current = parentMenuRequestNode.child;\n let previousSibling: MenuRequestNode | undefined;\n\n while (current) {\n if (current === node) {\n break;\n }\n previousSibling = current;\n current = current.sibling;\n }\n\n if (previousSibling) {\n previousSibling.sibling = menuRequestNode;\n menuRequestNode.sibling = node?.sibling;\n } else {\n parentMenuRequestNode.child = menuRequestNode;\n }\n\n await this.#routeHelper!.mergeMenus(this.getMenuRequests());\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n /**\n * Will always resolve\n */\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode, false, true);\n }\n\n #incrementalRenderStates = new Map<\n SlotConfOfRoutes,\n IncrementalRenderState\n >();\n\n async didPerformIncrementalRender(\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n ) {\n let finalResult = false;\n const shouldIgnoreRoutes: RouteConf[] = [];\n // Perform incremental rendering from inside out.\n // This allows nested incremental sub-routes.\n for (const { parentRoutes, callback } of [\n ...this.#incrementalRenderStates.values(),\n ].reverse()) {\n const parentRoute = parentRoutes[parentRoutes.length - 1];\n if (shouldIgnoreRoutes.includes(parentRoute)) {\n // Do not re-render parent routes if any of its children has performed incremental rendering.\n // In the meantime, allow sibling-routes to perform incremental rendering.\n continue;\n }\n const result = await callback(location, prevLocation);\n // When result is null, it means the incremental rendering is tried but routes missed.\n // In this case, we should continue to re-render the parent routes.\n if (result) {\n shouldIgnoreRoutes.push(...parentRoutes.slice(0, -1));\n }\n // Mark incremental rendering as performed at final if result is true or null.\n if (result !== false) {\n finalResult = true;\n }\n }\n return finalResult;\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(\n slotConf: SlotConfOfRoutes,\n parentRoutes: RouteConf[],\n callback: LocationChangeCallback\n ) {\n // Override stale incremental render callbacks\n this.#incrementalRenderStates.set(slotConf, { parentRoutes, 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 const insertPortalBeforeChildCandidates: ChildNode[] = [];\n if (prevNode?.tag === RenderTag.PLACEHOLDER) {\n insertBeforeChild = getNextNormalNode(prevNode)?.element ?? null;\n // Todo(steve): handle portal bricks from useBrick.\n const nextSibling = getNextPortalNode(prevNode)?.element;\n if (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n }\n } else {\n insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n let nextSibling = prevLastPortal?.element?.nextSibling;\n while (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n // Collect all portal bricks from useBrick, until found a normal portal\n // brick other than from useBrick.\n // Because useBrick could be removed during unmount.\n if (\n !(nextSibling instanceof HTMLElement && nextSibling.tagName === \"DIV\")\n ) {\n break;\n }\n nextSibling = nextSibling.nextSibling;\n }\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 let insertPortalBeforeChild: ChildNode | null = null;\n for (const candidate of insertPortalBeforeChildCandidates) {\n // Those candidates from useBrick could be removed during unmount.\n // So we need to check if they are still in the portal.\n if (portal.contains(candidate)) {\n insertPortalBeforeChild = candidate;\n break;\n }\n }\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.#arbitraryLifeCycle.clear();\n this.#incrementalRenderStates.clear();\n this.#memoizedMenuRequestNodeMap = undefined;\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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","ignoreList":[]}
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","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_RendererContext_brand","WeakSet","RendererContext","constructor","scope","options","_classPrivateMethodInitSpec2","default","_defineProperty2","_classPrivateFieldInitSpec2","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet2","routeHelper","renderId","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","_classPrivateFieldGet2","set","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","node","get","previousSibling","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","finalResult","shouldIgnoreRoutes","parentRoutes","callback","values","reverse","parentRoute","length","includes","result","slice","performIncrementalRender","slotConf","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","isEmpty","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","insertPortalBeforeChildCandidates","tag","RenderTag","PLACEHOLDER","_getNextNormalNode","_getNextPortalNode","getNextNormalNode","element","nextSibling","getNextPortalNode","_prevLastNormal$eleme","_prevLastPortal$eleme","HTMLElement","tagName","prevSibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","ROOT","container","createPortal","removeBricks","getBrickRange","_assertClassBrand2","_unmountBricks","call","mountTree","hasChildNodes","_returnNode$container","insertBefore","_returnNode$element","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","observer","disconnect","clear","mediaEventTarget","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","getHistory","anchor","substring","initializeScrollIntoView","conf","_addObserver","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","_brick$disposes","observers","delete","unbindTemplateProxy","$$tplStateStore","disposes","forEach","unmountEvent","mountEvent","type","process","env","NODE_ENV","threshold","IntersectionObserver","entries","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 SlotConfOfRoutes,\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 MenuRequestNode,\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 prevLocation: Location<NextHistoryState>\n) => Promise<boolean | null>;\n\ninterface IncrementalRenderState {\n parentRoutes: RouteConf[];\n callback: LocationChangeCallback;\n}\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 renderId?: string;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n /** Will always resolve */\n catch: (\n error: unknown,\n returnNode: RenderReturnNode,\n isCurrentBootstrap?: boolean,\n isReCatch?: boolean\n ) => Promise<\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n }\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 public readonly renderId: string | undefined;\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 this.renderId = options?.renderId;\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\n #initialMenuRequestNode?: MenuRequestNode;\n #memoizedMenuRequestNodeMap?: WeakMap<\n RouteConf[],\n MenuRequestNode | undefined\n > = new WeakMap<RouteConf[], MenuRequestNode | undefined>();\n\n setInitialMenuRequestNode(menuRequestNode: MenuRequestNode) {\n this.#initialMenuRequestNode = menuRequestNode;\n }\n\n memoizeMenuRequestNode(\n routes: RouteConf[],\n menuRequestNode: MenuRequestNode\n ) {\n this.#memoizedMenuRequestNodeMap!.set(routes, menuRequestNode);\n }\n\n getMenuRequests() {\n const menuRequests: Promise<StaticMenuConf>[] = [];\n let current = this.#initialMenuRequestNode;\n while (current) {\n if (current.request) {\n menuRequests.push(current.request);\n }\n if (current.child) {\n current = current.child;\n } else {\n while (current && !current.sibling) {\n current = current.return;\n }\n current = current?.sibling;\n }\n }\n return menuRequests;\n }\n\n async reMergeMenuRequestNodes(\n parentMenuRequestNode: MenuRequestNode,\n routes: RouteConf[],\n menuRequestNode: MenuRequestNode = {}\n ) {\n const node = this.#memoizedMenuRequestNodeMap!.get(routes);\n this.#memoizedMenuRequestNodeMap!.set(routes, menuRequestNode);\n\n let current = parentMenuRequestNode.child;\n let previousSibling: MenuRequestNode | undefined;\n\n while (current) {\n if (current === node) {\n break;\n }\n previousSibling = current;\n current = current.sibling;\n }\n\n if (previousSibling) {\n previousSibling.sibling = menuRequestNode;\n menuRequestNode.sibling = node?.sibling;\n } else {\n parentMenuRequestNode.child = menuRequestNode;\n }\n\n await this.#routeHelper!.mergeMenus(this.getMenuRequests());\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n /**\n * Will always resolve\n */\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode, false, true);\n }\n\n #incrementalRenderStates = new Map<\n SlotConfOfRoutes,\n IncrementalRenderState\n >();\n\n async didPerformIncrementalRender(\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n ) {\n let finalResult = false;\n const shouldIgnoreRoutes: RouteConf[] = [];\n // Perform incremental rendering from inside out.\n // This allows nested incremental sub-routes.\n for (const { parentRoutes, callback } of [\n ...this.#incrementalRenderStates.values(),\n ].reverse()) {\n const parentRoute = parentRoutes[parentRoutes.length - 1];\n if (shouldIgnoreRoutes.includes(parentRoute)) {\n // Do not re-render parent routes if any of its children has performed incremental rendering.\n // In the meantime, allow sibling-routes to perform incremental rendering.\n continue;\n }\n const result = await callback(location, prevLocation);\n // When result is null, it means the incremental rendering is tried but routes missed.\n // In this case, we should continue to re-render the parent routes.\n if (result) {\n shouldIgnoreRoutes.push(...parentRoutes.slice(0, -1));\n }\n // Mark incremental rendering as performed at final if result is true or null.\n if (result !== false) {\n finalResult = true;\n }\n }\n return finalResult;\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(\n slotConf: SlotConfOfRoutes,\n parentRoutes: RouteConf[],\n callback: LocationChangeCallback\n ) {\n // Override stale incremental render callbacks\n this.#incrementalRenderStates.set(slotConf, { parentRoutes, 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 // Also remove the element\n brick.element?.remove();\n // Dispose context listeners\n brick.disposes?.forEach((dispose) => dispose());\n delete brick.disposes;\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 const insertPortalBeforeChildCandidates: ChildNode[] = [];\n if (prevNode?.tag === RenderTag.PLACEHOLDER) {\n insertBeforeChild = getNextNormalNode(prevNode)?.element ?? null;\n // Todo(steve): handle portal bricks from useBrick.\n const nextSibling = getNextPortalNode(prevNode)?.element;\n if (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n }\n } else {\n insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n let nextSibling = prevLastPortal?.element?.nextSibling;\n while (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n // Collect all portal bricks from useBrick, until found a normal portal\n // brick other than from useBrick.\n // Because useBrick could be removed during unmount.\n if (\n !(nextSibling instanceof HTMLElement && nextSibling.tagName === \"DIV\")\n ) {\n break;\n }\n nextSibling = nextSibling.nextSibling;\n }\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 (fragment.hasChildNodes()) {\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n }\n\n if (portalFragment.hasChildNodes()) {\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 let insertPortalBeforeChild: ChildNode | null = null;\n for (const candidate of insertPortalBeforeChildCandidates) {\n // Those candidates from useBrick could be removed during unmount.\n // So we need to check if they are still in the portal.\n if (portal.contains(candidate)) {\n insertPortalBeforeChild = candidate;\n break;\n }\n }\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.#arbitraryLifeCycle.clear();\n this.#incrementalRenderStates.clear();\n this.#memoizedMenuRequestNodeMap = undefined;\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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","ignoreList":[]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.listenOnTrackingContext = listenOnTrackingContext;
7
+ exports.trackAfterInitial = trackAfterInitial;
7
8
  var _setProperties = require("./setProperties.js");
8
9
  var _utils = require("../CustomTemplates/utils.js");
9
10
  var _utils2 = require("../FormRenderer/utils.js");
@@ -16,21 +17,44 @@ function listenOnTrackingContext(brick, trackingContextList) {
16
17
  }, brick.runtimeContext);
17
18
  }
18
19
  };
20
+ brick.disposes ?? (brick.disposes = []);
19
21
  if (track.contextNames) {
20
22
  for (const contextName of track.contextNames) {
21
- brick.runtimeContext.ctxStore.onChange(contextName, listener);
23
+ brick.disposes.push(brick.runtimeContext.ctxStore.onChange(contextName, listener));
22
24
  }
23
25
  }
24
26
  if (track.stateNames) {
25
27
  const tplStateStore = (0, _utils.getTplStateStore)(brick.runtimeContext, "STATE", `: "${track.propValue}"`);
26
28
  for (const stateName of track.stateNames) {
27
- tplStateStore.onChange(stateName, listener);
29
+ brick.disposes.push(tplStateStore.onChange(stateName, listener));
28
30
  }
29
31
  }
30
32
  if (track.formStateNames) {
31
33
  const formStateStore = (0, _utils2.getFormStateStore)(brick.runtimeContext, "FORM_STATE", `: "${track.propValue}"`);
32
34
  for (const stateName of track.formStateNames) {
33
- formStateStore.onChange(stateName, listener);
35
+ brick.disposes.push(formStateStore.onChange(stateName, listener));
36
+ }
37
+ }
38
+ }
39
+ }
40
+ function trackAfterInitial(runtimeContext, trackingContextList, initialTracker) {
41
+ if (!initialTracker) {
42
+ return;
43
+ }
44
+ for (const {
45
+ contextNames,
46
+ stateNames,
47
+ propValue
48
+ } of trackingContextList) {
49
+ if (contextNames) {
50
+ for (const contextName of contextNames) {
51
+ initialTracker.disposes.push(runtimeContext.ctxStore.onChange(contextName, initialTracker.listener));
52
+ }
53
+ }
54
+ if (stateNames) {
55
+ for (const stateName of stateNames) {
56
+ const tplStateStore = (0, _utils.getTplStateStore)(runtimeContext, "STATE", `: "${propValue}"`);
57
+ initialTracker.disposes.push(tplStateStore.onChange(stateName, initialTracker.listener));
34
58
  }
35
59
  }
36
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"listenOnTrackingContext.js","names":["_setProperties","require","_utils","_utils2","listenOnTrackingContext","brick","trackingContextList","track","listener","element","setProperties","propName","propValue","runtimeContext","contextNames","contextName","ctxStore","onChange","stateNames","tplStateStore","getTplStateStore","stateName","formStateNames","formStateStore","getFormStateStore"],"sources":["../../../../src/internal/compute/listenOnTrackingContext.ts"],"sourcesContent":["import { setProperties } from \"./setProperties.js\";\nimport type { RuntimeBrick } from \"../interfaces.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\n\nexport interface TrackingContextItem {\n contextNames: string[] | Set<string> | false;\n stateNames: string[] | Set<string> | false;\n formStateNames: string[] | Set<string> | false;\n propName: string;\n propValue: unknown;\n}\n\nexport function listenOnTrackingContext(\n brick: RuntimeBrick,\n trackingContextList: TrackingContextItem[]\n): void {\n for (const track of trackingContextList) {\n const listener = (): void => {\n if (brick.element) {\n setProperties(\n brick.element,\n { [track.propName]: track.propValue },\n brick.runtimeContext\n );\n }\n };\n if (track.contextNames) {\n for (const contextName of track.contextNames) {\n brick.runtimeContext.ctxStore.onChange(contextName, listener);\n }\n }\n if (track.stateNames) {\n const tplStateStore = getTplStateStore(\n brick.runtimeContext,\n \"STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.stateNames) {\n tplStateStore.onChange(stateName, listener);\n }\n }\n if (track.formStateNames) {\n const formStateStore = getFormStateStore(\n brick.runtimeContext,\n \"FORM_STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.formStateNames) {\n formStateStore.onChange(stateName, listener);\n }\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAUO,SAASG,uBAAuBA,CACrCC,KAAmB,EACnBC,mBAA0C,EACpC;EACN,KAAK,MAAMC,KAAK,IAAID,mBAAmB,EAAE;IACvC,MAAME,QAAQ,GAAGA,CAAA,KAAY;MAC3B,IAAIH,KAAK,CAACI,OAAO,EAAE;QACjB,IAAAC,4BAAa,EACXL,KAAK,CAACI,OAAO,EACb;UAAE,CAACF,KAAK,CAACI,QAAQ,GAAGJ,KAAK,CAACK;QAAU,CAAC,EACrCP,KAAK,CAACQ,cACR,CAAC;MACH;IACF,CAAC;IACD,IAAIN,KAAK,CAACO,YAAY,EAAE;MACtB,KAAK,MAAMC,WAAW,IAAIR,KAAK,CAACO,YAAY,EAAE;QAC5CT,KAAK,CAACQ,cAAc,CAACG,QAAQ,CAACC,QAAQ,CAACF,WAAW,EAAEP,QAAQ,CAAC;MAC/D;IACF;IACA,IAAID,KAAK,CAACW,UAAU,EAAE;MACpB,MAAMC,aAAa,GAAG,IAAAC,uBAAgB,EACpCf,KAAK,CAACQ,cAAc,EACpB,OAAO,EACP,MAAMN,KAAK,CAACK,SAAS,GACvB,CAAC;MACD,KAAK,MAAMS,SAAS,IAAId,KAAK,CAACW,UAAU,EAAE;QACxCC,aAAa,CAACF,QAAQ,CAACI,SAAS,EAAEb,QAAQ,CAAC;MAC7C;IACF;IACA,IAAID,KAAK,CAACe,cAAc,EAAE;MACxB,MAAMC,cAAc,GAAG,IAAAC,yBAAiB,EACtCnB,KAAK,CAACQ,cAAc,EACpB,YAAY,EACZ,MAAMN,KAAK,CAACK,SAAS,GACvB,CAAC;MACD,KAAK,MAAMS,SAAS,IAAId,KAAK,CAACe,cAAc,EAAE;QAC5CC,cAAc,CAACN,QAAQ,CAACI,SAAS,EAAEb,QAAQ,CAAC;MAC9C;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"listenOnTrackingContext.js","names":["_setProperties","require","_utils","_utils2","listenOnTrackingContext","brick","trackingContextList","track","listener","element","setProperties","propName","propValue","runtimeContext","disposes","contextNames","contextName","push","ctxStore","onChange","stateNames","tplStateStore","getTplStateStore","stateName","formStateNames","formStateStore","getFormStateStore","trackAfterInitial","initialTracker"],"sources":["../../../../src/internal/compute/listenOnTrackingContext.ts"],"sourcesContent":["import { setProperties } from \"./setProperties.js\";\nimport type { RuntimeBrick, RuntimeContext } from \"../interfaces.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\n\nexport interface TrackingContextItem {\n contextNames: string[] | Set<string> | false;\n stateNames: string[] | Set<string> | false;\n formStateNames: string[] | Set<string> | false;\n propName: string;\n propValue: unknown;\n}\n\nexport interface InitialTracker {\n disposes: (() => void)[];\n listener: () => void;\n}\n\nexport function listenOnTrackingContext(\n brick: RuntimeBrick,\n trackingContextList: TrackingContextItem[]\n): void {\n for (const track of trackingContextList) {\n const listener = (): void => {\n if (brick.element) {\n setProperties(\n brick.element,\n { [track.propName]: track.propValue },\n brick.runtimeContext\n );\n }\n };\n brick.disposes ??= [];\n if (track.contextNames) {\n for (const contextName of track.contextNames) {\n brick.disposes.push(\n brick.runtimeContext.ctxStore.onChange(contextName, listener)\n );\n }\n }\n if (track.stateNames) {\n const tplStateStore = getTplStateStore(\n brick.runtimeContext,\n \"STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.stateNames) {\n brick.disposes.push(tplStateStore.onChange(stateName, listener));\n }\n }\n if (track.formStateNames) {\n const formStateStore = getFormStateStore(\n brick.runtimeContext,\n \"FORM_STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.formStateNames) {\n brick.disposes.push(formStateStore.onChange(stateName, listener));\n }\n }\n }\n}\n\nexport function trackAfterInitial(\n runtimeContext: RuntimeContext,\n trackingContextList: Pick<\n TrackingContextItem,\n \"contextNames\" | \"stateNames\" | \"propValue\"\n >[],\n initialTracker: InitialTracker | undefined\n) {\n if (!initialTracker) {\n return;\n }\n for (const { contextNames, stateNames, propValue } of trackingContextList) {\n if (contextNames) {\n for (const contextName of contextNames) {\n initialTracker.disposes.push(\n runtimeContext.ctxStore.onChange(contextName, initialTracker.listener)\n );\n }\n }\n if (stateNames) {\n for (const stateName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${propValue}\"`\n );\n initialTracker.disposes.push(\n tplStateStore.onChange(stateName, initialTracker.listener)\n );\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAeO,SAASG,uBAAuBA,CACrCC,KAAmB,EACnBC,mBAA0C,EACpC;EACN,KAAK,MAAMC,KAAK,IAAID,mBAAmB,EAAE;IACvC,MAAME,QAAQ,GAAGA,CAAA,KAAY;MAC3B,IAAIH,KAAK,CAACI,OAAO,EAAE;QACjB,IAAAC,4BAAa,EACXL,KAAK,CAACI,OAAO,EACb;UAAE,CAACF,KAAK,CAACI,QAAQ,GAAGJ,KAAK,CAACK;QAAU,CAAC,EACrCP,KAAK,CAACQ,cACR,CAAC;MACH;IACF,CAAC;IACDR,KAAK,CAACS,QAAQ,KAAdT,KAAK,CAACS,QAAQ,GAAK,EAAE;IACrB,IAAIP,KAAK,CAACQ,YAAY,EAAE;MACtB,KAAK,MAAMC,WAAW,IAAIT,KAAK,CAACQ,YAAY,EAAE;QAC5CV,KAAK,CAACS,QAAQ,CAACG,IAAI,CACjBZ,KAAK,CAACQ,cAAc,CAACK,QAAQ,CAACC,QAAQ,CAACH,WAAW,EAAER,QAAQ,CAC9D,CAAC;MACH;IACF;IACA,IAAID,KAAK,CAACa,UAAU,EAAE;MACpB,MAAMC,aAAa,GAAG,IAAAC,uBAAgB,EACpCjB,KAAK,CAACQ,cAAc,EACpB,OAAO,EACP,MAAMN,KAAK,CAACK,SAAS,GACvB,CAAC;MACD,KAAK,MAAMW,SAAS,IAAIhB,KAAK,CAACa,UAAU,EAAE;QACxCf,KAAK,CAACS,QAAQ,CAACG,IAAI,CAACI,aAAa,CAACF,QAAQ,CAACI,SAAS,EAAEf,QAAQ,CAAC,CAAC;MAClE;IACF;IACA,IAAID,KAAK,CAACiB,cAAc,EAAE;MACxB,MAAMC,cAAc,GAAG,IAAAC,yBAAiB,EACtCrB,KAAK,CAACQ,cAAc,EACpB,YAAY,EACZ,MAAMN,KAAK,CAACK,SAAS,GACvB,CAAC;MACD,KAAK,MAAMW,SAAS,IAAIhB,KAAK,CAACiB,cAAc,EAAE;QAC5CnB,KAAK,CAACS,QAAQ,CAACG,IAAI,CAACQ,cAAc,CAACN,QAAQ,CAACI,SAAS,EAAEf,QAAQ,CAAC,CAAC;MACnE;IACF;EACF;AACF;AAEO,SAASmB,iBAAiBA,CAC/Bd,cAA8B,EAC9BP,mBAGG,EACHsB,cAA0C,EAC1C;EACA,IAAI,CAACA,cAAc,EAAE;IACnB;EACF;EACA,KAAK,MAAM;IAAEb,YAAY;IAAEK,UAAU;IAAER;EAAU,CAAC,IAAIN,mBAAmB,EAAE;IACzE,IAAIS,YAAY,EAAE;MAChB,KAAK,MAAMC,WAAW,IAAID,YAAY,EAAE;QACtCa,cAAc,CAACd,QAAQ,CAACG,IAAI,CAC1BJ,cAAc,CAACK,QAAQ,CAACC,QAAQ,CAACH,WAAW,EAAEY,cAAc,CAACpB,QAAQ,CACvE,CAAC;MACH;IACF;IACA,IAAIY,UAAU,EAAE;MACd,KAAK,MAAMG,SAAS,IAAIH,UAAU,EAAE;QAClC,MAAMC,aAAa,GAAG,IAAAC,uBAAgB,EACpCT,cAAc,EACd,OAAO,EACP,MAAMD,SAAS,GACjB,CAAC;QACDgB,cAAc,CAACd,QAAQ,CAACG,IAAI,CAC1BI,aAAa,CAACF,QAAQ,CAACI,SAAS,EAAEK,cAAc,CAACpB,QAAQ,CAC3D,CAAC;MACH;IACF;EACF;AACF","ignoreList":[]}
@@ -208,7 +208,11 @@ class DataStore {
208
208
  }
209
209
  onChange(dataName, listener) {
210
210
  var _this$data$get2;
211
- (_this$data$get2 = this.data.get(dataName)) === null || _this$data$get2 === void 0 || _this$data$get2.eventTarget.addEventListener(this.changeEventType, listener);
211
+ const eventTarget = (_this$data$get2 = this.data.get(dataName)) === null || _this$data$get2 === void 0 ? void 0 : _this$data$get2.eventTarget;
212
+ eventTarget === null || eventTarget === void 0 || eventTarget.addEventListener(this.changeEventType, listener);
213
+ return () => {
214
+ eventTarget === null || eventTarget === void 0 || eventTarget.removeEventListener(this.changeEventType, listener);
215
+ };
212
216
  }
213
217
  async waitFor(dataNames) {
214
218
  for (const {
@@ -1 +1 @@
1
- {"version":3,"file":"DataStore.js","names":["_general","require","_storyboard","_eventTarget","_interopRequireDefault","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","_computeRealProperties","_Runtime","_realTimeDataInspect","_isStrictMode","supportContextResolveTriggerBrickLifeCycle","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","stateStoreId","batchUpdate","batchUpdateContextsNames","rendererContext","routeMap","WeakMap","constructor","getAllValues","Object","fromEntries","entries","map","name","value","getValue","_this$data$get","get","notifyRealTimeDataChange","realTimeDataInspectRoot","tplStateStoreId","callRealTimeDataInspectHooks","changeType","detail","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","callback","callbackRuntimeContext","useResolve","promise","loaded","Promise","resolve","loading","shouldDismiss","error","_this$rendererContext","renderId","_internalApiGetRenderId","load","cache","then","val","finishLoad","err","handleHttpError","callbackFactory","eventCallbackFactory","isObject","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","resolveDataStore","dataConf","isStrictMode","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","catch","pendingResult","mountAsyncData","route","_this$routeMap$get","async","has","asyncMounted","asyncCheckIf","expose","computePropertyValue","trackConditionalResolve","resolvePolicy","undefined","hasFallbackValue","hasOwnProperty","track","strictCollectMemberUsage","if","size","resolveConf","transform","options","_this$rendererContext2","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","trigger","_this$rendererContext3","registerArbitraryLifeCycle","listenerFactory","dep","batchAddListener","checkIf","computeRealValue","e","set","names","add","disposeDataInRoutes","routes","delete","contextConf","event","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n RouteConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport EventTarget from \"@ungap/event-target\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf, checkIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\nimport { _internalApiGetRenderId } from \"../Runtime.js\";\nimport {\n callRealTimeDataInspectHooks,\n realTimeDataInspectRoot,\n} from \"./realTimeDataInspect.js\";\nimport { isStrictMode } from \"../../isStrictMode.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n name: string;\n value: unknown;\n eventTarget: EventTarget;\n useResolve?: boolean;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n asyncMounted?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n private readonly stateStoreId?: string;\n private batchUpdate = false;\n private batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n private routeMap = new WeakMap<RouteConf, Set<string>>();\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext,\n stateStoreId?: string\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n this.stateStoreId = stateStoreId;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private notifyRealTimeDataChange(name: string, value: unknown) {\n if (realTimeDataInspectRoot) {\n const { tplStateStoreId } = realTimeDataInspectRoot;\n if (\n tplStateStoreId\n ? this.type === \"STATE\" && this.stateStoreId === tplStateStoreId\n : this.type === \"CTX\"\n ) {\n callRealTimeDataInspectHooks({\n changeType: \"update\",\n tplStateStoreId,\n detail: {\n name,\n value,\n },\n });\n }\n }\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.useResolve) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which is not using resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n const shouldDismiss = (error: unknown) => {\n // If render twice immediately, flow API contracts maybe cleared before\n // the second rendering, while the page load handlers of the first\n // rendering can't be cancelled, which throws `FlowApiNotFoundError`.\n // So we ignore error reporting for this case.\n let renderId: string | undefined;\n return (\n (error as Error)?.name === \"FlowApiNotFoundError\" &&\n !!(renderId = this.rendererContext?.renderId) &&\n renderId !== _internalApiGetRenderId()\n );\n };\n\n if (!promise) {\n promise = item.loading = item.load!({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n this.finishLoad(item, val);\n },\n (err) => {\n // Let users override error handling.\n if (item.useResolve && !shouldDismiss(err) && !callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n if (!shouldDismiss(err) && callback.error) {\n callbackFactory(\"error\")(err);\n }\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n private finishLoad(item: DataStoreItem, value: unknown) {\n if (!item.useResolve) {\n // This happens when a tracked conditional resolve switches from\n // resolve to fallback after an dep update triggered refresh but\n // before it's been resolved.\n return;\n }\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(\n dataConf,\n runtimeContext,\n asyncHostPropertyEntries,\n routePath\n ),\n this.type,\n isStrictMode(runtimeContext)\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n // Silent each pending contexts, since the error is handled by batched `pendingResult`\n for (const { pendingContexts } of this.pendingStack) {\n for (const p of pendingContexts.values()) {\n p.catch(() => {\n /* No-op */\n });\n }\n }\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /**\n * After mount, dispatch the change event when an async data is loaded.\n *\n * If param `route` is present, handle data defined in that route (or its descendants) only.\n */\n mountAsyncData(route?: RouteConf) {\n this.data.forEach((item) => {\n if (item.async && (!route || this.routeMap.get(route)?.has(item.name))) {\n // istanbul ignore next\n if (item.asyncMounted) {\n // eslint-disable-next-line no-console\n console.error(\n `Async data \"${item.name}\" already mounted. This is a bug of Brick Next, please report it.`\n );\n return;\n }\n item.asyncMounted = true;\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n this.finishLoad(item, value);\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let useResolve: boolean | undefined;\n let trackConditionalResolve: boolean | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" | undefined;\n if (value === undefined) {\n if (dataConf.resolve) {\n const hasFallbackValue = hasOwnProperty(dataConf, \"value\");\n // Track conditional resolve only if all matches:\n // - Track enabled\n // - Has fallback value\n // - Referencing other data in `resolve.if`\n trackConditionalResolve =\n dataConf.track &&\n hasFallbackValue &&\n hasOwnProperty(dataConf.resolve, \"if\") &&\n strictCollectMemberUsage(dataConf.resolve.if, this.type).size > 0;\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n useResolve = await asyncCheckIf(dataConf.resolve, runtimeContext);\n if (useResolve || trackConditionalResolve) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, {\n ...options,\n renderId: this.rendererContext?.renderId,\n })) as {\n value: unknown;\n }\n ).value;\n }\n if (useResolve) {\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load!();\n } else if (resolvePolicy === \"async\") {\n loading = load!();\n }\n } else if (!hasFallbackValue) {\n return false;\n }\n }\n if (\n (!useResolve || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n\n const newData: DataStoreItem = {\n name: dataConf.name,\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n useResolve,\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n trackConditionalResolve\n ? [dataConf.resolve, dataConf.value]\n : load\n ? dataConf.resolve\n : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n newData.useResolve = trackConditionalResolve\n ? checkIf(dataConf.resolve!, runtimeContext)\n : !!load;\n if (newData.useResolve) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n newData.eventTarget.addEventListener(this.changeEventType, (e) => {\n this.notifyRealTimeDataChange(dataConf.name, (e as CustomEvent).detail);\n });\n\n this.data.set(dataConf.name, newData);\n\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const names = this.routeMap.get(route);\n if (names) {\n names.add(dataConf.name);\n } else {\n this.routeMap.set(route, new Set([dataConf.name]));\n }\n }\n }\n\n return true;\n }\n\n disposeDataInRoutes(routes: RouteConf[]) {\n for (const route of routes) {\n const names = this.routeMap.get(route);\n if (names !== undefined) {\n for (const name of names) {\n this.data.delete(name);\n }\n }\n }\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DataStore.js","names":["_general","require","_storyboard","_eventTarget","_interopRequireDefault","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","_computeRealProperties","_Runtime","_realTimeDataInspect","_isStrictMode","supportContextResolveTriggerBrickLifeCycle","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","stateStoreId","batchUpdate","batchUpdateContextsNames","rendererContext","routeMap","WeakMap","constructor","getAllValues","Object","fromEntries","entries","map","name","value","getValue","_this$data$get","get","notifyRealTimeDataChange","realTimeDataInspectRoot","tplStateStoreId","callRealTimeDataInspectHooks","changeType","detail","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","callback","callbackRuntimeContext","useResolve","promise","loaded","Promise","resolve","loading","shouldDismiss","error","_this$rendererContext","renderId","_internalApiGetRenderId","load","cache","then","val","finishLoad","err","handleHttpError","callbackFactory","eventCallbackFactory","isObject","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","resolveDataStore","dataConf","isStrictMode","onChange","dataName","listener","_this$data$get2","addEventListener","removeEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","catch","pendingResult","mountAsyncData","route","_this$routeMap$get","async","has","asyncMounted","asyncCheckIf","expose","computePropertyValue","trackConditionalResolve","resolvePolicy","undefined","hasFallbackValue","hasOwnProperty","track","strictCollectMemberUsage","if","size","resolveConf","transform","options","_this$rendererContext2","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","trigger","_this$rendererContext3","registerArbitraryLifeCycle","listenerFactory","dep","batchAddListener","checkIf","computeRealValue","e","set","names","add","disposeDataInRoutes","routes","delete","contextConf","event","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n RouteConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport EventTarget from \"@ungap/event-target\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf, checkIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\nimport { _internalApiGetRenderId } from \"../Runtime.js\";\nimport {\n callRealTimeDataInspectHooks,\n realTimeDataInspectRoot,\n} from \"./realTimeDataInspect.js\";\nimport { isStrictMode } from \"../../isStrictMode.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n name: string;\n value: unknown;\n eventTarget: EventTarget;\n useResolve?: boolean;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n asyncMounted?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n private readonly stateStoreId?: string;\n private batchUpdate = false;\n private batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n private routeMap = new WeakMap<RouteConf, Set<string>>();\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext,\n stateStoreId?: string\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n this.stateStoreId = stateStoreId;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private notifyRealTimeDataChange(name: string, value: unknown) {\n if (realTimeDataInspectRoot) {\n const { tplStateStoreId } = realTimeDataInspectRoot;\n if (\n tplStateStoreId\n ? this.type === \"STATE\" && this.stateStoreId === tplStateStoreId\n : this.type === \"CTX\"\n ) {\n callRealTimeDataInspectHooks({\n changeType: \"update\",\n tplStateStoreId,\n detail: {\n name,\n value,\n },\n });\n }\n }\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.useResolve) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which is not using resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n const shouldDismiss = (error: unknown) => {\n // If render twice immediately, flow API contracts maybe cleared before\n // the second rendering, while the page load handlers of the first\n // rendering can't be cancelled, which throws `FlowApiNotFoundError`.\n // So we ignore error reporting for this case.\n let renderId: string | undefined;\n return (\n (error as Error)?.name === \"FlowApiNotFoundError\" &&\n !!(renderId = this.rendererContext?.renderId) &&\n renderId !== _internalApiGetRenderId()\n );\n };\n\n if (!promise) {\n promise = item.loading = item.load!({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n this.finishLoad(item, val);\n },\n (err) => {\n // Let users override error handling.\n if (item.useResolve && !shouldDismiss(err) && !callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n if (!shouldDismiss(err) && callback.error) {\n callbackFactory(\"error\")(err);\n }\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n private finishLoad(item: DataStoreItem, value: unknown) {\n if (!item.useResolve) {\n // This happens when a tracked conditional resolve switches from\n // resolve to fallback after an dep update triggered refresh but\n // before it's been resolved.\n return;\n }\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(\n dataConf,\n runtimeContext,\n asyncHostPropertyEntries,\n routePath\n ),\n this.type,\n isStrictMode(runtimeContext)\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): () => void {\n const eventTarget = this.data.get(dataName)?.eventTarget;\n eventTarget?.addEventListener(this.changeEventType, listener);\n return () => {\n eventTarget?.removeEventListener(this.changeEventType, listener);\n };\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n // Silent each pending contexts, since the error is handled by batched `pendingResult`\n for (const { pendingContexts } of this.pendingStack) {\n for (const p of pendingContexts.values()) {\n p.catch(() => {\n /* No-op */\n });\n }\n }\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /**\n * After mount, dispatch the change event when an async data is loaded.\n *\n * If param `route` is present, handle data defined in that route (or its descendants) only.\n */\n mountAsyncData(route?: RouteConf) {\n this.data.forEach((item) => {\n if (item.async && (!route || this.routeMap.get(route)?.has(item.name))) {\n // istanbul ignore next\n if (item.asyncMounted) {\n // eslint-disable-next-line no-console\n console.error(\n `Async data \"${item.name}\" already mounted. This is a bug of Brick Next, please report it.`\n );\n return;\n }\n item.asyncMounted = true;\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n this.finishLoad(item, value);\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let useResolve: boolean | undefined;\n let trackConditionalResolve: boolean | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" | undefined;\n if (value === undefined) {\n if (dataConf.resolve) {\n const hasFallbackValue = hasOwnProperty(dataConf, \"value\");\n // Track conditional resolve only if all matches:\n // - Track enabled\n // - Has fallback value\n // - Referencing other data in `resolve.if`\n trackConditionalResolve =\n dataConf.track &&\n hasFallbackValue &&\n hasOwnProperty(dataConf.resolve, \"if\") &&\n strictCollectMemberUsage(dataConf.resolve.if, this.type).size > 0;\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n useResolve = await asyncCheckIf(dataConf.resolve, runtimeContext);\n if (useResolve || trackConditionalResolve) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, {\n ...options,\n renderId: this.rendererContext?.renderId,\n })) as {\n value: unknown;\n }\n ).value;\n }\n if (useResolve) {\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load!();\n } else if (resolvePolicy === \"async\") {\n loading = load!();\n }\n } else if (!hasFallbackValue) {\n return false;\n }\n }\n if (\n (!useResolve || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n\n const newData: DataStoreItem = {\n name: dataConf.name,\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n useResolve,\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n trackConditionalResolve\n ? [dataConf.resolve, dataConf.value]\n : load\n ? dataConf.resolve\n : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n newData.useResolve = trackConditionalResolve\n ? checkIf(dataConf.resolve!, runtimeContext)\n : !!load;\n if (newData.useResolve) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n newData.eventTarget.addEventListener(this.changeEventType, (e) => {\n this.notifyRealTimeDataChange(dataConf.name, (e as CustomEvent).detail);\n });\n\n this.data.set(dataConf.name, newData);\n\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const names = this.routeMap.get(route);\n if (names) {\n names.add(dataConf.name);\n } else {\n this.routeMap.set(route, new Set([dataConf.name]));\n }\n }\n }\n\n return true;\n }\n\n disposeDataInRoutes(routes: RouteConf[]) {\n for (const route of routes) {\n const names = this.routeMap.get(route);\n if (names !== undefined) {\n for (const name of names) {\n this.data.delete(name);\n }\n }\n }\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -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 Storyboard,\n StaticMenuConf,\n UseProviderResolveConf,\n MicroApp,\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 forEachSize?: 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 routeId?: 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 collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n\nexport interface DebugDataValue {\n resolve?: UseProviderResolveConf;\n value?: unknown;\n}\n\nexport interface RuntimeDataVale\n extends Pick<LegacyCompatibleRuntimeContext, \"match\" | \"sys\" | \"query\"> {\n location: {\n href: string;\n origin: string;\n hostname: string;\n host: string;\n };\n app?: MicroApp;\n}\n\nexport interface RuntimeDataValueOption {\n routeId?: string;\n}\n"],"mappings":"","ignoreList":[]}
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 Storyboard,\n StaticMenuConf,\n UseProviderResolveConf,\n MicroApp,\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 forEachSize?: 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 disposes?: (() => void)[];\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 routeId?: 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 collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n\nexport interface DebugDataValue {\n resolve?: UseProviderResolveConf;\n value?: unknown;\n}\n\nexport interface RuntimeDataVale\n extends Pick<LegacyCompatibleRuntimeContext, \"match\" | \"sys\" | \"query\"> {\n location: {\n href: string;\n origin: string;\n hostname: string;\n host: string;\n };\n app?: MicroApp;\n}\n\nexport interface RuntimeDataValueOption {\n routeId?: string;\n}\n"],"mappings":"","ignoreList":[]}