@next-core/runtime 1.36.0 → 1.37.0
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.
- package/dist/cjs/createRoot.js +2 -5
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +74 -35
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +76 -48
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +5 -3
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/cjs/internal/poll.js +10 -2
- package/dist/cjs/internal/poll.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +1 -1
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/cjs/internal/setupRootRuntimeContext.js +10 -10
- package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/esm/createRoot.js +2 -5
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/internal/Renderer.js +84 -45
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +76 -46
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +5 -3
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/esm/internal/poll.js +10 -2
- package/dist/esm/internal/poll.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +1 -1
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/setupRootRuntimeContext.js +10 -10
- package/dist/esm/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/types/internal/Renderer.d.ts +7 -7
- package/dist/types/internal/RendererContext.d.ts +8 -7
- package/dist/types/internal/interfaces.d.ts +7 -1
- package/dist/types/internal/setupRootRuntimeContext.d.ts +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RendererContext.js","names":["_lodash","require","_bindListeners","_history","_proxyFactories","_mediaQuery","_mount","_enums","_bindTemplateProxy","_Runtime","_classPrivateFieldGet","s","a","get","_assertClassBrand","_classPrivateFieldSet","r","set","e","t","n","has","arguments","length","TypeError","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_allMenuRequests","_memoizedMenuRequestMap","_locationChangeCallbacks","_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","routeHelper","renderId","setInitialMenuRequests","menuRequests","memoizeMenuRequests","route","reMergeMenuRequests","routes","currentRoute","previousMenuRequest","previousRoute","_classPrivateFieldGet2","mergedMenuRequests","previousIndex","indexOf","push","splice","_classPrivateFieldGet3","delete","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","i","callback","performIncrementalRender","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","isEmpty","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","node","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","insertPortalBeforeChildCandidates","tag","RenderTag","PLACEHOLDER","_getNextNormalNode$el","_getNextNormalNode","_getNextPortalNode","getNextNormalNode","element","nextSibling","getNextPortalNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","HTMLElement","tagName","prevSibling","current","child","sibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","ROOT","container","createPortal","return","removeBricks","getBrickRange","_unmountBricks","call","mountTree","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","values","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","_brick$element","_brick$element2","observers","unbindTemplateProxy","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","includes","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","getSpecifiedNormalNode","next","BRICK","getSpecifiedPortalNode","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { Action, Location } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type {\n RenderBrick,\n RenderChildNode,\n RenderNode,\n RenderReturnNode,\n RenderRoot,\n} from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { hooks } from \"./Runtime.js\";\nimport type { RenderOutput } from \"./Renderer.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\ntype LocationChangeCallback = (\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n) => Promise<boolean>;\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n \"onMessage\",\n \"onMessageClose\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n routeHelper?: RouteHelper;\n renderId?: string;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n catch: (\n error: unknown,\n returnNode: RenderReturnNode\n ) =>\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n };\n}\n\nexport class RendererContext {\n /**\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n public readonly scope: \"page\" | \"fragment\";\n\n public readonly unknownBricks: \"silent\" | \"throw\";\n\n 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 #allMenuRequests?: Promise<StaticMenuConf>[];\n #memoizedMenuRequestMap?: WeakMap<RouteConf, Promise<StaticMenuConf>>;\n\n setInitialMenuRequests(menuRequests: Promise<StaticMenuConf>[]) {\n this.#allMenuRequests = menuRequests;\n }\n\n memoizeMenuRequests(\n route: RouteConf,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n if (!this.#memoizedMenuRequestMap) {\n this.#memoizedMenuRequestMap = new WeakMap();\n }\n this.#memoizedMenuRequestMap.set(route, menuRequests[0]);\n }\n\n async reMergeMenuRequests(\n routes: RouteConf[],\n currentRoute: RouteConf | undefined,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n let previousMenuRequest: Promise<StaticMenuConf> | undefined;\n let previousRoute: RouteConf | undefined;\n for (const route of routes) {\n // If the sub-routes doesn't match, then `this.memoizeMenuRequests` will\n // not be called, thus `this.#memoizedMenuRequestMap` is not set.\n previousMenuRequest = this.#memoizedMenuRequestMap?.get(route);\n if (previousMenuRequest) {\n previousRoute = route;\n break;\n }\n }\n const mergedMenuRequests = this.#allMenuRequests!;\n const previousIndex = previousMenuRequest\n ? mergedMenuRequests.indexOf(previousMenuRequest)\n : -1;\n if (previousIndex === -1) {\n if (!menuRequests.length) {\n return;\n }\n mergedMenuRequests.push(...menuRequests);\n } else {\n mergedMenuRequests.splice(\n previousIndex,\n mergedMenuRequests.length - previousIndex,\n ...menuRequests\n );\n }\n if (previousRoute && previousRoute !== currentRoute) {\n this.#memoizedMenuRequestMap?.delete(previousRoute);\n }\n await this.#routeHelper!.mergeMenus(mergedMenuRequests);\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode);\n }\n\n #locationChangeCallbacks: LocationChangeCallback[] = [];\n\n async didPerformIncrementalRender(\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n ) {\n // Perform incremental rendering from inside out.\n // This allows nested incremental sub-routes.\n for (let i = this.#locationChangeCallbacks.length - 1; i >= 0; i--) {\n const callback = this.#locationChangeCallbacks[i];\n if (await callback(location, prevLocation)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(callback: LocationChangeCallback) {\n this.#locationChangeCallbacks.push(callback);\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n if (!this.#memoized) {\n this.#memoized = new WeakMap();\n }\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n let mem = this.#memoized.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoized.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n reRender(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoized!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n let insertBeforeChild: ChildNode | null;\n 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.#allMenuRequests = undefined;\n this.#memoizedMenuRequestMap = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#locationChangeCallbacks.length = 0;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(\n node: RenderChildNode | undefined\n): RenderChildNode | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, false);\n}\n\nfunction getNextNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, true);\n}\n\nfunction getSpecifiedNormalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && !current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, false);\n}\n\nfunction getNextPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, true);\n}\n\nfunction getSpecifiedPortalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderChildNode | undefined,\n to: RenderChildNode | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n range.add(current);\n }\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RendererContext.js","names":["_lodash","require","_bindListeners","_history","_proxyFactories","_mediaQuery","_mount","_enums","_bindTemplateProxy","_Runtime","_classPrivateFieldGet","s","a","get","_assertClassBrand","_classPrivateFieldSet","r","set","e","t","n","has","arguments","length","TypeError","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","routeHelper","renderId","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","node","previousSibling","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","finalResult","shouldIgnoreRoutes","parentRoutes","callback","values","reverse","parentRoute","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","_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","_brick$element","_brick$element2","observers","delete","unbindTemplateProxy","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","getSpecifiedNormalNode","next","BRICK","getSpecifiedPortalNode","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n 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 catch: (\n error: unknown,\n returnNode: RenderReturnNode\n ) =>\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n };\n}\n\nexport class RendererContext {\n /**\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n public readonly scope: \"page\" | \"fragment\";\n\n public readonly unknownBricks: \"silent\" | \"throw\";\n\n 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 reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode);\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 if (!this.#incrementalRenderStates.has(slotConf)) {\n this.#incrementalRenderStates.set(slotConf, { parentRoutes, callback });\n }\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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"}
|
|
@@ -379,14 +379,16 @@ async function _render(location) {
|
|
|
379
379
|
let output;
|
|
380
380
|
let stores = [];
|
|
381
381
|
try {
|
|
382
|
-
|
|
382
|
+
const rootMenuRequestNode = {};
|
|
383
|
+
output = await (0, _Renderer.renderRoutes)(renderRoot, (0, _insertPreviewRoutes.insertPreviewRoutes)(storyboard.routes), runtimeContext, rendererContext, [], rootMenuRequestNode);
|
|
383
384
|
if (routeHelper.bailout(output)) {
|
|
384
385
|
return;
|
|
385
386
|
}
|
|
386
387
|
stores = (0, _Renderer.getDataStores)(runtimeContext);
|
|
387
388
|
await (0, _Renderer.postAsyncRender)(output, runtimeContext, stores);
|
|
388
|
-
|
|
389
|
-
rendererContext.
|
|
389
|
+
rootMenuRequestNode.child = output.menuRequestNode;
|
|
390
|
+
rendererContext.setInitialMenuRequestNode(rootMenuRequestNode);
|
|
391
|
+
await routeHelper.mergeMenus(rendererContext.getMenuRequests());
|
|
390
392
|
} catch (error) {
|
|
391
393
|
// eslint-disable-next-line no-console
|
|
392
394
|
console.error("Router failed:", error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.js","names":["_history2","require","_http","_lodash","_history3","_Renderer","_DataStore","_resolveData","_mount","_matchStoryboard","_StoryboardFunctions","_RendererContext","_themeAndMode","_Runtime","_getPageInfo","_markAsComputed","_handleHttpError","_abortController","_setLoginStateCookie","_registerCustomTemplates","_fulfilStoryboard","_enums","_insertPreviewRoutes","_devtools","_setUIVersion","_setAppVariable","_setWatermark","_classPrivateFieldGet","s","a","get","_assertClassBrand","_classPrivateFieldSet","r","set","e","t","n","has","arguments","length","TypeError","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_Router_brand","WeakSet","Router","constructor","storyboards","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","Set","history","getHistory","window","addEventListener","event","message","_getBlockMessageBeforePageLave","call","preventDefault","returnValue","block","location","action","getRenderId","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","initAbortController","renderId","listen","_classPrivateFieldGet2","_location$state","_location$state2","_classPrivateFieldGet4","currentRenderId","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","locationsAreEqual","noIncremental","_classPrivateFieldGet3","didPerformIncrementalRender","abortPendingRequest","dispatchPageLeave","storyboard","matchStoryboard","pathname","isOutsideApp","reload","devtoolsHookEmit","_queuedRender","catch","handleHttpError","exports","detail","_classPrivateFieldGet5","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect","to","from","_this$redirectCount","_this$redirectCount2","search","process","env","NODE_ENV","console","error","Error","replace","_render","nextLocation","_hooks$flowApi","_hooks$pageView","_classPrivateFieldGet6","_storyboard$app","uniqueId","resetAllComputedMarks","clearResolveCache","hooks","flowApi","clearCollectWidgetContract","finishPageView","pageView","create","app","currentAppId","id","BOOTSTRAP_UNION_FILE","setAppVariable","appId","version","currentVersion","fulfilStoryboard","setWatermark","appChanged","flags","getRuntime","getFeatureFlags","prevRendererContext","redirectTo","status","add","redirectToLogin","setLoginStateCookie","main","document","querySelector","portal","renderRoot","tag","RenderTag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","unmountTree","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","setTheme","getLocalAppsTheme","theme","setMode","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","_internalApiGetAppInBootstrapData","routeHelper","bailout","output","unauthenticated","redirect","path","mergeMenus","menuRequests","menuConfs","Promise","all","mergeMenuConfs","returnNode","isUnauthenticatedError","NO_AUTH_GUARD","HttpAbortError","noAuthGuardLoginPath","getMiscSettings","failed","node","BRICK","type","properties","textContent","httpErrorToString","runtimeContext","return","blockingList","rendererContext","RendererContext","query","URLSearchParams","sys","auth","getAuth","getPageInfo","settings","brand","getBrandSettings","ctxStore","DataStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","registerCustomTemplates","registerStoryboardFunctions","meta","functions","collectContract","contracts","stores","renderRoutes","insertPreviewRoutes","routes","getDataStores","postAsyncRender","setInitialMenuRequests","result","child","route","dispatchBeforePageLoad","applyTheme","applyMode","setUIVersion","uiVersion","mountTree","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","pageTitle","title","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { setLoginStateCookie } from \"../setLoginStateCookie.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\nimport { devtoolsHookEmit } from \"./devtools.js\";\nimport { setUIVersion } from \"../setUIVersion.js\";\nimport { setAppVariable } from \"../setAppVariable.js\";\nimport { setWatermark } from \"../setWatermark.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n let renderId = 0;\n history.listen(async (location, action) => {\n const currentRenderId = ++renderId;\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n if (!ignoreRendering && !location.state?.noIncremental) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(\n location,\n this.#prevLocation\n );\n }\n\n // Ignore stale renders\n if (renderId !== currentRenderId) {\n return;\n }\n\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n const renderId = (this.#renderId = uniqueId(\"render-id-\"));\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n // const renderStartTime = performance.now();\n const finishPageView = hooks?.pageView?.create();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n const currentAppId = storyboard?.app?.id;\n // dynamically change the value of the APP variable, if it's union app\n if (\n window.BOOTSTRAP_UNION_FILE &&\n currentAppId &&\n currentAppId !== previousApp?.id\n ) {\n setAppVariable({\n appId: currentAppId,\n version: storyboard.app.currentVersion!,\n });\n }\n\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n\n const currentApp = (this.#currentApp = storyboard?.app);\n\n setWatermark();\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n finishPageView?.({\n status: \"redirected\",\n });\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n setLoginStateCookie(location);\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n },\n catch: (error, returnNode) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n return {\n failed: true,\n output: {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n menuRequests: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper, renderId }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n []\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n await routeHelper.mergeMenus(output.menuRequests);\n rendererContext.setInitialMenuRequests(output.menuRequests);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n const result = routeHelper.catch(error, renderRoot);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n setUIVersion(currentApp?.uiVersion);\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n finishPageView?.({\n status: \"ok\",\n path: output.path,\n pageTitle: document.title,\n });\n } else {\n finishPageView?.({ status: \"failed\" });\n }\n devtoolsHookEmit(\"rendered\");\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n finishPageView?.({ status: \"not-found\" });\n devtoolsHookEmit(\"rendered\");\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Router.js","names":["_history2","require","_http","_lodash","_history3","_Renderer","_DataStore","_resolveData","_mount","_matchStoryboard","_StoryboardFunctions","_RendererContext","_themeAndMode","_Runtime","_getPageInfo","_markAsComputed","_handleHttpError","_abortController","_setLoginStateCookie","_registerCustomTemplates","_fulfilStoryboard","_enums","_insertPreviewRoutes","_devtools","_setUIVersion","_setAppVariable","_setWatermark","_classPrivateFieldGet","s","a","get","_assertClassBrand","_classPrivateFieldSet","r","set","e","t","n","has","arguments","length","TypeError","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_Router_brand","WeakSet","Router","constructor","storyboards","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","Set","history","getHistory","window","addEventListener","event","message","_getBlockMessageBeforePageLave","call","preventDefault","returnValue","block","location","action","getRenderId","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","initAbortController","renderId","listen","_classPrivateFieldGet2","_location$state","_location$state2","_classPrivateFieldGet4","currentRenderId","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","locationsAreEqual","noIncremental","_classPrivateFieldGet3","didPerformIncrementalRender","abortPendingRequest","dispatchPageLeave","storyboard","matchStoryboard","pathname","isOutsideApp","reload","devtoolsHookEmit","_queuedRender","catch","handleHttpError","exports","detail","_classPrivateFieldGet5","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect","to","from","_this$redirectCount","_this$redirectCount2","search","process","env","NODE_ENV","console","error","Error","replace","_render","nextLocation","_hooks$flowApi","_hooks$pageView","_classPrivateFieldGet6","_storyboard$app","uniqueId","resetAllComputedMarks","clearResolveCache","hooks","flowApi","clearCollectWidgetContract","finishPageView","pageView","create","app","currentAppId","id","BOOTSTRAP_UNION_FILE","setAppVariable","appId","version","currentVersion","fulfilStoryboard","setWatermark","appChanged","flags","getRuntime","getFeatureFlags","prevRendererContext","redirectTo","status","add","redirectToLogin","setLoginStateCookie","main","document","querySelector","portal","renderRoot","tag","RenderTag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","unmountTree","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","setTheme","getLocalAppsTheme","theme","setMode","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","_internalApiGetAppInBootstrapData","routeHelper","bailout","output","unauthenticated","redirect","path","mergeMenus","menuRequests","menuConfs","Promise","all","mergeMenuConfs","returnNode","isUnauthenticatedError","NO_AUTH_GUARD","HttpAbortError","noAuthGuardLoginPath","getMiscSettings","failed","node","BRICK","type","properties","textContent","httpErrorToString","runtimeContext","return","blockingList","rendererContext","RendererContext","query","URLSearchParams","sys","auth","getAuth","getPageInfo","settings","brand","getBrandSettings","ctxStore","DataStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","registerCustomTemplates","registerStoryboardFunctions","meta","functions","collectContract","contracts","stores","rootMenuRequestNode","renderRoutes","insertPreviewRoutes","routes","getDataStores","postAsyncRender","child","menuRequestNode","setInitialMenuRequestNode","getMenuRequests","result","route","dispatchBeforePageLoad","applyTheme","applyMode","setUIVersion","uiVersion","mountTree","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","pageTitle","title","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderRoot,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { setLoginStateCookie } from \"../setLoginStateCookie.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\nimport { devtoolsHookEmit } from \"./devtools.js\";\nimport { setUIVersion } from \"../setUIVersion.js\";\nimport { setAppVariable } from \"../setAppVariable.js\";\nimport { setWatermark } from \"../setWatermark.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n let renderId = 0;\n history.listen(async (location, action) => {\n const currentRenderId = ++renderId;\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n if (!ignoreRendering && !location.state?.noIncremental) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(\n location,\n this.#prevLocation\n );\n }\n\n // Ignore stale renders\n if (renderId !== currentRenderId) {\n return;\n }\n\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n const renderId = (this.#renderId = uniqueId(\"render-id-\"));\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n // const renderStartTime = performance.now();\n const finishPageView = hooks?.pageView?.create();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n const currentAppId = storyboard?.app?.id;\n // dynamically change the value of the APP variable, if it's union app\n if (\n window.BOOTSTRAP_UNION_FILE &&\n currentAppId &&\n currentAppId !== previousApp?.id\n ) {\n setAppVariable({\n appId: currentAppId,\n version: storyboard.app.currentVersion!,\n });\n }\n\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n\n const currentApp = (this.#currentApp = storyboard?.app);\n\n setWatermark();\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n finishPageView?.({\n status: \"redirected\",\n });\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n setLoginStateCookie(location);\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n },\n catch: (error, returnNode) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n return {\n failed: true,\n output: {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n menuRequests: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper, renderId }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n const rootMenuRequestNode: MenuRequestNode = {};\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n [],\n rootMenuRequestNode\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n rootMenuRequestNode.child = output.menuRequestNode;\n rendererContext.setInitialMenuRequestNode(rootMenuRequestNode);\n await routeHelper.mergeMenus(rendererContext.getMenuRequests());\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n const result = routeHelper.catch(error, renderRoot);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n setUIVersion(currentApp?.uiVersion);\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n finishPageView?.({\n status: \"ok\",\n path: output.path,\n pageTitle: document.title,\n });\n } else {\n finishPageView?.({ status: \"failed\" });\n }\n devtoolsHookEmit(\"rendered\");\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n finishPageView?.({ status: \"not-found\" });\n devtoolsHookEmit(\"rendered\");\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
|
|
@@ -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} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n __temporary_tpl_tag_name?: string;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n __temporary_tpl_tag_name?: string;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n 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"],"mappings":""}
|
|
@@ -37,9 +37,10 @@ function startPoll(task, {
|
|
|
37
37
|
if (!shouldStop) {
|
|
38
38
|
var _computeRealValue2;
|
|
39
39
|
const result = await task();
|
|
40
|
+
const expectPollStopImmediatelyResult = (_computeRealValue2 = (0, _computeRealValue5.computeRealValue)(expectPollStopImmediately, runtimeContext)) === null || _computeRealValue2 === void 0 ? void 0 : _computeRealValue2();
|
|
40
41
|
// Stop polling immediately when the expectation is match or a different router
|
|
41
42
|
// is rendering after the task processed.
|
|
42
|
-
shouldStop =
|
|
43
|
+
shouldStop = expectPollStopImmediatelyResult || currentRenderId !== (0, _Runtime._internalApiGetRenderId)();
|
|
43
44
|
if (!shouldStop) {
|
|
44
45
|
var _computeRealValue3;
|
|
45
46
|
progress === null || progress === void 0 || progress(result);
|
|
@@ -52,13 +53,18 @@ function startPoll(task, {
|
|
|
52
53
|
} else {
|
|
53
54
|
delayedPoll(interval !== null && interval !== void 0 ? interval : 3000);
|
|
54
55
|
}
|
|
56
|
+
} else if (expectPollStopImmediatelyResult) {
|
|
57
|
+
finallyCallback === null || finallyCallback === void 0 || finallyCallback();
|
|
55
58
|
}
|
|
59
|
+
} else {
|
|
60
|
+
finallyCallback === null || finallyCallback === void 0 || finallyCallback();
|
|
56
61
|
}
|
|
57
62
|
} catch (e) {
|
|
58
63
|
var _computeRealValue4;
|
|
64
|
+
const expectPollStopImmediatelyResult = (_computeRealValue4 = (0, _computeRealValue5.computeRealValue)(expectPollStopImmediately, runtimeContext)) === null || _computeRealValue4 === void 0 ? void 0 : _computeRealValue4();
|
|
59
65
|
// Stop polling immediately when the expectation is match or a different router
|
|
60
66
|
// is rendering after the task processed.
|
|
61
|
-
shouldStop =
|
|
67
|
+
shouldStop = expectPollStopImmediatelyResult || currentRenderId !== (0, _Runtime._internalApiGetRenderId)();
|
|
62
68
|
if (!shouldStop) {
|
|
63
69
|
error === null || error === void 0 || error(e);
|
|
64
70
|
if (continueOnError) {
|
|
@@ -66,6 +72,8 @@ function startPoll(task, {
|
|
|
66
72
|
} else {
|
|
67
73
|
finallyCallback === null || finallyCallback === void 0 || finallyCallback();
|
|
68
74
|
}
|
|
75
|
+
} else if (expectPollStopImmediatelyResult) {
|
|
76
|
+
finallyCallback === null || finallyCallback === void 0 || finallyCallback();
|
|
69
77
|
}
|
|
70
78
|
} finally {
|
|
71
79
|
// Manually dispatch an event of `request.end` when the polling is stopped immediately.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll.js","names":["_lodash","require","_Runtime","_computeRealValue5","timeoutIdList","Set","startPoll","task","progress","success","error","finally","finallyCallback","pollOptions","runtimeContext","expectPollStopImmediately","expectPollEnd","interval","leadingRequestDelay","continueOnError","delegateLoadingBar","computeRealValue","pick","currentRenderId","_internalApiGetRenderId","currentTimeoutId","poll","delete","shouldStop","_computeRealValue","_computeRealValue2","result","_computeRealValue3","window","dispatchEvent","Event","delayedPoll","e","_computeRealValue4","delay","setTimeout","add","clearPollTimeout","timeoutId","clearTimeout","clear"],"sources":["../../../src/internal/poll.ts"],"sourcesContent":["import type { ProviderPollOptions } from \"@next-core/types\";\nimport { pick } from \"lodash\";\nimport { _internalApiGetRenderId } from \"./Runtime.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { RuntimeContext } from \"./interfaces.js\";\n\nexport type PollableCallbackFunction = (result?: unknown) => unknown;\n\nexport interface PollableCallback {\n progress?: PollableCallbackFunction;\n success?: PollableCallbackFunction;\n error?: PollableCallbackFunction;\n finally?: PollableCallbackFunction;\n}\n\nconst timeoutIdList = new Set<number>();\n\nexport function startPoll(\n task: () => unknown,\n { progress, success, error, finally: finallyCallback }: PollableCallback,\n pollOptions: ProviderPollOptions,\n runtimeContext: RuntimeContext\n): void {\n const { expectPollStopImmediately, expectPollEnd } = pollOptions;\n const { interval, leadingRequestDelay, continueOnError, delegateLoadingBar } =\n computeRealValue(\n pick(pollOptions, [\n \"interval\",\n \"leadingRequestDelay\",\n \"continueOnError\",\n \"delegateLoadingBar\",\n ]),\n runtimeContext\n ) as ProviderPollOptions;\n const currentRenderId = _internalApiGetRenderId();\n let currentTimeoutId: number;\n async function poll(): Promise<void> {\n timeoutIdList.delete(currentTimeoutId);\n let shouldStop: boolean | undefined;\n try {\n shouldStop = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match before task.\n if (!shouldStop) {\n const result = await task();\n // Stop polling immediately when the expectation is match or a different router\n // is rendering after the task processed.\n shouldStop =\n
|
|
1
|
+
{"version":3,"file":"poll.js","names":["_lodash","require","_Runtime","_computeRealValue5","timeoutIdList","Set","startPoll","task","progress","success","error","finally","finallyCallback","pollOptions","runtimeContext","expectPollStopImmediately","expectPollEnd","interval","leadingRequestDelay","continueOnError","delegateLoadingBar","computeRealValue","pick","currentRenderId","_internalApiGetRenderId","currentTimeoutId","poll","delete","shouldStop","_computeRealValue","_computeRealValue2","result","expectPollStopImmediatelyResult","_computeRealValue3","window","dispatchEvent","Event","delayedPoll","e","_computeRealValue4","delay","setTimeout","add","clearPollTimeout","timeoutId","clearTimeout","clear"],"sources":["../../../src/internal/poll.ts"],"sourcesContent":["import type { ProviderPollOptions } from \"@next-core/types\";\nimport { pick } from \"lodash\";\nimport { _internalApiGetRenderId } from \"./Runtime.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { RuntimeContext } from \"./interfaces.js\";\n\nexport type PollableCallbackFunction = (result?: unknown) => unknown;\n\nexport interface PollableCallback {\n progress?: PollableCallbackFunction;\n success?: PollableCallbackFunction;\n error?: PollableCallbackFunction;\n finally?: PollableCallbackFunction;\n}\n\nconst timeoutIdList = new Set<number>();\n\nexport function startPoll(\n task: () => unknown,\n { progress, success, error, finally: finallyCallback }: PollableCallback,\n pollOptions: ProviderPollOptions,\n runtimeContext: RuntimeContext\n): void {\n const { expectPollStopImmediately, expectPollEnd } = pollOptions;\n const { interval, leadingRequestDelay, continueOnError, delegateLoadingBar } =\n computeRealValue(\n pick(pollOptions, [\n \"interval\",\n \"leadingRequestDelay\",\n \"continueOnError\",\n \"delegateLoadingBar\",\n ]),\n runtimeContext\n ) as ProviderPollOptions;\n const currentRenderId = _internalApiGetRenderId();\n let currentTimeoutId: number;\n async function poll(): Promise<void> {\n timeoutIdList.delete(currentTimeoutId);\n let shouldStop: boolean | undefined;\n try {\n shouldStop = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match before task.\n if (!shouldStop) {\n const result = await task();\n const expectPollStopImmediatelyResult = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match or a different router\n // is rendering after the task processed.\n shouldStop =\n expectPollStopImmediatelyResult ||\n currentRenderId !== _internalApiGetRenderId();\n if (!shouldStop) {\n progress?.(result);\n if (\n (\n computeRealValue(expectPollEnd, runtimeContext) as\n | ((result: unknown) => boolean)\n | undefined\n )?.(result)\n ) {\n if (delegateLoadingBar) {\n window.dispatchEvent(new Event(\"request.end\"));\n }\n success?.(result);\n finallyCallback?.();\n } else {\n delayedPoll(interval ?? 3000);\n }\n } else if (expectPollStopImmediatelyResult) {\n finallyCallback?.();\n }\n } else {\n finallyCallback?.();\n }\n } catch (e) {\n const expectPollStopImmediatelyResult = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match or a different router\n // is rendering after the task processed.\n shouldStop =\n expectPollStopImmediatelyResult ||\n currentRenderId !== _internalApiGetRenderId();\n if (!shouldStop) {\n error?.(e);\n if (continueOnError) {\n delayedPoll(interval ?? 3000);\n } else {\n finallyCallback?.();\n }\n } else if (expectPollStopImmediatelyResult) {\n finallyCallback?.();\n }\n } finally {\n // Manually dispatch an event of `request.end` when the polling is stopped immediately.\n if (delegateLoadingBar && shouldStop) {\n window.dispatchEvent(new Event(\"request.end\"));\n }\n }\n }\n\n function delayedPoll(delay: number): void {\n currentTimeoutId = setTimeout(poll, delay) as unknown as number;\n timeoutIdList.add(currentTimeoutId);\n }\n\n delayedPoll(leadingRequestDelay ?? 0);\n\n if (delegateLoadingBar) {\n window.dispatchEvent(new Event(\"request.start\"));\n }\n}\n\nexport function clearPollTimeout(): void {\n for (const timeoutId of timeoutIdList) {\n clearTimeout(timeoutId);\n }\n timeoutIdList.clear();\n}\n"],"mappings":"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"}
|
|
@@ -72,7 +72,7 @@ async function renderUseBrick(useBrick, data) {
|
|
|
72
72
|
...useBrick.properties,
|
|
73
73
|
...transform
|
|
74
74
|
}
|
|
75
|
-
}, scopedRuntimeContext, rendererContext, []);
|
|
75
|
+
}, scopedRuntimeContext, rendererContext, [], {});
|
|
76
76
|
const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];
|
|
77
77
|
await (0, _Renderer.postAsyncRender)(output, scopedRuntimeContext, scopedStores);
|
|
78
78
|
if (((_output$node = output.node) === null || _output$node === void 0 ? void 0 : _output$node.tag) === _enums.RenderTag.PLACEHOLDER) {
|