@next-core/runtime 1.44.1 → 1.44.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/CustomProcessors.js.map +1 -1
- package/dist/cjs/CustomTemplates.js +7 -11
- package/dist/cjs/CustomTemplates.js.map +1 -1
- package/dist/cjs/createRoot.js +11 -5
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/getPageInfo.js.map +1 -1
- package/dist/cjs/handleHttpError.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js +4 -5
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +4 -7
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +21 -24
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js +4 -7
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/utils.js +3 -3
- package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +3 -3
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/utils.js +2 -2
- package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +11 -14
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +8 -10
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +3 -0
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +14 -14
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/internal/bindListeners.js +2 -3
- package/dist/cjs/internal/bindListeners.js.map +1 -1
- package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/cjs/internal/compute/evaluate.js +4 -4
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/cjs/internal/compute/getStorageItem.js +1 -2
- package/dist/cjs/internal/compute/getStorageItem.js.map +1 -1
- package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/cjs/internal/compute/setRealProperties.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/data/getProviderBrick.js.map +1 -1
- package/dist/cjs/internal/data/realTimeDataInspect.js.map +1 -1
- package/dist/cjs/internal/data/resolveData.js.map +1 -1
- package/dist/cjs/internal/data/resolveDataStore.js +2 -4
- package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
- package/dist/cjs/internal/hasInstalledApp.js.map +1 -1
- package/dist/cjs/internal/historyExtended.js.map +1 -1
- package/dist/cjs/internal/matchPath.js.map +1 -1
- package/dist/cjs/internal/matchRoutes.js.map +1 -1
- package/dist/cjs/internal/matchStoryboard.js +2 -2
- package/dist/cjs/internal/matchStoryboard.js.map +1 -1
- package/dist/cjs/internal/mediaQuery.js.map +1 -1
- package/dist/cjs/internal/mount.js.map +1 -1
- package/dist/cjs/internal/poll.js +3 -3
- package/dist/cjs/internal/poll.js.map +1 -1
- package/dist/cjs/internal/registerAppI18n.js.map +1 -1
- package/dist/cjs/internal/registerCustomTemplates.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +4 -4
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/cjs/internal/setupRootRuntimeContext.js +2 -3
- package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/cjs/isStrictMode.js.map +1 -1
- package/dist/cjs/setLoginStateCookie.js.map +1 -1
- package/dist/cjs/setWatermark.js +4 -4
- package/dist/cjs/setWatermark.js.map +1 -1
- package/dist/cjs/themeAndMode.js +1 -2
- package/dist/cjs/themeAndMode.js.map +1 -1
- package/dist/esm/CustomProcessors.js +5 -5
- package/dist/esm/CustomProcessors.js.map +1 -1
- package/dist/esm/CustomTemplates.js +48 -58
- package/dist/esm/CustomTemplates.js.map +1 -1
- package/dist/esm/Dialog.js +3 -3
- package/dist/esm/Dialog.js.map +1 -1
- package/dist/esm/Notification.js +2 -2
- package/dist/esm/Notification.js.map +1 -1
- package/dist/esm/StoryboardFunctionRegistry.js +18 -18
- package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
- package/dist/esm/createRoot.js +125 -123
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/fetchByProvider.js +3 -10
- package/dist/esm/fetchByProvider.js.map +1 -1
- package/dist/esm/getBasePath.js +2 -2
- package/dist/esm/getBasePath.js.map +1 -1
- package/dist/esm/getPageInfo.js +5 -5
- package/dist/esm/getPageInfo.js.map +1 -1
- package/dist/esm/getRealValue.js +7 -6
- package/dist/esm/getRealValue.js.map +1 -1
- package/dist/esm/getV2RuntimeFromDll.js +1 -1
- package/dist/esm/getV2RuntimeFromDll.js.map +1 -1
- package/dist/esm/handleHttpError.js +11 -11
- package/dist/esm/handleHttpError.js.map +1 -1
- package/dist/esm/history.js +4 -4
- package/dist/esm/history.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js +13 -17
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/constants.js +5 -5
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +41 -42
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +43 -46
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js +16 -18
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/utils.js +8 -8
- package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/esm/internal/FormRenderer/constants.js +2 -2
- package/dist/esm/internal/FormRenderer/constants.js.map +1 -1
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js +28 -23
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js +45 -22
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -1
- package/dist/esm/internal/FormRenderer/utils.js +4 -4
- package/dist/esm/internal/FormRenderer/utils.js.map +1 -1
- package/dist/esm/internal/Renderer.js +517 -577
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +132 -148
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +325 -343
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js +53 -51
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/abortController.js +7 -6
- package/dist/esm/internal/abortController.js.map +1 -1
- package/dist/esm/internal/bindListeners.js +136 -156
- package/dist/esm/internal/bindListeners.js.map +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetFunctions.js +6 -6
- package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetI18n.js +4 -4
- package/dist/esm/internal/compute/WidgetI18n.js.map +1 -1
- package/dist/esm/internal/compute/checkIf.js +10 -23
- package/dist/esm/internal/compute/checkIf.js.map +1 -1
- package/dist/esm/internal/compute/computeRealProperties.js +22 -35
- package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
- package/dist/esm/internal/compute/computeRealValue.js +42 -49
- package/dist/esm/internal/compute/computeRealValue.js.map +1 -1
- package/dist/esm/internal/compute/evaluate.js +71 -75
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/compute/getGeneralGlobals.js +5 -5
- package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/esm/internal/compute/getNextStateOfUseBrick.js +1 -1
- package/dist/esm/internal/compute/getStorageItem.js +2 -3
- package/dist/esm/internal/compute/getStorageItem.js.map +1 -1
- package/dist/esm/internal/compute/getTracks.js +5 -5
- package/dist/esm/internal/compute/getTracks.js.map +1 -1
- package/dist/esm/internal/compute/listenOnTrackingContext.js +8 -11
- package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/esm/internal/compute/markAsComputed.js +2 -2
- package/dist/esm/internal/compute/markAsComputed.js.map +1 -1
- package/dist/esm/internal/compute/setProperties.js +1 -1
- package/dist/esm/internal/compute/setProperties.js.map +1 -1
- package/dist/esm/internal/compute/setRealProperties.js +3 -3
- package/dist/esm/internal/compute/setRealProperties.js.map +1 -1
- package/dist/esm/internal/customizeColorTheme.js +15 -13
- package/dist/esm/internal/customizeColorTheme.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js +161 -177
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/data/getProviderBrick.js +21 -28
- package/dist/esm/internal/data/getProviderBrick.js.map +1 -1
- package/dist/esm/internal/data/realTimeDataInspect.js +5 -5
- package/dist/esm/internal/data/realTimeDataInspect.js.map +1 -1
- package/dist/esm/internal/data/resolveData.js +89 -103
- package/dist/esm/internal/data/resolveData.js.map +1 -1
- package/dist/esm/internal/data/resolveDataStore.js +53 -67
- package/dist/esm/internal/data/resolveDataStore.js.map +1 -1
- package/dist/esm/internal/devtools.js +9 -9
- package/dist/esm/internal/devtools.js.map +1 -1
- package/dist/esm/internal/enums.js +1 -1
- package/dist/esm/internal/fulfilStoryboard.js +15 -28
- package/dist/esm/internal/fulfilStoryboard.js.map +1 -1
- package/dist/esm/internal/hasInstalledApp.js +3 -3
- package/dist/esm/internal/hasInstalledApp.js.map +1 -1
- package/dist/esm/internal/historyExtended.js +40 -37
- package/dist/esm/internal/historyExtended.js.map +1 -1
- package/dist/esm/internal/i18n.js +5 -5
- package/dist/esm/internal/i18n.js.map +1 -1
- package/dist/esm/internal/injected.js +1 -1
- package/dist/esm/internal/injected.js.map +1 -1
- package/dist/esm/internal/insertPreviewRoutes.js +3 -3
- package/dist/esm/internal/insertPreviewRoutes.js.map +1 -1
- package/dist/esm/internal/matchPath.js +17 -17
- package/dist/esm/internal/matchPath.js.map +1 -1
- package/dist/esm/internal/matchRoutes.js +18 -25
- package/dist/esm/internal/matchRoutes.js.map +1 -1
- package/dist/esm/internal/matchStoryboard.js +6 -6
- package/dist/esm/internal/matchStoryboard.js.map +1 -1
- package/dist/esm/internal/mediaQuery.js +11 -11
- package/dist/esm/internal/mediaQuery.js.map +1 -1
- package/dist/esm/internal/mount.js +7 -7
- package/dist/esm/internal/mount.js.map +1 -1
- package/dist/esm/internal/poll.js +53 -60
- package/dist/esm/internal/poll.js.map +1 -1
- package/dist/esm/internal/proxyFactories.js +4 -4
- package/dist/esm/internal/proxyFactories.js.map +1 -1
- package/dist/esm/internal/registerAppI18n.js +6 -6
- package/dist/esm/internal/registerAppI18n.js.map +1 -1
- package/dist/esm/internal/registerCustomTemplates.js +3 -3
- package/dist/esm/internal/registerCustomTemplates.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +140 -146
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/setupRootRuntimeContext.js +6 -7
- package/dist/esm/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/esm/internal/sse.js +24 -53
- package/dist/esm/internal/sse.js.map +1 -1
- package/dist/esm/internal/test_only.js +1 -1
- package/dist/esm/isStrictMode.js +3 -3
- package/dist/esm/isStrictMode.js.map +1 -1
- package/dist/esm/setAppVariable.js +1 -1
- package/dist/esm/setAppVariable.js.map +1 -1
- package/dist/esm/setLoginStateCookie.js +5 -5
- package/dist/esm/setLoginStateCookie.js.map +1 -1
- package/dist/esm/setUIVersion.js +1 -1
- package/dist/esm/setWatermark.js +13 -13
- package/dist/esm/setWatermark.js.map +1 -1
- package/dist/esm/themeAndMode.js +14 -13
- package/dist/esm/themeAndMode.js.map +1 -1
- package/dist/types/tsdoc-metadata.json +1 -1
- package/package.json +12 -12
|
@@ -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","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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","ignoreList":[]}
|
|
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","_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","length","undefined","node","get","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","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","_getNextPortalNode","getNextNormalNode","element","nextSibling","getNextPortalNode","_prevLastNormal$eleme","_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$messageDispatc2","confList","concat","_hooks$messageDispatc","messageDispatcher","channel","runtimeContext","onClose","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","observers","delete","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","getSpecifiedNormalNode","next","BRICK","getSpecifiedPortalNode","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n SlotConfOfRoutes,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { Action, Location } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderNode,\n RenderReturnNode,\n RenderRoot,\n} from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { hooks } from \"./Runtime.js\";\nimport type { RenderOutput } from \"./Renderer.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\ntype LocationChangeCallback = (\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n) => Promise<boolean | null>;\n\ninterface IncrementalRenderState {\n parentRoutes: RouteConf[];\n callback: LocationChangeCallback;\n}\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n \"onMessage\",\n \"onMessageClose\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n routeHelper?: RouteHelper;\n renderId?: string;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n 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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","ignoreList":[]}
|