@next-core/runtime 1.22.4 → 1.22.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/cjs/index.js.map +1 -1
  2. package/dist/cjs/internal/Renderer.js +26 -22
  3. package/dist/cjs/internal/Renderer.js.map +1 -1
  4. package/dist/cjs/internal/RendererContext.js +36 -7
  5. package/dist/cjs/internal/RendererContext.js.map +1 -1
  6. package/dist/cjs/internal/Router.js +19 -8
  7. package/dist/cjs/internal/Router.js.map +1 -1
  8. package/dist/cjs/internal/Runtime.js.map +1 -1
  9. package/dist/cjs/internal/enums.js +1 -0
  10. package/dist/cjs/internal/enums.js.map +1 -1
  11. package/dist/cjs/internal/interfaces.js.map +1 -1
  12. package/dist/cjs/internal/mount.js +41 -39
  13. package/dist/cjs/internal/mount.js.map +1 -1
  14. package/dist/cjs/internal/secret_internals.js +5 -2
  15. package/dist/cjs/internal/secret_internals.js.map +1 -1
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/internal/Renderer.js +47 -38
  18. package/dist/esm/internal/Renderer.js.map +1 -1
  19. package/dist/esm/internal/RendererContext.js +36 -7
  20. package/dist/esm/internal/RendererContext.js.map +1 -1
  21. package/dist/esm/internal/Router.js +19 -7
  22. package/dist/esm/internal/Router.js.map +1 -1
  23. package/dist/esm/internal/Runtime.js.map +1 -1
  24. package/dist/esm/internal/enums.js +1 -0
  25. package/dist/esm/internal/enums.js.map +1 -1
  26. package/dist/esm/internal/interfaces.js.map +1 -1
  27. package/dist/esm/internal/mount.js +41 -39
  28. package/dist/esm/internal/mount.js.map +1 -1
  29. package/dist/esm/internal/secret_internals.js +5 -2
  30. package/dist/esm/internal/secret_internals.js.map +1 -1
  31. package/dist/types/index.d.ts +1 -1
  32. package/dist/types/internal/Renderer.d.ts +6 -5
  33. package/dist/types/internal/RendererContext.d.ts +5 -5
  34. package/dist/types/internal/Runtime.d.ts +8 -0
  35. package/dist/types/internal/enums.d.ts +2 -1
  36. package/dist/types/internal/interfaces.d.ts +11 -5
  37. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","path","menuRequest","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","controlOutput","scopedStores","postAsyncRender","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref3","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","return","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref4","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","routeSlotIndexes","Set","entries","_ref6","childSlotId","slotConf","flags","add","performIncrementalRender","_ref7","location","homepage","pathname","every","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x32","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const controlOutput = await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n controlOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n controlOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","output","getEmptyRenderOutput","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","_objectSpread","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","menuRequests","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","renderControlNode","_ref2","_rawOutput$node","rawOutput","PLACEHOLDER","return","_x32","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref3","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref4","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref5","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref6","routeSlotIndexes","Set","entries","_ref7","childSlotId","slotConf","flags","add","performIncrementalRender","_ref8","location","homepage","pathname","every","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x33","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderChildNode,\n RenderReturnNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderChildNode;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n path?: string;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderReturnNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n output.path = matched.match.path;\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderReturnNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return getEmptyRenderOutput();\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return getEmptyRenderOutput();\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n const rawOutput = await lowerLevelRenderControlNode(runtimeContext);\n rawOutput.node ??= {\n tag: RenderTag.PLACEHOLDER,\n return: returnNode,\n };\n return rawOutput;\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput =\n await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n reControlledOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n reControlledOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderReturnNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return {\n blockingList: [],\n menuRequests: [],\n };\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
@@ -200,7 +200,6 @@ export class RendererContext {
200
200
  });
201
201
  }
202
202
  reRender(slotId, keyPath, node, returnNode) {
203
- var _prevLastNormal$eleme, _prevLastNormal$eleme2, _prevLastPortal$eleme, _prevLastPortal$eleme2;
204
203
  var memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
205
204
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
206
205
  var memoized = _classPrivateFieldGet(this, _memoized).get(returnNode).get(memKey);
@@ -210,8 +209,17 @@ export class RendererContext {
210
209
  lastNormal: prevLastNormal,
211
210
  lastPortal: prevLastPortal
212
211
  } = memoized;
213
- var insertBeforeChild = (_prevLastNormal$eleme = prevLastNormal === null || prevLastNormal === void 0 || (_prevLastNormal$eleme2 = prevLastNormal.element) === null || _prevLastNormal$eleme2 === void 0 ? void 0 : _prevLastNormal$eleme2.nextSibling) !== null && _prevLastNormal$eleme !== void 0 ? _prevLastNormal$eleme : null;
214
- var insertPortalBeforeChild = (_prevLastPortal$eleme = prevLastPortal === null || prevLastPortal === void 0 || (_prevLastPortal$eleme2 = prevLastPortal.element) === null || _prevLastPortal$eleme2 === void 0 ? void 0 : _prevLastPortal$eleme2.nextSibling) !== null && _prevLastPortal$eleme !== void 0 ? _prevLastPortal$eleme : null;
212
+ var insertBeforeChild;
213
+ var insertPortalBeforeChild;
214
+ if ((prevNode === null || prevNode === void 0 ? void 0 : prevNode.tag) === RenderTag.PLACEHOLDER) {
215
+ var _getNextNormalNode$el, _getNextNormalNode, _getNextPortalNode$el, _getNextPortalNode;
216
+ insertBeforeChild = (_getNextNormalNode$el = (_getNextNormalNode = getNextNormalNode(prevNode)) === null || _getNextNormalNode === void 0 ? void 0 : _getNextNormalNode.element) !== null && _getNextNormalNode$el !== void 0 ? _getNextNormalNode$el : null;
217
+ insertPortalBeforeChild = (_getNextPortalNode$el = (_getNextPortalNode = getNextPortalNode(prevNode)) === null || _getNextPortalNode === void 0 ? void 0 : _getNextPortalNode.element) !== null && _getNextPortalNode$el !== void 0 ? _getNextPortalNode$el : null;
218
+ } else {
219
+ var _prevLastNormal$eleme, _prevLastNormal$eleme2, _prevLastPortal$eleme, _prevLastPortal$eleme2;
220
+ insertBeforeChild = (_prevLastNormal$eleme = prevLastNormal === null || prevLastNormal === void 0 || (_prevLastNormal$eleme2 = prevLastNormal.element) === null || _prevLastNormal$eleme2 === void 0 ? void 0 : _prevLastNormal$eleme2.nextSibling) !== null && _prevLastNormal$eleme !== void 0 ? _prevLastNormal$eleme : null;
221
+ insertPortalBeforeChild = (_prevLastPortal$eleme = prevLastPortal === null || prevLastPortal === void 0 || (_prevLastPortal$eleme2 = prevLastPortal.element) === null || _prevLastPortal$eleme2 === void 0 ? void 0 : _prevLastPortal$eleme2.nextSibling) !== null && _prevLastPortal$eleme !== void 0 ? _prevLastPortal$eleme : null;
222
+ }
215
223
  var last = getLastNode(node);
216
224
  memoized.node = node;
217
225
  memoized.last = last;
@@ -278,8 +286,9 @@ export class RendererContext {
278
286
  while (root && root.return) {
279
287
  root = root.return;
280
288
  }
289
+ // istanbul ignore next
281
290
  if (((_root = root) === null || _root === void 0 ? void 0 : _root.tag) !== RenderTag.ROOT) {
282
- throw new Error("Cannot find render root node");
291
+ throw new Error("Cannot find render root node. This is a bug of Brick Next, please report it.");
283
292
  }
284
293
  var portal = typeof root.createPortal === "function" ? root.createPortal() : root.createPortal;
285
294
  portal.insertBefore(portalFragment, insertPortalBeforeChild);
@@ -496,10 +505,19 @@ function getLastNode(node) {
496
505
  return last;
497
506
  }
498
507
  function getLastNormalNode(node) {
508
+ return getSpecifiedNormalNode(node, false);
509
+ }
510
+ function getNextNormalNode(node) {
511
+ return getSpecifiedNormalNode(node, true);
512
+ }
513
+ function getSpecifiedNormalNode(node, next) {
499
514
  var last;
500
515
  var current = node;
501
516
  while (current) {
502
- if (!current.portal) {
517
+ if (current.tag === RenderTag.BRICK && !current.portal) {
518
+ if (next) {
519
+ return current;
520
+ }
503
521
  last = current;
504
522
  }
505
523
  current = current.sibling;
@@ -507,10 +525,19 @@ function getLastNormalNode(node) {
507
525
  return last;
508
526
  }
509
527
  function getLastPortalNode(node) {
528
+ return getSpecifiedPortalNode(node, false);
529
+ }
530
+ function getNextPortalNode(node) {
531
+ return getSpecifiedPortalNode(node, true);
532
+ }
533
+ function getSpecifiedPortalNode(node, next) {
510
534
  var last;
511
535
  var current = node;
512
536
  while (current) {
513
- if (current.portal) {
537
+ if (current.tag === RenderTag.BRICK && current.portal) {
538
+ if (next) {
539
+ return current;
540
+ }
514
541
  last = current;
515
542
  }
516
543
  if (current.child) {
@@ -535,7 +562,9 @@ function getBrickRange(from, to) {
535
562
  var range = new Set();
536
563
  var current = from;
537
564
  while (current) {
538
- range.add(current);
565
+ if (current.tag === RenderTag.BRICK) {
566
+ range.add(current);
567
+ }
539
568
  if (current.child) {
540
569
  current = current.child;
541
570
  } else if (current === to) {
@@ -1 +1 @@
1
- {"version":3,"file":"RendererContext.js","names":["isEmpty","remove","listenerFactory","getHistory","getReadOnlyProxy","mediaEventTarget","mountTree","RenderTag","unbindTemplateProxy","hooks","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_allMenuRequests","_memoizedMenuRequestMap","_locationChangeCallbacks","_unmountBricks","WeakSet","_initializeRerenderBricks","_dispatchGeneralLifeCycle","_addObserver","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec","_defineProperty","_classPrivateFieldInitSpec","writable","value","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet","routeHelper","setInitialMenuRequests","menuRequests","memoizeMenuRequests","route","_classPrivateFieldGet","set","reMergeMenuRequests","routes","currentRoute","_this","_asyncToGenerator","previousMenuRequest","previousRoute","get","mergedMenuRequests","previousIndex","indexOf","length","push","splice","delete","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","_this2","results","Promise","all","map","callback","some","result","performIncrementalRender","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","node","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","_prevLastPortal$eleme2","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","element","nextSibling","insertPortalBeforeChild","prevSibling","current","child","sibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","tag","ROOT","container","createPortal","return","removeBricks","getBrickRange","_classPrivateMethodGet","_unmountBricks2","call","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","newBricks","_initializeRerenderBricks2","dispose","list","Object","values","observer","disconnect","clear","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle2","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","anchor","substring","initializeScrollIntoView","conf","_addObserver2","initializeMediaChange","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc","_loop","_loop2","_hooks$messageDispatc2","messageDispatcher","channel","runtimeContext","concat","confList","onClose","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","observers","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","includes","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { Action, Location } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type { RenderBrick, RenderNode, RenderRoot } 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) => Promise<boolean>;\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n \"onMessage\",\n \"onMessageClose\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n routeHelper?: RouteHelper;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n catch: (\n error: unknown,\n returnNode: RenderNode\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 #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 }\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?: RenderBrick;\n last?: RenderBrick;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n #allMenuRequests?: Promise<StaticMenuConf>[];\n #memoizedMenuRequestMap?: WeakMap<RouteConf, Promise<StaticMenuConf>>;\n\n setInitialMenuRequests(menuRequests: Promise<StaticMenuConf>[]) {\n this.#allMenuRequests = menuRequests;\n }\n\n memoizeMenuRequests(\n route: RouteConf,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n if (!this.#memoizedMenuRequestMap) {\n this.#memoizedMenuRequestMap = new WeakMap();\n }\n this.#memoizedMenuRequestMap.set(route, menuRequests[0]);\n }\n\n async reMergeMenuRequests(\n routes: RouteConf[],\n currentRoute: RouteConf | undefined,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n let previousMenuRequest: Promise<StaticMenuConf> | undefined;\n let previousRoute: RouteConf | undefined;\n for (const route of routes) {\n previousMenuRequest = this.#memoizedMenuRequestMap!.get(route);\n if (previousMenuRequest) {\n previousRoute = route;\n break;\n }\n }\n const mergedMenuRequests = this.#allMenuRequests!;\n const previousIndex = previousMenuRequest\n ? mergedMenuRequests.indexOf(previousMenuRequest)\n : -1;\n if (previousIndex === -1) {\n if (!menuRequests.length) {\n return;\n }\n mergedMenuRequests.push(...menuRequests);\n } else {\n mergedMenuRequests.splice(\n previousIndex,\n mergedMenuRequests.length - previousIndex,\n ...menuRequests\n );\n }\n if (previousRoute && previousRoute !== currentRoute) {\n this.#memoizedMenuRequestMap!.delete(previousRoute);\n }\n await this.#routeHelper!.mergeMenus(mergedMenuRequests);\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n reCatch(error: unknown, returnNode: RenderNode) {\n return this.#routeHelper!.catch(error, returnNode);\n }\n\n #locationChangeCallbacks: LocationChangeCallback[] = [];\n\n async didPerformIncrementalRender(location: Location<NextHistoryState>) {\n const results = await Promise.all(\n this.#locationChangeCallbacks.map((callback) => callback(location))\n );\n return results.some((result) => result);\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(callback: LocationChangeCallback) {\n this.#locationChangeCallbacks.push(callback);\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderBrick | undefined,\n returnNode: RenderNode\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: RenderBrick | undefined,\n returnNode: RenderNode\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 const insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n const insertPortalBeforeChild =\n prevLastPortal?.element?.nextSibling ?? null;\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: RenderBrick | 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 if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\"Cannot find render root node\");\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoized = undefined;\n this.#allMenuRequests = undefined;\n this.#memoizedMenuRequestMap = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#locationChangeCallbacks.length = 0;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(node: RenderBrick | undefined): RenderBrick | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (!current.portal) {\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.portal) {\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: RenderNode | 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: RenderBrick | undefined,\n to: RenderBrick | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n range.add(current);\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: RenderNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"RendererContext.js","names":["isEmpty","remove","listenerFactory","getHistory","getReadOnlyProxy","mediaEventTarget","mountTree","RenderTag","unbindTemplateProxy","hooks","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_allMenuRequests","_memoizedMenuRequestMap","_locationChangeCallbacks","_unmountBricks","WeakSet","_initializeRerenderBricks","_dispatchGeneralLifeCycle","_addObserver","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec","_defineProperty","_classPrivateFieldInitSpec","writable","value","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet","routeHelper","setInitialMenuRequests","menuRequests","memoizeMenuRequests","route","_classPrivateFieldGet","set","reMergeMenuRequests","routes","currentRoute","_this","_asyncToGenerator","previousMenuRequest","previousRoute","get","mergedMenuRequests","previousIndex","indexOf","length","push","splice","delete","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","_this2","results","Promise","all","map","callback","some","result","performIncrementalRender","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","node","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","insertPortalBeforeChild","tag","PLACEHOLDER","_getNextNormalNode$el","_getNextNormalNode","_getNextPortalNode$el","_getNextPortalNode","getNextNormalNode","element","getNextPortalNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","_prevLastPortal$eleme2","nextSibling","prevSibling","current","child","sibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","ROOT","container","createPortal","return","removeBricks","getBrickRange","_classPrivateMethodGet","_unmountBricks2","call","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","newBricks","_initializeRerenderBricks2","dispose","list","Object","values","observer","disconnect","clear","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle2","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","anchor","substring","initializeScrollIntoView","conf","_addObserver2","initializeMediaChange","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc","_loop","_loop2","_hooks$messageDispatc2","messageDispatcher","channel","runtimeContext","concat","confList","onClose","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","observers","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","includes","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","getSpecifiedNormalNode","next","BRICK","getSpecifiedPortalNode","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { Action, Location } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type {\n RenderBrick,\n RenderChildNode,\n RenderNode,\n RenderReturnNode,\n RenderRoot,\n} from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { hooks } from \"./Runtime.js\";\nimport type { RenderOutput } from \"./Renderer.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\ntype LocationChangeCallback = (\n location: Location<NextHistoryState>\n) => Promise<boolean>;\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n \"onMessage\",\n \"onMessageClose\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n routeHelper?: RouteHelper;\n}\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 #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 }\n\n #memoizedLifeCycle: MemoizedLifeCycle<\n Required<\n Pick<\n BrickLifeCycle,\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onScrollIntoView\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMessage\"\n | \"onMessageClose\"\n >\n >\n > = {\n onBeforePageLoad: [],\n onPageLoad: [],\n onPageLeave: [],\n onBeforePageLeave: [],\n onAnchorLoad: [],\n onAnchorUnload: [],\n onMediaChange: [],\n onScrollIntoView: [],\n onMount: [],\n onUnmount: [],\n onMessage: [],\n onMessageClose: [],\n };\n #observers = new Map<RenderBrick, IntersectionObserver[]>();\n #mediaListener: EventListener | undefined;\n\n #arbitraryLifeCycle = new Map<string, Set<() => void>>();\n\n #memoized?: WeakMap<\n RenderNode,\n Map<\n string,\n {\n node?: RenderChildNode;\n last?: RenderChildNode;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n #allMenuRequests?: Promise<StaticMenuConf>[];\n #memoizedMenuRequestMap?: WeakMap<RouteConf, Promise<StaticMenuConf>>;\n\n setInitialMenuRequests(menuRequests: Promise<StaticMenuConf>[]) {\n this.#allMenuRequests = menuRequests;\n }\n\n memoizeMenuRequests(\n route: RouteConf,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n if (!this.#memoizedMenuRequestMap) {\n this.#memoizedMenuRequestMap = new WeakMap();\n }\n this.#memoizedMenuRequestMap.set(route, menuRequests[0]);\n }\n\n async reMergeMenuRequests(\n routes: RouteConf[],\n currentRoute: RouteConf | undefined,\n menuRequests: Promise<StaticMenuConf>[]\n ) {\n let previousMenuRequest: Promise<StaticMenuConf> | undefined;\n let previousRoute: RouteConf | undefined;\n for (const route of routes) {\n previousMenuRequest = this.#memoizedMenuRequestMap!.get(route);\n if (previousMenuRequest) {\n previousRoute = route;\n break;\n }\n }\n const mergedMenuRequests = this.#allMenuRequests!;\n const previousIndex = previousMenuRequest\n ? mergedMenuRequests.indexOf(previousMenuRequest)\n : -1;\n if (previousIndex === -1) {\n if (!menuRequests.length) {\n return;\n }\n mergedMenuRequests.push(...menuRequests);\n } else {\n mergedMenuRequests.splice(\n previousIndex,\n mergedMenuRequests.length - previousIndex,\n ...menuRequests\n );\n }\n if (previousRoute && previousRoute !== currentRoute) {\n this.#memoizedMenuRequestMap!.delete(previousRoute);\n }\n await this.#routeHelper!.mergeMenus(mergedMenuRequests);\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode);\n }\n\n #locationChangeCallbacks: LocationChangeCallback[] = [];\n\n async didPerformIncrementalRender(location: Location<NextHistoryState>) {\n const results = await Promise.all(\n this.#locationChangeCallbacks.map((callback) => callback(location))\n );\n return results.some((result) => result);\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(callback: LocationChangeCallback) {\n this.#locationChangeCallbacks.push(callback);\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n if (!this.#memoized) {\n this.#memoized = new WeakMap();\n }\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n let mem = this.#memoized.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoized.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n reRender(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoized!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n let insertBeforeChild: ChildNode | null;\n let insertPortalBeforeChild: ChildNode | null;\n if (prevNode?.tag === RenderTag.PLACEHOLDER) {\n insertBeforeChild = getNextNormalNode(prevNode)?.element ?? null;\n insertPortalBeforeChild = getNextPortalNode(prevNode)?.element ?? null;\n } else {\n insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n insertPortalBeforeChild = prevLastPortal?.element?.nextSibling ?? null;\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 portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoized = undefined;\n this.#allMenuRequests = undefined;\n this.#memoizedMenuRequestMap = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#locationChangeCallbacks.length = 0;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(\n node: RenderChildNode | undefined\n): RenderChildNode | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, false);\n}\n\nfunction getNextNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, true);\n}\n\nfunction getSpecifiedNormalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && !current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, false);\n}\n\nfunction getNextPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, true);\n}\n\nfunction getSpecifiedPortalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderChildNode | undefined,\n to: RenderChildNode | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n range.add(current);\n }\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}