@next-core/runtime 1.31.0 → 1.31.2
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/internal/Renderer.js +4 -4
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +92 -123
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +68 -110
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +13 -19
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/esm/CustomProcessors.js +6 -8
- package/dist/esm/CustomProcessors.js.map +1 -1
- package/dist/esm/CustomTemplates.js +6 -8
- package/dist/esm/CustomTemplates.js.map +1 -1
- package/dist/esm/internal/Renderer.js +4 -4
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +92 -123
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +76 -118
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js +13 -19
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/types/tsdoc-metadata.json +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RendererContext.js","names":["isEmpty","remove","listenerFactory","getHistory","getReadOnlyProxy","mediaEventTarget","mountTree","RenderTag","unbindTemplateProxy","hooks","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_allMenuRequests","_memoizedMenuRequestMap","_locationChangeCallbacks","_unmountBricks","WeakSet","_initializeRerenderBricks","_dispatchGeneralLifeCycle","_addObserver","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec","_defineProperty","_classPrivateFieldInitSpec","writable","value","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet","routeHelper","renderId","setInitialMenuRequests","menuRequests","memoizeMenuRequests","route","_classPrivateFieldGet","set","reMergeMenuRequests","routes","currentRoute","_this","_asyncToGenerator","previousMenuRequest","previousRoute","_classPrivateFieldGet2","get","mergedMenuRequests","previousIndex","indexOf","length","push","splice","_classPrivateFieldGet3","delete","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","_this2","i","callback","performIncrementalRender","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","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","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","_classPrivateMethodGet","_unmountBricks2","call","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks2","dispose","list","Object","values","observer","disconnect","clear","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle2","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","anchor","substring","initializeScrollIntoView","conf","_addObserver2","initializeMediaChange","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc","_loop","_loop2","_hooks$messageDispatc2","messageDispatcher","channel","runtimeContext","concat","confList","onClose","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","observers","$$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":["isEmpty","remove","listenerFactory","getHistory","getReadOnlyProxy","mediaEventTarget","mountTree","RenderTag","unbindTemplateProxy","hooks","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_allMenuRequests","_memoizedMenuRequestMap","_locationChangeCallbacks","_RendererContext_brand","WeakSet","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec","_defineProperty","_classPrivateFieldInitSpec","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet","routeHelper","renderId","setInitialMenuRequests","menuRequests","memoizeMenuRequests","route","_classPrivateFieldGet","set","reMergeMenuRequests","routes","currentRoute","_this","_asyncToGenerator","previousMenuRequest","previousRoute","_classPrivateFieldGet2","get","mergedMenuRequests","previousIndex","indexOf","length","push","splice","_classPrivateFieldGet3","delete","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","_this2","i","callback","performIncrementalRender","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","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","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","_assertClassBrand","_unmountBricks","call","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","values","observer","disconnect","clear","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","anchor","substring","initializeScrollIntoView","conf","_addObserver","initializeMediaChange","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc","_loop","_loop2","_hooks$messageDispatc2","messageDispatcher","channel","runtimeContext","concat","confList","onClose","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","observers","$$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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"}
|
|
@@ -2,9 +2,9 @@ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
|
2
2
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
3
|
import _classPrivateMethodInitSpec from "@babel/runtime/helpers/classPrivateMethodInitSpec";
|
|
4
4
|
import _classPrivateFieldInitSpec from "@babel/runtime/helpers/classPrivateFieldInitSpec";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
|
6
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
|
7
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
8
8
|
import { locationsAreEqual } from "history";
|
|
9
9
|
import { HttpAbortError } from "@next-core/http";
|
|
10
10
|
import { uniqueId } from "lodash";
|
|
@@ -42,68 +42,26 @@ var _renderId = /*#__PURE__*/new WeakMap();
|
|
|
42
42
|
var _currentApp = /*#__PURE__*/new WeakMap();
|
|
43
43
|
var _previousApp = /*#__PURE__*/new WeakMap();
|
|
44
44
|
var _navConfig = /*#__PURE__*/new WeakMap();
|
|
45
|
-
var
|
|
46
|
-
var _safeRedirect = /*#__PURE__*/new WeakSet();
|
|
47
|
-
var _queuedRender = /*#__PURE__*/new WeakSet();
|
|
48
|
-
var _render = /*#__PURE__*/new WeakSet();
|
|
45
|
+
var _Router_brand = /*#__PURE__*/new WeakSet();
|
|
49
46
|
export class Router {
|
|
50
47
|
constructor(storyboards) {
|
|
51
|
-
_classPrivateMethodInitSpec(this,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
_classPrivateFieldInitSpec(this,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
_classPrivateFieldInitSpec(this,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
_classPrivateFieldInitSpec(this,
|
|
64
|
-
|
|
65
|
-
value: void 0
|
|
66
|
-
});
|
|
67
|
-
_classPrivateFieldInitSpec(this, _nextLocation, {
|
|
68
|
-
writable: true,
|
|
69
|
-
value: void 0
|
|
70
|
-
});
|
|
71
|
-
_classPrivateFieldInitSpec(this, _runtimeContext, {
|
|
72
|
-
writable: true,
|
|
73
|
-
value: void 0
|
|
74
|
-
});
|
|
75
|
-
_classPrivateFieldInitSpec(this, _rendererContext, {
|
|
76
|
-
writable: true,
|
|
77
|
-
value: void 0
|
|
78
|
-
});
|
|
79
|
-
_classPrivateFieldInitSpec(this, _rendererContextTrashCan, {
|
|
80
|
-
writable: true,
|
|
81
|
-
value: new Set()
|
|
82
|
-
});
|
|
83
|
-
_classPrivateFieldInitSpec(this, _redirectCount, {
|
|
84
|
-
writable: true,
|
|
85
|
-
value: 0
|
|
86
|
-
});
|
|
87
|
-
_classPrivateFieldInitSpec(this, _renderId, {
|
|
88
|
-
writable: true,
|
|
89
|
-
value: void 0
|
|
90
|
-
});
|
|
91
|
-
_classPrivateFieldInitSpec(this, _currentApp, {
|
|
92
|
-
writable: true,
|
|
93
|
-
value: void 0
|
|
94
|
-
});
|
|
95
|
-
_classPrivateFieldInitSpec(this, _previousApp, {
|
|
96
|
-
writable: true,
|
|
97
|
-
value: void 0
|
|
98
|
-
});
|
|
99
|
-
_classPrivateFieldInitSpec(this, _navConfig, {
|
|
100
|
-
writable: true,
|
|
101
|
-
value: void 0
|
|
102
|
-
});
|
|
103
|
-
_classPrivateFieldSet(this, _storyboards, storyboards);
|
|
48
|
+
_classPrivateMethodInitSpec(this, _Router_brand);
|
|
49
|
+
_classPrivateFieldInitSpec(this, _storyboards, void 0);
|
|
50
|
+
_classPrivateFieldInitSpec(this, _rendering, false);
|
|
51
|
+
_classPrivateFieldInitSpec(this, _prevLocation, void 0);
|
|
52
|
+
_classPrivateFieldInitSpec(this, _nextLocation, void 0);
|
|
53
|
+
_classPrivateFieldInitSpec(this, _runtimeContext, void 0);
|
|
54
|
+
_classPrivateFieldInitSpec(this, _rendererContext, void 0);
|
|
55
|
+
_classPrivateFieldInitSpec(this, _rendererContextTrashCan, new Set());
|
|
56
|
+
_classPrivateFieldInitSpec(this, _redirectCount, 0);
|
|
57
|
+
_classPrivateFieldInitSpec(this, _renderId, void 0);
|
|
58
|
+
_classPrivateFieldInitSpec(this, _currentApp, void 0);
|
|
59
|
+
_classPrivateFieldInitSpec(this, _previousApp, void 0);
|
|
60
|
+
_classPrivateFieldInitSpec(this, _navConfig, void 0);
|
|
61
|
+
_classPrivateFieldSet(_storyboards, this, storyboards);
|
|
104
62
|
var _history = getHistory();
|
|
105
63
|
window.addEventListener("beforeunload", event => {
|
|
106
|
-
var message =
|
|
64
|
+
var message = _assertClassBrand(_Router_brand, this, _getBlockMessageBeforePageLave).call(this, {});
|
|
107
65
|
// See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload
|
|
108
66
|
if (message) {
|
|
109
67
|
// Cancel the event
|
|
@@ -116,31 +74,31 @@ export class Router {
|
|
|
116
74
|
delete event.returnValue;
|
|
117
75
|
}
|
|
118
76
|
});
|
|
119
|
-
_history.block((location, action) =>
|
|
77
|
+
_history.block((location, action) => _assertClassBrand(_Router_brand, this, _getBlockMessageBeforePageLave).call(this, {
|
|
120
78
|
location,
|
|
121
79
|
action
|
|
122
80
|
}));
|
|
123
81
|
}
|
|
124
82
|
getRenderId() {
|
|
125
|
-
return _classPrivateFieldGet(
|
|
83
|
+
return _classPrivateFieldGet(_renderId, this);
|
|
126
84
|
}
|
|
127
85
|
getRuntimeContext() {
|
|
128
|
-
return _classPrivateFieldGet(
|
|
86
|
+
return _classPrivateFieldGet(_runtimeContext, this);
|
|
129
87
|
}
|
|
130
88
|
getRecentApps() {
|
|
131
89
|
return {
|
|
132
|
-
currentApp: _classPrivateFieldGet(
|
|
133
|
-
previousApp: _classPrivateFieldGet(
|
|
90
|
+
currentApp: _classPrivateFieldGet(_currentApp, this),
|
|
91
|
+
previousApp: _classPrivateFieldGet(_previousApp, this)
|
|
134
92
|
};
|
|
135
93
|
}
|
|
136
94
|
getNavConfig() {
|
|
137
|
-
return _classPrivateFieldGet(
|
|
95
|
+
return _classPrivateFieldGet(_navConfig, this);
|
|
138
96
|
}
|
|
139
97
|
bootstrap() {
|
|
140
98
|
var _this = this;
|
|
141
99
|
initAbortController();
|
|
142
100
|
var history = getHistory();
|
|
143
|
-
_classPrivateFieldSet(
|
|
101
|
+
_classPrivateFieldSet(_prevLocation, this, history.location);
|
|
144
102
|
var renderId = 0;
|
|
145
103
|
history.listen( /*#__PURE__*/function () {
|
|
146
104
|
var _ref = _asyncToGenerator(function* (location, action) {
|
|
@@ -159,19 +117,19 @@ export class Router {
|
|
|
159
117
|
// such as goBack or goForward,
|
|
160
118
|
action === "POP" && (
|
|
161
119
|
// and the previous location was triggered by hash link,
|
|
162
|
-
_classPrivateFieldGet(
|
|
120
|
+
_classPrivateFieldGet(_prevLocation, _this).key === undefined ||
|
|
163
121
|
// or the previous location specified notify false.
|
|
164
|
-
((_classPrivateFieldGet2 = _classPrivateFieldGet(
|
|
122
|
+
((_classPrivateFieldGet2 = _classPrivateFieldGet(_prevLocation, _this).state) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.notify) === false)) {
|
|
165
123
|
omittedLocationProps.key = undefined;
|
|
166
124
|
}
|
|
167
|
-
if (locationsAreEqual(_objectSpread(_objectSpread({}, _classPrivateFieldGet(
|
|
125
|
+
if (locationsAreEqual(_objectSpread(_objectSpread({}, _classPrivateFieldGet(_prevLocation, _this)), omittedLocationProps), _objectSpread(_objectSpread({}, location), omittedLocationProps)) || action !== "POP" && ((_location$state = location.state) === null || _location$state === void 0 ? void 0 : _location$state.notify) === false) {
|
|
168
126
|
// Ignore rendering if location not changed except hash, state and optional key.
|
|
169
127
|
// Ignore rendering if notify is `false`.
|
|
170
128
|
ignoreRendering = true;
|
|
171
129
|
}
|
|
172
130
|
if (!ignoreRendering && !((_location$state2 = location.state) !== null && _location$state2 !== void 0 && _location$state2.noIncremental)) {
|
|
173
131
|
var _classPrivateFieldGet3;
|
|
174
|
-
ignoreRendering = yield (_classPrivateFieldGet3 = _classPrivateFieldGet(
|
|
132
|
+
ignoreRendering = yield (_classPrivateFieldGet3 = _classPrivateFieldGet(_rendererContext, _this)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.didPerformIncrementalRender(location, _classPrivateFieldGet(_prevLocation, _this));
|
|
175
133
|
}
|
|
176
134
|
|
|
177
135
|
// Ignore stale renders
|
|
@@ -179,14 +137,14 @@ export class Router {
|
|
|
179
137
|
return;
|
|
180
138
|
}
|
|
181
139
|
if (ignoreRendering) {
|
|
182
|
-
_classPrivateFieldSet(
|
|
140
|
+
_classPrivateFieldSet(_prevLocation, _this, location);
|
|
183
141
|
return;
|
|
184
142
|
}
|
|
185
143
|
abortPendingRequest();
|
|
186
|
-
_classPrivateFieldSet(
|
|
187
|
-
(_classPrivateFieldGet4 = _classPrivateFieldGet(
|
|
144
|
+
_classPrivateFieldSet(_prevLocation, _this, location);
|
|
145
|
+
(_classPrivateFieldGet4 = _classPrivateFieldGet(_rendererContext, _this)) === null || _classPrivateFieldGet4 === void 0 || _classPrivateFieldGet4.dispatchPageLeave();
|
|
188
146
|
if (action === "POP") {
|
|
189
|
-
var storyboard = matchStoryboard(_classPrivateFieldGet(
|
|
147
|
+
var storyboard = matchStoryboard(_classPrivateFieldGet(_storyboards, _this), location.pathname);
|
|
190
148
|
// When a browser action of goBack or goForward is performing,
|
|
191
149
|
// force reload when the target page is a page of an outside app.
|
|
192
150
|
if (isOutsideApp(storyboard)) {
|
|
@@ -194,25 +152,25 @@ export class Router {
|
|
|
194
152
|
return;
|
|
195
153
|
}
|
|
196
154
|
}
|
|
197
|
-
if (_classPrivateFieldGet(
|
|
198
|
-
_classPrivateFieldSet(
|
|
155
|
+
if (_classPrivateFieldGet(_rendering, _this)) {
|
|
156
|
+
_classPrivateFieldSet(_nextLocation, _this, location);
|
|
199
157
|
} else {
|
|
200
158
|
devtoolsHookEmit("locationChange");
|
|
201
|
-
|
|
159
|
+
_assertClassBrand(_Router_brand, _this, _queuedRender).call(_this, location).catch(handleHttpError);
|
|
202
160
|
}
|
|
203
161
|
});
|
|
204
162
|
return function (_x, _x2) {
|
|
205
163
|
return _ref.apply(this, arguments);
|
|
206
164
|
};
|
|
207
165
|
}());
|
|
208
|
-
return
|
|
166
|
+
return _assertClassBrand(_Router_brand, this, _queuedRender).call(this, history.location);
|
|
209
167
|
}
|
|
210
168
|
}
|
|
211
|
-
function
|
|
169
|
+
function _getBlockMessageBeforePageLave(detail) {
|
|
212
170
|
var _classPrivateFieldGet5;
|
|
213
171
|
var history = getHistory();
|
|
214
172
|
var previousMessage = history.getBlockMessage();
|
|
215
|
-
(_classPrivateFieldGet5 = _classPrivateFieldGet(
|
|
173
|
+
(_classPrivateFieldGet5 = _classPrivateFieldGet(_rendererContext, this)) === null || _classPrivateFieldGet5 === void 0 || _classPrivateFieldGet5.dispatchBeforePageLeave(detail);
|
|
216
174
|
var message = history.getBlockMessage();
|
|
217
175
|
if (!previousMessage && message) {
|
|
218
176
|
// Auto unblock only if new block was introduced by `onBeforePageLeave`.
|
|
@@ -220,9 +178,9 @@ function _getBlockMessageBeforePageLave2(detail) {
|
|
|
220
178
|
}
|
|
221
179
|
return message;
|
|
222
180
|
}
|
|
223
|
-
function
|
|
181
|
+
function _safeRedirect(to, state, from) {
|
|
224
182
|
var _this$redirectCount, _this$redirectCount2;
|
|
225
|
-
if ((_classPrivateFieldSet(
|
|
183
|
+
if ((_classPrivateFieldSet(_redirectCount, this, (_this$redirectCount = _classPrivateFieldGet(_redirectCount, this), _this$redirectCount2 = _this$redirectCount++, _this$redirectCount)), _this$redirectCount2) > 10) {
|
|
226
184
|
var message = "Infinite redirect detected: from \"".concat(from.pathname).concat(from.search).concat(from.hash, "\" to \"").concat(to, "\"");
|
|
227
185
|
// istanbul ignore else: error cannot be caught in test
|
|
228
186
|
if (process.env.NODE_ENV === "test") {
|
|
@@ -235,36 +193,36 @@ function _safeRedirect2(to, state, from) {
|
|
|
235
193
|
}
|
|
236
194
|
getHistory().replace(to, state);
|
|
237
195
|
}
|
|
238
|
-
function
|
|
239
|
-
return
|
|
196
|
+
function _queuedRender(_x3) {
|
|
197
|
+
return _queuedRender2.apply(this, arguments);
|
|
240
198
|
}
|
|
241
|
-
function
|
|
242
|
-
|
|
243
|
-
_classPrivateFieldSet(
|
|
199
|
+
function _queuedRender2() {
|
|
200
|
+
_queuedRender2 = _asyncToGenerator(function* (location) {
|
|
201
|
+
_classPrivateFieldSet(_rendering, this, true);
|
|
244
202
|
try {
|
|
245
|
-
yield
|
|
203
|
+
yield _assertClassBrand(_Router_brand, this, _render).call(this, location);
|
|
246
204
|
} finally {
|
|
247
|
-
_classPrivateFieldSet(
|
|
248
|
-
if (_classPrivateFieldGet(
|
|
249
|
-
var nextLocation = _classPrivateFieldGet(
|
|
250
|
-
_classPrivateFieldSet(
|
|
251
|
-
yield
|
|
205
|
+
_classPrivateFieldSet(_rendering, this, false);
|
|
206
|
+
if (_classPrivateFieldGet(_nextLocation, this)) {
|
|
207
|
+
var nextLocation = _classPrivateFieldGet(_nextLocation, this);
|
|
208
|
+
_classPrivateFieldSet(_nextLocation, this, undefined);
|
|
209
|
+
yield _assertClassBrand(_Router_brand, this, _queuedRender).call(this, nextLocation);
|
|
252
210
|
}
|
|
253
211
|
}
|
|
254
212
|
});
|
|
255
|
-
return
|
|
213
|
+
return _queuedRender2.apply(this, arguments);
|
|
256
214
|
}
|
|
257
|
-
function
|
|
258
|
-
return
|
|
215
|
+
function _render(_x4) {
|
|
216
|
+
return _render2.apply(this, arguments);
|
|
259
217
|
}
|
|
260
|
-
function
|
|
261
|
-
|
|
218
|
+
function _render2() {
|
|
219
|
+
_render2 = _asyncToGenerator(function* (location) {
|
|
262
220
|
var _hooks$flowApi,
|
|
263
221
|
_hooks$pageView,
|
|
264
222
|
_classPrivateFieldGet6,
|
|
265
223
|
_storyboard$app,
|
|
266
224
|
_this2 = this;
|
|
267
|
-
var renderId = _classPrivateFieldSet(
|
|
225
|
+
var renderId = _classPrivateFieldSet(_renderId, this, uniqueId("render-id-"));
|
|
268
226
|
resetAllComputedMarks();
|
|
269
227
|
clearResolveCache();
|
|
270
228
|
hooks === null || hooks === void 0 || (_hooks$flowApi = hooks.flowApi) === null || _hooks$flowApi === void 0 || _hooks$flowApi.clearCollectWidgetContract();
|
|
@@ -273,8 +231,8 @@ function _render3() {
|
|
|
273
231
|
|
|
274
232
|
// const renderStartTime = performance.now();
|
|
275
233
|
var finishPageView = hooks === null || hooks === void 0 || (_hooks$pageView = hooks.pageView) === null || _hooks$pageView === void 0 ? void 0 : _hooks$pageView.create();
|
|
276
|
-
var storyboard = matchStoryboard(_classPrivateFieldGet(
|
|
277
|
-
var previousApp = (_classPrivateFieldGet6 = _classPrivateFieldGet(
|
|
234
|
+
var storyboard = matchStoryboard(_classPrivateFieldGet(_storyboards, this), location.pathname);
|
|
235
|
+
var previousApp = (_classPrivateFieldGet6 = _classPrivateFieldGet(_runtimeContext, this)) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.app;
|
|
278
236
|
var currentAppId = storyboard === null || storyboard === void 0 || (_storyboard$app = storyboard.app) === null || _storyboard$app === void 0 ? void 0 : _storyboard$app.id;
|
|
279
237
|
// dynamically change the value of the APP variable, if it's union app
|
|
280
238
|
if (window.BOOTSTRAP_UNION_FILE && currentAppId && currentAppId !== (previousApp === null || previousApp === void 0 ? void 0 : previousApp.id)) {
|
|
@@ -286,7 +244,7 @@ function _render3() {
|
|
|
286
244
|
if (storyboard !== null && storyboard !== void 0 && storyboard.app) {
|
|
287
245
|
yield fulfilStoryboard(storyboard);
|
|
288
246
|
}
|
|
289
|
-
var currentApp = _classPrivateFieldSet(
|
|
247
|
+
var currentApp = _classPrivateFieldSet(_currentApp, this, storyboard === null || storyboard === void 0 ? void 0 : storyboard.app);
|
|
290
248
|
|
|
291
249
|
// Storyboard maybe re-assigned, e.g. when open launchpad.
|
|
292
250
|
var appChanged = previousApp && currentApp ? previousApp.id !== currentApp.id : previousApp !== currentApp;
|
|
@@ -295,13 +253,13 @@ function _render3() {
|
|
|
295
253
|
|
|
296
254
|
// Set `Router::#currentApp` before calling `getFeatureFlags()`
|
|
297
255
|
var flags = getRuntime().getFeatureFlags();
|
|
298
|
-
var prevRendererContext = _classPrivateFieldGet(
|
|
256
|
+
var prevRendererContext = _classPrivateFieldGet(_rendererContext, this);
|
|
299
257
|
var redirectTo = (to, state) => {
|
|
300
258
|
finishPageView === null || finishPageView === void 0 || finishPageView({
|
|
301
259
|
status: "redirected"
|
|
302
260
|
});
|
|
303
|
-
_classPrivateFieldGet(
|
|
304
|
-
|
|
261
|
+
_classPrivateFieldGet(_rendererContextTrashCan, this).add(prevRendererContext);
|
|
262
|
+
_assertClassBrand(_Router_brand, this, _safeRedirect).call(this, to, state, location);
|
|
305
263
|
};
|
|
306
264
|
var redirectToLogin = () => {
|
|
307
265
|
var to = flags["sso-enabled"] ? "/sso-auth/login" : "/auth/login";
|
|
@@ -323,17 +281,17 @@ function _render3() {
|
|
|
323
281
|
unmountTree(portal);
|
|
324
282
|
|
|
325
283
|
// Note: redirects can lead to multiple trash renderer contexts.
|
|
326
|
-
_classPrivateFieldGet(
|
|
327
|
-
for (var item of _classPrivateFieldGet(
|
|
284
|
+
_classPrivateFieldGet(_rendererContextTrashCan, this).add(prevRendererContext);
|
|
285
|
+
for (var item of _classPrivateFieldGet(_rendererContextTrashCan, this)) {
|
|
328
286
|
if (item) {
|
|
329
287
|
item.dispatchOnUnmount();
|
|
330
288
|
item.dispose();
|
|
331
289
|
}
|
|
332
290
|
}
|
|
333
|
-
_classPrivateFieldGet(
|
|
291
|
+
_classPrivateFieldGet(_rendererContextTrashCan, this).clear();
|
|
334
292
|
hooks === null || hooks === void 0 || (_hooks$messageDispatc = hooks.messageDispatcher) === null || _hooks$messageDispatc === void 0 || _hooks$messageDispatc.reset();
|
|
335
293
|
if (appChanged) {
|
|
336
|
-
_classPrivateFieldSet(
|
|
294
|
+
_classPrivateFieldSet(_previousApp, this, previousApp);
|
|
337
295
|
window.dispatchEvent(new CustomEvent("app.change", {
|
|
338
296
|
detail: {
|
|
339
297
|
previousApp,
|
|
@@ -358,12 +316,12 @@ function _render3() {
|
|
|
358
316
|
return true;
|
|
359
317
|
}
|
|
360
318
|
// Reset redirect count if no redirect is set.
|
|
361
|
-
_classPrivateFieldSet(
|
|
319
|
+
_classPrivateFieldSet(_redirectCount, this, 0);
|
|
362
320
|
},
|
|
363
321
|
mergeMenus: function () {
|
|
364
322
|
var _ref2 = _asyncToGenerator(function* (menuRequests) {
|
|
365
323
|
var menuConfs = yield Promise.all(menuRequests);
|
|
366
|
-
_classPrivateFieldSet(
|
|
324
|
+
_classPrivateFieldSet(_navConfig, _this2, mergeMenuConfs(menuConfs));
|
|
367
325
|
});
|
|
368
326
|
return function mergeMenus(_x5) {
|
|
369
327
|
return _ref2.apply(this, arguments);
|
|
@@ -374,7 +332,7 @@ function _render3() {
|
|
|
374
332
|
redirectToLogin();
|
|
375
333
|
return;
|
|
376
334
|
} else if (error instanceof HttpAbortError) {
|
|
377
|
-
_classPrivateFieldGet(
|
|
335
|
+
_classPrivateFieldGet(_rendererContextTrashCan, this).add(prevRendererContext);
|
|
378
336
|
return;
|
|
379
337
|
} else {
|
|
380
338
|
var noAuthGuardLoginPath = getRuntime().getMiscSettings().noAuthGuardLoginPath;
|
|
@@ -403,11 +361,11 @@ function _render3() {
|
|
|
403
361
|
}
|
|
404
362
|
}
|
|
405
363
|
};
|
|
406
|
-
var rendererContext = _classPrivateFieldSet(
|
|
364
|
+
var rendererContext = _classPrivateFieldSet(_rendererContext, this, new RendererContext("page", {
|
|
407
365
|
routeHelper,
|
|
408
366
|
renderId
|
|
409
367
|
}));
|
|
410
|
-
var runtimeContext = _classPrivateFieldSet(
|
|
368
|
+
var runtimeContext = _classPrivateFieldSet(_runtimeContext, this, {
|
|
411
369
|
app: currentApp,
|
|
412
370
|
location,
|
|
413
371
|
query: new URLSearchParams(location.search),
|
|
@@ -422,7 +380,7 @@ function _render3() {
|
|
|
422
380
|
tplStateStoreMap: new Map(),
|
|
423
381
|
formStateStoreMap: new Map()
|
|
424
382
|
});
|
|
425
|
-
_classPrivateFieldSet(
|
|
383
|
+
_classPrivateFieldSet(_navConfig, this, undefined);
|
|
426
384
|
registerCustomTemplates(storyboard);
|
|
427
385
|
registerStoryboardFunctions((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.functions, currentApp);
|
|
428
386
|
hooks === null || hooks === void 0 || (_hooks$flowApi2 = hooks.flowApi) === null || _hooks$flowApi2 === void 0 || _hooks$flowApi2.collectContract((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.contracts);
|
|
@@ -517,7 +475,7 @@ function _render3() {
|
|
|
517
475
|
});
|
|
518
476
|
devtoolsHookEmit("rendered");
|
|
519
477
|
});
|
|
520
|
-
return
|
|
478
|
+
return _render2.apply(this, arguments);
|
|
521
479
|
}
|
|
522
480
|
function mergeMenuConfs(menuConfs) {
|
|
523
481
|
var navConfig = {
|