@next-core/runtime 1.38.0 → 1.38.1
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.
|
@@ -155,12 +155,11 @@ class RendererContext {
|
|
|
155
155
|
* ignore normal rendering.
|
|
156
156
|
*/
|
|
157
157
|
performIncrementalRender(slotConf, parentRoutes, callback) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
158
|
+
// Override stale incremental render callbacks
|
|
159
|
+
_classPrivateFieldGet(_incrementalRenderStates, this).set(slotConf, {
|
|
160
|
+
parentRoutes,
|
|
161
|
+
callback
|
|
162
|
+
});
|
|
164
163
|
}
|
|
165
164
|
registerBrickLifeCycle(brick, lifeCycle) {
|
|
166
165
|
if (!lifeCycle) {
|
|
@@ -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","_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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"}
|
|
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 // Override stale incremental render callbacks\n this.#incrementalRenderStates.set(slotConf, { parentRoutes, callback });\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n if (!this.#memoized) {\n this.#memoized = new WeakMap();\n }\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n let mem = this.#memoized.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoized.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n reRender(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoized!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n let insertBeforeChild: ChildNode | null;\n const insertPortalBeforeChildCandidates: ChildNode[] = [];\n if (prevNode?.tag === RenderTag.PLACEHOLDER) {\n insertBeforeChild = getNextNormalNode(prevNode)?.element ?? null;\n // Todo(steve): handle portal bricks from useBrick.\n const nextSibling = getNextPortalNode(prevNode)?.element;\n if (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n }\n } else {\n insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n let nextSibling = prevLastPortal?.element?.nextSibling;\n while (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n // Collect all portal bricks from useBrick, until found a normal portal\n // brick other than from useBrick.\n // Because useBrick could be removed during unmount.\n if (\n !(nextSibling instanceof HTMLElement && nextSibling.tagName === \"DIV\")\n ) {\n break;\n }\n nextSibling = nextSibling.nextSibling;\n }\n }\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderChildNode | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n // istanbul ignore next\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\n \"Cannot find render root node. This is a bug of Brick Next, please report it.\"\n );\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n let insertPortalBeforeChild: ChildNode | null = null;\n for (const candidate of insertPortalBeforeChildCandidates) {\n // Those candidates from useBrick could be removed during unmount.\n // So we need to check if they are still in the portal.\n if (portal.contains(candidate)) {\n insertPortalBeforeChild = candidate;\n break;\n }\n }\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoized = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#incrementalRenderStates.clear();\n this.#memoizedMenuRequestNodeMap = undefined;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(\n node: RenderChildNode | undefined\n): RenderChildNode | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, false);\n}\n\nfunction getNextNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, true);\n}\n\nfunction getSpecifiedNormalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && !current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, false);\n}\n\nfunction getNextPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, true);\n}\n\nfunction getSpecifiedPortalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderChildNode | undefined,\n to: RenderChildNode | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n range.add(current);\n }\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
|
|
@@ -157,12 +157,11 @@ export class RendererContext {
|
|
|
157
157
|
* ignore normal rendering.
|
|
158
158
|
*/
|
|
159
159
|
performIncrementalRender(slotConf, parentRoutes, callback) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
160
|
+
// Override stale incremental render callbacks
|
|
161
|
+
_classPrivateFieldGet(_incrementalRenderStates, this).set(slotConf, {
|
|
162
|
+
parentRoutes,
|
|
163
|
+
callback
|
|
164
|
+
});
|
|
166
165
|
}
|
|
167
166
|
registerBrickLifeCycle(brick, lifeCycle) {
|
|
168
167
|
if (!lifeCycle) {
|
|
@@ -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","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_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","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","_classPrivateFieldGet","set","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","_arguments","arguments","_this","_asyncToGenerator","length","undefined","node","get","previousSibling","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","_this2","finalResult","shouldIgnoreRoutes","parentRoutes","callback","values","reverse","parentRoute","includes","result","slice","performIncrementalRender","slotConf","has","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","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","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","_assertClassBrand","_unmountBricks","call","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","observer","disconnect","clear","removeEventListener","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","_brick$element","_brick$element2","observers","delete","$$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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"}
|
|
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","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_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","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","_classPrivateFieldGet","set","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","_arguments","arguments","_this","_asyncToGenerator","length","undefined","node","get","previousSibling","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","_this2","finalResult","shouldIgnoreRoutes","parentRoutes","callback","values","reverse","parentRoute","includes","result","slice","performIncrementalRender","slotConf","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","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","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","_assertClassBrand","_unmountBricks","call","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","observer","disconnect","clear","removeEventListener","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","delete","$$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 // Override stale incremental render callbacks\n this.#incrementalRenderStates.set(slotConf, { parentRoutes, callback });\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n if (!this.#memoized) {\n this.#memoized = new WeakMap();\n }\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n let mem = this.#memoized.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoized.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n reRender(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoized!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n let insertBeforeChild: ChildNode | null;\n const insertPortalBeforeChildCandidates: ChildNode[] = [];\n if (prevNode?.tag === RenderTag.PLACEHOLDER) {\n insertBeforeChild = getNextNormalNode(prevNode)?.element ?? null;\n // Todo(steve): handle portal bricks from useBrick.\n const nextSibling = getNextPortalNode(prevNode)?.element;\n if (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n }\n } else {\n insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n let nextSibling = prevLastPortal?.element?.nextSibling;\n while (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n // Collect all portal bricks from useBrick, until found a normal portal\n // brick other than from useBrick.\n // Because useBrick could be removed during unmount.\n if (\n !(nextSibling instanceof HTMLElement && nextSibling.tagName === \"DIV\")\n ) {\n break;\n }\n nextSibling = nextSibling.nextSibling;\n }\n }\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderChildNode | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n // istanbul ignore next\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\n \"Cannot find render root node. This is a bug of Brick Next, please report it.\"\n );\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n let insertPortalBeforeChild: ChildNode | null = null;\n for (const candidate of insertPortalBeforeChildCandidates) {\n // Those candidates from useBrick could be removed during unmount.\n // So we need to check if they are still in the portal.\n if (portal.contains(candidate)) {\n insertPortalBeforeChild = candidate;\n break;\n }\n }\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoized = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#incrementalRenderStates.clear();\n this.#memoizedMenuRequestNodeMap = undefined;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(\n node: RenderChildNode | undefined\n): RenderChildNode | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, false);\n}\n\nfunction getNextNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, true);\n}\n\nfunction getSpecifiedNormalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && !current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, false);\n}\n\nfunction getNextPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, true);\n}\n\nfunction getSpecifiedPortalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderChildNode | undefined,\n to: RenderChildNode | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n range.add(current);\n }\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/runtime",
|
|
3
|
-
"version": "1.38.
|
|
3
|
+
"version": "1.38.1",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"@next-core/build-next-libs": "^1.0.13",
|
|
67
67
|
"@next-core/test-next": "^1.0.16"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "c3e01087858c5c563f1c6a151d55e28db825fe13"
|
|
70
70
|
}
|