@next-core/runtime 1.58.2 → 1.58.3

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.
Files changed (55) hide show
  1. package/dist/cjs/CustomTemplates.js +11 -7
  2. package/dist/cjs/CustomTemplates.js.map +1 -1
  3. package/dist/cjs/ModalStack.js +2 -1
  4. package/dist/cjs/ModalStack.js.map +1 -1
  5. package/dist/cjs/StoryboardFunctionRegistry.js +2 -1
  6. package/dist/cjs/StoryboardFunctionRegistry.js.map +1 -1
  7. package/dist/cjs/createRoot.js +4 -4
  8. package/dist/cjs/createRoot.js.map +1 -1
  9. package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js +5 -4
  10. package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  11. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +7 -4
  12. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  13. package/dist/cjs/internal/CustomTemplates/replaceSlotWithSlottedBricks.js +5 -4
  14. package/dist/cjs/internal/CustomTemplates/replaceSlotWithSlottedBricks.js.map +1 -1
  15. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +21 -18
  16. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  17. package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js +7 -4
  18. package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
  19. package/dist/cjs/internal/CustomTemplates/utils.js +3 -3
  20. package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
  21. package/dist/cjs/internal/ErrorNode.js +2 -1
  22. package/dist/cjs/internal/ErrorNode.js.map +1 -1
  23. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +3 -3
  24. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  25. package/dist/cjs/internal/FormRenderer/utils.js +2 -2
  26. package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
  27. package/dist/cjs/internal/Renderer.js +18 -13
  28. package/dist/cjs/internal/Renderer.js.map +1 -1
  29. package/dist/cjs/internal/RendererContext.js +10 -8
  30. package/dist/cjs/internal/RendererContext.js.map +1 -1
  31. package/dist/cjs/internal/Runtime.js +15 -16
  32. package/dist/cjs/internal/Runtime.js.map +1 -1
  33. package/dist/cjs/internal/bindListeners.js +3 -2
  34. package/dist/cjs/internal/bindListeners.js.map +1 -1
  35. package/dist/cjs/internal/compute/evaluate.js +4 -4
  36. package/dist/cjs/internal/compute/evaluate.js.map +1 -1
  37. package/dist/cjs/internal/compute/getStorageItem.js +2 -1
  38. package/dist/cjs/internal/compute/getStorageItem.js.map +1 -1
  39. package/dist/cjs/internal/compute/listenOnTrackingContext.js +2 -1
  40. package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
  41. package/dist/cjs/internal/data/resolveDataStore.js +4 -2
  42. package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
  43. package/dist/cjs/internal/matchStoryboard.js +2 -2
  44. package/dist/cjs/internal/matchStoryboard.js.map +1 -1
  45. package/dist/cjs/internal/poll.js +3 -3
  46. package/dist/cjs/internal/poll.js.map +1 -1
  47. package/dist/cjs/internal/secret_internals.js +7 -6
  48. package/dist/cjs/internal/secret_internals.js.map +1 -1
  49. package/dist/cjs/internal/setupRootRuntimeContext.js +3 -2
  50. package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
  51. package/dist/cjs/setWatermark.js +4 -4
  52. package/dist/cjs/setWatermark.js.map +1 -1
  53. package/dist/cjs/themeAndMode.js +2 -1
  54. package/dist/cjs/themeAndMode.js.map +1 -1
  55. package/package.json +9 -9
@@ -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","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>;\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 /**\n * Will always resolve when the routing is not the current bootstrap.\n * Otherwise, will throw an error when not bailout.\n *\n * @returns undefined when bailout, or failed output otherwise\n */\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 when the routing is not the current bootstrap.\n * Otherwise, will throw an error when not bailout.\n *\n * @returns undefined when bailout, or failed output otherwise\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 true, it means the incremental rendering is performed.\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":[]}
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","_options$unknownBrick","_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$el","_getNextNormalNode","_getNextPortalNode","getNextNormalNode","element","nextSibling","getNextPortalNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_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","_conf$threshold","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>;\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 /**\n * Will always resolve when the routing is not the current bootstrap.\n * Otherwise, will throw an error when not bailout.\n *\n * @returns undefined when bailout, or failed output otherwise\n */\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 when the routing is not the current bootstrap.\n * Otherwise, will throw an error when not bailout.\n *\n * @returns undefined when bailout, or failed output otherwise\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 true, it means the incremental rendering is performed.\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":[]}
@@ -105,10 +105,10 @@ class Runtime {
105
105
  dialog
106
106
  } = _internalApiGetPresetBricks();
107
107
  if (notification !== false) {
108
- (0, _Notification.loadNotificationService)(notification ?? "basic.show-notification", this.loadBricks);
108
+ (0, _Notification.loadNotificationService)(notification !== null && notification !== void 0 ? notification : "basic.show-notification", this.loadBricks);
109
109
  }
110
110
  if (dialog !== false) {
111
- (0, _Dialog.loadDialogService)(dialog ?? "basic.show-dialog", this.loadBricks);
111
+ (0, _Dialog.loadDialogService)(dialog !== null && dialog !== void 0 ? dialog : "basic.show-dialog", this.loadBricks);
112
112
  }
113
113
  (0, _customizeColorTheme.customizeColorTheme)((_data$settings = data.settings) === null || _data$settings === void 0 || (_data$settings = _data$settings.misc) === null || _data$settings === void 0 ? void 0 : _data$settings.theme);
114
114
  }
@@ -124,8 +124,8 @@ class Runtime {
124
124
  await router.bootstrap();
125
125
  }
126
126
  getRecentApps() {
127
- var _router;
128
- return ((_router = router) === null || _router === void 0 ? void 0 : _router.getRecentApps()) ?? {};
127
+ var _router$getRecentApps, _router;
128
+ return (_router$getRecentApps = (_router = router) === null || _router === void 0 ? void 0 : _router.getRecentApps()) !== null && _router$getRecentApps !== void 0 ? _router$getRecentApps : {};
129
129
  }
130
130
  getCurrentApp() {
131
131
  var _router2;
@@ -165,12 +165,12 @@ class Runtime {
165
165
  };
166
166
  }
167
167
  getDesktops() {
168
- var _bootstrapData5;
169
- return ((_bootstrapData5 = bootstrapData) === null || _bootstrapData5 === void 0 ? void 0 : _bootstrapData5.desktops) ?? [];
168
+ var _bootstrapData$deskto, _bootstrapData5;
169
+ return (_bootstrapData$deskto = (_bootstrapData5 = bootstrapData) === null || _bootstrapData5 === void 0 ? void 0 : _bootstrapData5.desktops) !== null && _bootstrapData$deskto !== void 0 ? _bootstrapData$deskto : [];
170
170
  }
171
171
  getLaunchpadSiteMap() {
172
- var _bootstrapData6;
173
- return ((_bootstrapData6 = bootstrapData) === null || _bootstrapData6 === void 0 ? void 0 : _bootstrapData6.siteSort) ?? [];
172
+ var _bootstrapData$siteSo, _bootstrapData6;
173
+ return (_bootstrapData$siteSo = (_bootstrapData6 = bootstrapData) === null || _bootstrapData6 === void 0 ? void 0 : _bootstrapData6.siteSort) !== null && _bootstrapData$siteSo !== void 0 ? _bootstrapData$siteSo : [];
174
174
  }
175
175
  toggleLaunchpadEffect(open) {
176
176
  document.body.classList.toggle("launchpad-open", open);
@@ -212,23 +212,22 @@ function processPublicDepsPackages(brickPackages, pubDeps) {
212
212
  return Array.from(bricksMap.values());
213
213
  }
214
214
  function getBrickPackages() {
215
- var _bootstrapData7;
216
- return (
217
- // Not necessary to process brick packages multiple times.
218
- processedBrickPackages ?? (processedBrickPackages = processPublicDepsPackages(((_bootstrapData7 = bootstrapData) === null || _bootstrapData7 === void 0 ? void 0 : _bootstrapData7.brickPackages) ?? _injected.injectedBrickPackages ?? window.STANDALONE_BRICK_PACKAGES ?? [], window.PUBLIC_DEPS))
215
+ var _processedBrickPackag, _ref, _ref2, _bootstrapData$brickP, _bootstrapData7;
216
+ return (// Not necessary to process brick packages multiple times.
217
+ (_processedBrickPackag = processedBrickPackages) !== null && _processedBrickPackag !== void 0 ? _processedBrickPackag : processedBrickPackages = processPublicDepsPackages((_ref = (_ref2 = (_bootstrapData$brickP = (_bootstrapData7 = bootstrapData) === null || _bootstrapData7 === void 0 ? void 0 : _bootstrapData7.brickPackages) !== null && _bootstrapData$brickP !== void 0 ? _bootstrapData$brickP : _injected.injectedBrickPackages) !== null && _ref2 !== void 0 ? _ref2 : window.STANDALONE_BRICK_PACKAGES) !== null && _ref !== void 0 ? _ref : [], window.PUBLIC_DEPS)
219
218
  );
220
219
  }
221
220
  function _internalApiGetPresetBricks() {
222
- var _bootstrapData8;
223
- return ((_bootstrapData8 = bootstrapData) === null || _bootstrapData8 === void 0 || (_bootstrapData8 = _bootstrapData8.settings) === null || _bootstrapData8 === void 0 ? void 0 : _bootstrapData8.presetBricks) ?? {};
221
+ var _bootstrapData$settin, _bootstrapData8;
222
+ return (_bootstrapData$settin = (_bootstrapData8 = bootstrapData) === null || _bootstrapData8 === void 0 || (_bootstrapData8 = _bootstrapData8.settings) === null || _bootstrapData8 === void 0 ? void 0 : _bootstrapData8.presetBricks) !== null && _bootstrapData$settin !== void 0 ? _bootstrapData$settin : {};
224
223
  }
225
224
  function _internalApiGetRenderId() {
226
225
  var _router7;
227
226
  return (_router7 = router) === null || _router7 === void 0 ? void 0 : _router7.getRenderId();
228
227
  }
229
228
  function _internalApiMatchStoryboard(pathname) {
230
- var _bootstrapData9;
231
- return (0, _matchStoryboard.matchStoryboard)(((_bootstrapData9 = bootstrapData) === null || _bootstrapData9 === void 0 ? void 0 : _bootstrapData9.storyboards) ?? [], pathname);
229
+ var _bootstrapData$storyb, _bootstrapData9;
230
+ return (0, _matchStoryboard.matchStoryboard)((_bootstrapData$storyb = (_bootstrapData9 = bootstrapData) === null || _bootstrapData9 === void 0 ? void 0 : _bootstrapData9.storyboards) !== null && _bootstrapData$storyb !== void 0 ? _bootstrapData$storyb : [], pathname);
232
231
  }
233
232
  function _internalApiGetRuntimeContext() {
234
233
  var _router8;
@@ -1 +1 @@
1
- {"version":3,"file":"Runtime.js","names":["_i18n","require","_loader","_general","_moment","_interopRequireDefault","_history","_matchStoryboard","_Router","_i18n2","_Notification","_Dialog","_injected","_hasInstalledApp","_devtools","_getV2RuntimeFromDll","_customizeColorTheme","runtime","bootstrapData","router","processedBrickPackages","hooks","exports","createRuntime","options","Error","listenDevtoolsEagerly","initializeI18n","NS","locales","moment","locale","i18n","language","on","createHistory","Runtime","getRuntimeV3","getRuntimeV2Factory","v2Kit","getV2RuntimeFromDll","getRuntimeV2","Proxy","getRuntime","get","args","key","Reflect","initialized","bootstrapped","version","initialize","data","_data$settings","normalizeBootstrapData","notification","dialog","_internalApiGetPresetBricks","loadNotificationService","loadBricks","loadDialogService","customizeColorTheme","settings","misc","theme","bootstrap","Router","storyboards","getRecentApps","_router","getCurrentApp","_router2","currentApp","hasInstalledApp","appId","matchVersion","getFeatureFlags","_bootstrapData","_router3","featureFlags","config","getMiscSettings","_bootstrapData2","_router4","getBrandSettings","_bootstrapData3","base_title","brand","getLaunchpadSettings","_bootstrapData4","columns","rows","launchpad","getDesktops","_bootstrapData5","desktops","getLaunchpadSiteMap","_bootstrapData6","siteSort","toggleLaunchpadEffect","open","document","body","classList","toggle","applyPageTitle","pageTitle","_router5","baseTitle","title","localeTitle","getNavConfig","_router6","bricks","loadBricksImperatively","getBrickPackages","isObject","deepFreeze","brickPackages","processPublicDepsPackages","pubDeps","length","bricksMap","Map","forEach","pkg","pkgName","filePath","split","has","set","Array","from","values","_bootstrapData7","injectedBrickPackages","window","STANDALONE_BRICK_PACKAGES","PUBLIC_DEPS","_bootstrapData8","presetBricks","_internalApiGetRenderId","_router7","getRenderId","_internalApiMatchStoryboard","pathname","_bootstrapData9","matchStoryboard","_internalApiGetRuntimeContext","_router8","getRuntimeContext","_internalApiGetStoryboardInBootstrapData","_bootstrapData10","find","storyboard","app","id","_internalApiGetAppInBootstrapData","_internalApiGetStoryb","_test_only_setBootstrapData","process","env","NODE_ENV"],"sources":["../../../src/internal/Runtime.ts"],"sourcesContent":["import type {\n RuntimeStoryboard,\n BootstrapSettings,\n FeatureFlags,\n BootstrapData,\n Contract,\n Storyboard,\n BrickConf,\n RouteConf,\n ResolveConf,\n BrickPackage,\n} from \"@next-core/types\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { loadBricksImperatively } from \"@next-core/loader\";\nimport { deepFreeze, isObject } from \"@next-core/utils/general\";\nimport type { PermissionApi_validatePermissions } from \"@next-api-sdk/micro-app-sdk\";\nimport moment from \"moment\";\nimport \"moment/locale/zh-cn.js\";\nimport { createHistory } from \"../history.js\";\nimport { matchStoryboard } from \"./matchStoryboard.js\";\nimport { Router } from \"./Router.js\";\nimport { NS, locales } from \"./i18n.js\";\nimport { loadNotificationService } from \"../Notification.js\";\nimport { loadDialogService } from \"../Dialog.js\";\nimport { injectedBrickPackages } from \"./injected.js\";\nimport { type AppForCheck, hasInstalledApp } from \"./hasInstalledApp.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\nimport { listenDevtoolsEagerly } from \"./devtools.js\";\nimport { getV2RuntimeFromDll } from \"../getV2RuntimeFromDll.js\";\nimport { ThemeSettings, customizeColorTheme } from \"./customizeColorTheme.js\";\n\nlet runtime: Runtime;\n\n// Allow inject bootstrap data in a runtime other than Brick Next.\nlet bootstrapData: BootstrapData | undefined;\nlet router: Router | undefined;\nlet processedBrickPackages: BrickPackage[] | undefined;\n\nexport interface RuntimeOptions {\n hooks?: RuntimeHooks;\n}\n\nexport interface ImagesFactory {\n get(name: string): string;\n}\n\nexport interface PageViewInfo {\n status: \"ok\" | \"failed\" | \"redirected\" | \"not-found\";\n path?: string;\n pageTitle?: string;\n}\n\nexport interface RuntimeHooks {\n auth?: {\n getAuth(): object;\n isLoggedIn(): boolean;\n authenticate?(...args: unknown[]): unknown;\n logout?(...args: unknown[]): unknown;\n };\n fulfilStoryboard?: (storyboard: RuntimeStoryboard) => Promise<void>;\n validatePermissions?: typeof PermissionApi_validatePermissions;\n checkPermissions?: {\n checkPermissions(...actions: string[]): boolean;\n preCheckPermissions(storyboard: Storyboard): Promise<void> | undefined;\n preCheckPermissionsForBrickOrRoute(\n container: BrickConf | RouteConf,\n asyncComputeRealValue: (value: unknown) => Promise<unknown>\n ): Promise<void> | undefined;\n };\n checkInstalledApps?: {\n preCheckInstalledApps(\n storyboard: Storyboard,\n hasAppInBootstrap: (appId: string) => boolean\n ): void;\n waitForCheckingApps(appIds: string[]): Promise<void>;\n getCheckedApp(appId: string): AppForCheck | undefined;\n };\n flowApi?: {\n FLOW_API_PROVIDER: string;\n registerFlowApiProvider(): void;\n isFlowApiProvider(provider: string): boolean;\n getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string,\n stream?: boolean\n ): Promise<unknown[]>;\n collectContract(contracts: Contract[] | undefined): void;\n collectWidgetContract(contracts: Contract[] | undefined): void;\n clearCollectWidgetContract(): void;\n };\n menu?: {\n getMenuById(menuId: string): unknown;\n fetchMenuById(\n menuId: string,\n runtimeContext: RuntimeContext,\n runtimeHelpers: RuntimeHooksMenuHelpers\n ): Promise<unknown>;\n };\n images?: {\n imagesFactory(\n appId: string,\n isBuildPush?: boolean,\n version?: string\n ): ImagesFactory;\n widgetImagesFactory(\n widgetId: string,\n widgetVersion?: string\n ): ImagesFactory;\n };\n messageDispatcher?: {\n subscribe(...args: unknown[]): Promise<unknown>;\n unsubscribe(...args: unknown[]): Promise<unknown>;\n onMessage(channel: string, listener: (data: unknown) => void): () => void;\n onClose(listener: () => void): () => void;\n reset(): void;\n };\n pageView?: {\n create(): (info: PageViewInfo) => void;\n };\n}\n\nexport interface RuntimeHooksMenuHelpers {\n getStoryboardByAppId(appId: string): Storyboard | undefined;\n resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext\n ): Promise<unknown>;\n asyncComputeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n options?: { ignoreSymbols?: boolean; noInject?: boolean }\n ): Promise<unknown>;\n}\n\nexport let hooks: RuntimeHooks | undefined;\n\nexport function createRuntime(options?: RuntimeOptions) {\n if (runtime) {\n throw new Error(\"Cannot create multiple runtimes\");\n }\n listenDevtoolsEagerly();\n hooks = options?.hooks;\n initializeI18n(NS, locales);\n moment.locale(i18n.language);\n i18n.on(\"languageChanged\", () => {\n moment.locale(i18n.language);\n });\n createHistory();\n runtime = new Runtime();\n return runtime;\n}\n\nfunction getRuntimeV3() {\n return runtime;\n}\n\n// istanbul ignore next\nfunction getRuntimeV2Factory() {\n const v2Kit = getV2RuntimeFromDll();\n if (v2Kit) {\n return function getRuntimeV2() {\n return new Proxy(v2Kit.getRuntime(), {\n get(...args) {\n const key = args[1];\n switch (key) {\n case \"getCurrentApp\":\n case \"getRecentApps\":\n case \"hasInstalledApp\":\n case \"getDesktops\":\n case \"getLaunchpadSettings\":\n case \"getLaunchpadSiteMap\":\n case \"toggleLaunchpadEffect\":\n case \"applyPageTitle\":\n case \"getNavConfig\":\n case \"getFeatureFlags\":\n case \"getMiscSettings\":\n case \"getBrandSettings\":\n return Reflect.get(...args);\n }\n },\n }) as unknown as Runtime;\n };\n }\n}\n\n// istanbul ignore next\nexport const getRuntime = getRuntimeV2Factory() || getRuntimeV3;\n\nexport class Runtime {\n #initialized = false;\n #bootstrapped = false;\n\n readonly version: number | undefined = 3;\n\n initialize(data: BootstrapData) {\n if (this.#initialized) {\n throw new Error(\"The runtime cannot be initialized more than once\");\n }\n this.#initialized = true;\n normalizeBootstrapData(data);\n bootstrapData = data;\n const { notification, dialog } = _internalApiGetPresetBricks();\n if (notification !== false) {\n loadNotificationService(\n notification ?? \"basic.show-notification\",\n this.loadBricks\n );\n }\n if (dialog !== false) {\n loadDialogService(dialog ?? \"basic.show-dialog\", this.loadBricks);\n }\n customizeColorTheme(data.settings?.misc?.theme as ThemeSettings);\n }\n\n async bootstrap(data?: BootstrapData) {\n if (data) {\n this.initialize(data);\n }\n if (this.#bootstrapped) {\n throw new Error(\"The runtime cannot be bootstrapped more than once\");\n }\n this.#bootstrapped = true;\n router = new Router(bootstrapData!.storyboards!);\n await router.bootstrap();\n }\n\n getRecentApps() {\n return router?.getRecentApps() ?? {};\n }\n\n getCurrentApp() {\n return router?.getRecentApps().currentApp;\n }\n\n hasInstalledApp(appId: string, matchVersion?: string): boolean {\n return hasInstalledApp(appId, matchVersion);\n }\n\n getFeatureFlags(): FeatureFlags {\n return {\n ...bootstrapData?.settings?.featureFlags,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.featureFlags,\n \"migrate-to-brick-next-v3\": true,\n };\n }\n\n getMiscSettings() {\n return {\n ...bootstrapData?.settings?.misc,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.misc,\n };\n }\n\n getBrandSettings(): Record<string, string> {\n return {\n base_title: \"DevOps 管理专家\",\n ...(bootstrapData?.settings?.brand as Record<string, string>),\n };\n }\n\n getLaunchpadSettings() {\n return {\n columns: 7,\n rows: 4,\n ...bootstrapData?.settings?.launchpad,\n };\n }\n\n getDesktops(): unknown[] {\n return bootstrapData?.desktops ?? [];\n }\n\n getLaunchpadSiteMap(): unknown[] {\n return bootstrapData?.siteSort ?? [];\n }\n\n toggleLaunchpadEffect(open: boolean): void {\n document.body.classList.toggle(\"launchpad-open\", open);\n }\n\n applyPageTitle(pageTitle: string): void {\n const baseTitle = this.getBrandSettings().base_title;\n\n document.title =\n (router?.getRecentApps().currentApp?.localeTitle as string) ||\n (pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle);\n }\n\n getNavConfig() {\n return router?.getNavConfig();\n }\n\n loadBricks(bricks: string[] | Set<string>) {\n return loadBricksImperatively(bricks, getBrickPackages());\n }\n}\n\nfunction normalizeBootstrapData(data: BootstrapData) {\n if (isObject(data.settings)) {\n deepFreeze(data.settings);\n }\n if (data.brickPackages) {\n deepFreeze(data.brickPackages);\n }\n}\n\nfunction processPublicDepsPackages(\n brickPackages: BrickPackage[],\n pubDeps: BrickPackage[] | undefined\n): BrickPackage[] {\n if (!pubDeps?.length) return brickPackages;\n\n const bricksMap = new Map();\n\n // bootstrapData 数据和 pubDeps 中可能同时存在同一个包名,需要过滤去重, 以 pubDeps 中的包为准\n [...pubDeps, ...brickPackages].forEach((pkg) => {\n const pkgName = pkg.filePath.split(\"/\")[1];\n // 始终将 pubDeps 放在前面\n if (!bricksMap.has(pkgName)) {\n bricksMap.set(pkgName, pkg);\n }\n });\n\n return Array.from(bricksMap.values());\n}\n\nexport function getBrickPackages(): BrickPackage[] {\n return (\n // Not necessary to process brick packages multiple times.\n processedBrickPackages ??\n (processedBrickPackages = processPublicDepsPackages(\n bootstrapData?.brickPackages ??\n injectedBrickPackages ??\n (window.STANDALONE_BRICK_PACKAGES as BrickPackage[] | undefined) ??\n [],\n window.PUBLIC_DEPS as BrickPackage[] | undefined\n ))\n );\n}\n\nexport function _internalApiGetPresetBricks() {\n return (bootstrapData?.settings?.presetBricks ?? {}) as {\n notification?: string | false;\n dialog?: string | false;\n error?: string | false;\n };\n}\n\nexport function _internalApiGetRenderId(): string | undefined {\n return router?.getRenderId();\n}\n\nexport function _internalApiMatchStoryboard(\n pathname: string\n): RuntimeStoryboard | undefined {\n return matchStoryboard(bootstrapData?.storyboards ?? [], pathname);\n}\n\nexport function _internalApiGetRuntimeContext() {\n return router?.getRuntimeContext();\n}\n\nexport function _internalApiGetStoryboardInBootstrapData(appId: string) {\n return bootstrapData?.storyboards?.find(\n (storyboard) => storyboard.app.id === appId\n );\n}\n\nexport function _internalApiGetAppInBootstrapData(appId: string) {\n return _internalApiGetStoryboardInBootstrapData(appId)?.app;\n}\n\nexport let _test_only_setBootstrapData: (data: BootstrapData) => void;\n\n// istanbul ignore next\nif (process.env.NODE_ENV === \"test\") {\n _test_only_setBootstrapData = (data) => {\n bootstrapData = data as BootstrapData;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Runtime.js","names":["_i18n","require","_loader","_general","_moment","_interopRequireDefault","_history","_matchStoryboard","_Router","_i18n2","_Notification","_Dialog","_injected","_hasInstalledApp","_devtools","_getV2RuntimeFromDll","_customizeColorTheme","runtime","bootstrapData","router","processedBrickPackages","hooks","exports","createRuntime","options","Error","listenDevtoolsEagerly","initializeI18n","NS","locales","moment","locale","i18n","language","on","createHistory","Runtime","getRuntimeV3","getRuntimeV2Factory","v2Kit","getV2RuntimeFromDll","getRuntimeV2","Proxy","getRuntime","get","args","key","Reflect","initialized","bootstrapped","version","initialize","data","_data$settings","normalizeBootstrapData","notification","dialog","_internalApiGetPresetBricks","loadNotificationService","loadBricks","loadDialogService","customizeColorTheme","settings","misc","theme","bootstrap","Router","storyboards","getRecentApps","_router$getRecentApps","_router","getCurrentApp","_router2","currentApp","hasInstalledApp","appId","matchVersion","getFeatureFlags","_bootstrapData","_router3","featureFlags","config","getMiscSettings","_bootstrapData2","_router4","getBrandSettings","_bootstrapData3","base_title","brand","getLaunchpadSettings","_bootstrapData4","columns","rows","launchpad","getDesktops","_bootstrapData$deskto","_bootstrapData5","desktops","getLaunchpadSiteMap","_bootstrapData$siteSo","_bootstrapData6","siteSort","toggleLaunchpadEffect","open","document","body","classList","toggle","applyPageTitle","pageTitle","_router5","baseTitle","title","localeTitle","getNavConfig","_router6","bricks","loadBricksImperatively","getBrickPackages","isObject","deepFreeze","brickPackages","processPublicDepsPackages","pubDeps","length","bricksMap","Map","forEach","pkg","pkgName","filePath","split","has","set","Array","from","values","_processedBrickPackag","_ref","_ref2","_bootstrapData$brickP","_bootstrapData7","injectedBrickPackages","window","STANDALONE_BRICK_PACKAGES","PUBLIC_DEPS","_bootstrapData$settin","_bootstrapData8","presetBricks","_internalApiGetRenderId","_router7","getRenderId","_internalApiMatchStoryboard","pathname","_bootstrapData$storyb","_bootstrapData9","matchStoryboard","_internalApiGetRuntimeContext","_router8","getRuntimeContext","_internalApiGetStoryboardInBootstrapData","_bootstrapData10","find","storyboard","app","id","_internalApiGetAppInBootstrapData","_internalApiGetStoryb","_test_only_setBootstrapData","process","env","NODE_ENV"],"sources":["../../../src/internal/Runtime.ts"],"sourcesContent":["import type {\n RuntimeStoryboard,\n BootstrapSettings,\n FeatureFlags,\n BootstrapData,\n Contract,\n Storyboard,\n BrickConf,\n RouteConf,\n ResolveConf,\n BrickPackage,\n} from \"@next-core/types\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { loadBricksImperatively } from \"@next-core/loader\";\nimport { deepFreeze, isObject } from \"@next-core/utils/general\";\nimport type { PermissionApi_validatePermissions } from \"@next-api-sdk/micro-app-sdk\";\nimport moment from \"moment\";\nimport \"moment/locale/zh-cn.js\";\nimport { createHistory } from \"../history.js\";\nimport { matchStoryboard } from \"./matchStoryboard.js\";\nimport { Router } from \"./Router.js\";\nimport { NS, locales } from \"./i18n.js\";\nimport { loadNotificationService } from \"../Notification.js\";\nimport { loadDialogService } from \"../Dialog.js\";\nimport { injectedBrickPackages } from \"./injected.js\";\nimport { type AppForCheck, hasInstalledApp } from \"./hasInstalledApp.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\nimport { listenDevtoolsEagerly } from \"./devtools.js\";\nimport { getV2RuntimeFromDll } from \"../getV2RuntimeFromDll.js\";\nimport { ThemeSettings, customizeColorTheme } from \"./customizeColorTheme.js\";\n\nlet runtime: Runtime;\n\n// Allow inject bootstrap data in a runtime other than Brick Next.\nlet bootstrapData: BootstrapData | undefined;\nlet router: Router | undefined;\nlet processedBrickPackages: BrickPackage[] | undefined;\n\nexport interface RuntimeOptions {\n hooks?: RuntimeHooks;\n}\n\nexport interface ImagesFactory {\n get(name: string): string;\n}\n\nexport interface PageViewInfo {\n status: \"ok\" | \"failed\" | \"redirected\" | \"not-found\";\n path?: string;\n pageTitle?: string;\n}\n\nexport interface RuntimeHooks {\n auth?: {\n getAuth(): object;\n isLoggedIn(): boolean;\n authenticate?(...args: unknown[]): unknown;\n logout?(...args: unknown[]): unknown;\n };\n fulfilStoryboard?: (storyboard: RuntimeStoryboard) => Promise<void>;\n validatePermissions?: typeof PermissionApi_validatePermissions;\n checkPermissions?: {\n checkPermissions(...actions: string[]): boolean;\n preCheckPermissions(storyboard: Storyboard): Promise<void> | undefined;\n preCheckPermissionsForBrickOrRoute(\n container: BrickConf | RouteConf,\n asyncComputeRealValue: (value: unknown) => Promise<unknown>\n ): Promise<void> | undefined;\n };\n checkInstalledApps?: {\n preCheckInstalledApps(\n storyboard: Storyboard,\n hasAppInBootstrap: (appId: string) => boolean\n ): void;\n waitForCheckingApps(appIds: string[]): Promise<void>;\n getCheckedApp(appId: string): AppForCheck | undefined;\n };\n flowApi?: {\n FLOW_API_PROVIDER: string;\n registerFlowApiProvider(): void;\n isFlowApiProvider(provider: string): boolean;\n getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string,\n stream?: boolean\n ): Promise<unknown[]>;\n collectContract(contracts: Contract[] | undefined): void;\n collectWidgetContract(contracts: Contract[] | undefined): void;\n clearCollectWidgetContract(): void;\n };\n menu?: {\n getMenuById(menuId: string): unknown;\n fetchMenuById(\n menuId: string,\n runtimeContext: RuntimeContext,\n runtimeHelpers: RuntimeHooksMenuHelpers\n ): Promise<unknown>;\n };\n images?: {\n imagesFactory(\n appId: string,\n isBuildPush?: boolean,\n version?: string\n ): ImagesFactory;\n widgetImagesFactory(\n widgetId: string,\n widgetVersion?: string\n ): ImagesFactory;\n };\n messageDispatcher?: {\n subscribe(...args: unknown[]): Promise<unknown>;\n unsubscribe(...args: unknown[]): Promise<unknown>;\n onMessage(channel: string, listener: (data: unknown) => void): () => void;\n onClose(listener: () => void): () => void;\n reset(): void;\n };\n pageView?: {\n create(): (info: PageViewInfo) => void;\n };\n}\n\nexport interface RuntimeHooksMenuHelpers {\n getStoryboardByAppId(appId: string): Storyboard | undefined;\n resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext\n ): Promise<unknown>;\n asyncComputeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n options?: { ignoreSymbols?: boolean; noInject?: boolean }\n ): Promise<unknown>;\n}\n\nexport let hooks: RuntimeHooks | undefined;\n\nexport function createRuntime(options?: RuntimeOptions) {\n if (runtime) {\n throw new Error(\"Cannot create multiple runtimes\");\n }\n listenDevtoolsEagerly();\n hooks = options?.hooks;\n initializeI18n(NS, locales);\n moment.locale(i18n.language);\n i18n.on(\"languageChanged\", () => {\n moment.locale(i18n.language);\n });\n createHistory();\n runtime = new Runtime();\n return runtime;\n}\n\nfunction getRuntimeV3() {\n return runtime;\n}\n\n// istanbul ignore next\nfunction getRuntimeV2Factory() {\n const v2Kit = getV2RuntimeFromDll();\n if (v2Kit) {\n return function getRuntimeV2() {\n return new Proxy(v2Kit.getRuntime(), {\n get(...args) {\n const key = args[1];\n switch (key) {\n case \"getCurrentApp\":\n case \"getRecentApps\":\n case \"hasInstalledApp\":\n case \"getDesktops\":\n case \"getLaunchpadSettings\":\n case \"getLaunchpadSiteMap\":\n case \"toggleLaunchpadEffect\":\n case \"applyPageTitle\":\n case \"getNavConfig\":\n case \"getFeatureFlags\":\n case \"getMiscSettings\":\n case \"getBrandSettings\":\n return Reflect.get(...args);\n }\n },\n }) as unknown as Runtime;\n };\n }\n}\n\n// istanbul ignore next\nexport const getRuntime = getRuntimeV2Factory() || getRuntimeV3;\n\nexport class Runtime {\n #initialized = false;\n #bootstrapped = false;\n\n readonly version: number | undefined = 3;\n\n initialize(data: BootstrapData) {\n if (this.#initialized) {\n throw new Error(\"The runtime cannot be initialized more than once\");\n }\n this.#initialized = true;\n normalizeBootstrapData(data);\n bootstrapData = data;\n const { notification, dialog } = _internalApiGetPresetBricks();\n if (notification !== false) {\n loadNotificationService(\n notification ?? \"basic.show-notification\",\n this.loadBricks\n );\n }\n if (dialog !== false) {\n loadDialogService(dialog ?? \"basic.show-dialog\", this.loadBricks);\n }\n customizeColorTheme(data.settings?.misc?.theme as ThemeSettings);\n }\n\n async bootstrap(data?: BootstrapData) {\n if (data) {\n this.initialize(data);\n }\n if (this.#bootstrapped) {\n throw new Error(\"The runtime cannot be bootstrapped more than once\");\n }\n this.#bootstrapped = true;\n router = new Router(bootstrapData!.storyboards!);\n await router.bootstrap();\n }\n\n getRecentApps() {\n return router?.getRecentApps() ?? {};\n }\n\n getCurrentApp() {\n return router?.getRecentApps().currentApp;\n }\n\n hasInstalledApp(appId: string, matchVersion?: string): boolean {\n return hasInstalledApp(appId, matchVersion);\n }\n\n getFeatureFlags(): FeatureFlags {\n return {\n ...bootstrapData?.settings?.featureFlags,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.featureFlags,\n \"migrate-to-brick-next-v3\": true,\n };\n }\n\n getMiscSettings() {\n return {\n ...bootstrapData?.settings?.misc,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.misc,\n };\n }\n\n getBrandSettings(): Record<string, string> {\n return {\n base_title: \"DevOps 管理专家\",\n ...(bootstrapData?.settings?.brand as Record<string, string>),\n };\n }\n\n getLaunchpadSettings() {\n return {\n columns: 7,\n rows: 4,\n ...bootstrapData?.settings?.launchpad,\n };\n }\n\n getDesktops(): unknown[] {\n return bootstrapData?.desktops ?? [];\n }\n\n getLaunchpadSiteMap(): unknown[] {\n return bootstrapData?.siteSort ?? [];\n }\n\n toggleLaunchpadEffect(open: boolean): void {\n document.body.classList.toggle(\"launchpad-open\", open);\n }\n\n applyPageTitle(pageTitle: string): void {\n const baseTitle = this.getBrandSettings().base_title;\n\n document.title =\n (router?.getRecentApps().currentApp?.localeTitle as string) ||\n (pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle);\n }\n\n getNavConfig() {\n return router?.getNavConfig();\n }\n\n loadBricks(bricks: string[] | Set<string>) {\n return loadBricksImperatively(bricks, getBrickPackages());\n }\n}\n\nfunction normalizeBootstrapData(data: BootstrapData) {\n if (isObject(data.settings)) {\n deepFreeze(data.settings);\n }\n if (data.brickPackages) {\n deepFreeze(data.brickPackages);\n }\n}\n\nfunction processPublicDepsPackages(\n brickPackages: BrickPackage[],\n pubDeps: BrickPackage[] | undefined\n): BrickPackage[] {\n if (!pubDeps?.length) return brickPackages;\n\n const bricksMap = new Map();\n\n // bootstrapData 数据和 pubDeps 中可能同时存在同一个包名,需要过滤去重, 以 pubDeps 中的包为准\n [...pubDeps, ...brickPackages].forEach((pkg) => {\n const pkgName = pkg.filePath.split(\"/\")[1];\n // 始终将 pubDeps 放在前面\n if (!bricksMap.has(pkgName)) {\n bricksMap.set(pkgName, pkg);\n }\n });\n\n return Array.from(bricksMap.values());\n}\n\nexport function getBrickPackages(): BrickPackage[] {\n return (\n // Not necessary to process brick packages multiple times.\n processedBrickPackages ??\n (processedBrickPackages = processPublicDepsPackages(\n bootstrapData?.brickPackages ??\n injectedBrickPackages ??\n (window.STANDALONE_BRICK_PACKAGES as BrickPackage[] | undefined) ??\n [],\n window.PUBLIC_DEPS as BrickPackage[] | undefined\n ))\n );\n}\n\nexport function _internalApiGetPresetBricks() {\n return (bootstrapData?.settings?.presetBricks ?? {}) as {\n notification?: string | false;\n dialog?: string | false;\n error?: string | false;\n };\n}\n\nexport function _internalApiGetRenderId(): string | undefined {\n return router?.getRenderId();\n}\n\nexport function _internalApiMatchStoryboard(\n pathname: string\n): RuntimeStoryboard | undefined {\n return matchStoryboard(bootstrapData?.storyboards ?? [], pathname);\n}\n\nexport function _internalApiGetRuntimeContext() {\n return router?.getRuntimeContext();\n}\n\nexport function _internalApiGetStoryboardInBootstrapData(appId: string) {\n return bootstrapData?.storyboards?.find(\n (storyboard) => storyboard.app.id === appId\n );\n}\n\nexport function _internalApiGetAppInBootstrapData(appId: string) {\n return _internalApiGetStoryboardInBootstrapData(appId)?.app;\n}\n\nexport let _test_only_setBootstrapData: (data: BootstrapData) => void;\n\n// istanbul ignore next\nif (process.env.NODE_ENV === \"test\") {\n _test_only_setBootstrapData = (data) => {\n bootstrapData = data as BootstrapData;\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -82,6 +82,7 @@ function isConditionalEventHandler(handler) {
82
82
  }
83
83
  function listenerFactory(handlers, runtimeContext, runtimeBrick) {
84
84
  return function (event) {
85
+ var _handler$batch, _handler$batch2;
85
86
  for (const handler of [].concat(handlers)) {
86
87
  if (!(0, _checkIf.checkIf)(handler, {
87
88
  ...runtimeContext,
@@ -159,12 +160,12 @@ function listenerFactory(handlers, runtimeContext, runtimeBrick) {
159
160
  case "context.replace":
160
161
  case "context.refresh":
161
162
  case "context.load":
162
- handleContextAction(event, method, handler.args, handler.batch ?? true, handler.callback, runtimeContext);
163
+ handleContextAction(event, method, handler.args, (_handler$batch = handler.batch) !== null && _handler$batch !== void 0 ? _handler$batch : true, handler.callback, runtimeContext);
163
164
  break;
164
165
  case "state.update":
165
166
  case "state.refresh":
166
167
  case "state.load":
167
- handleTplStateAction(event, method, handler.args, handler.batch ?? true, handler.callback, runtimeContext);
168
+ handleTplStateAction(event, method, handler.args, (_handler$batch2 = handler.batch) !== null && _handler$batch2 !== void 0 ? _handler$batch2 : true, handler.callback, runtimeContext);
168
169
  break;
169
170
  case "tpl.dispatchEvent":
170
171
  {