@next-core/runtime 1.20.1 → 1.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -280,20 +280,6 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
|
|
|
280
280
|
output.blockingList.push(catchLoadBrick((0, _loader.enqueueStableLoadBricks)([brickName], (0, _Runtime.getBrickPackages)()), brickName, rendererContext.unknownBricks));
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
|
-
const brick = {
|
|
284
|
-
tag: _enums.RenderTag.BRICK,
|
|
285
|
-
type: tplTagName || brickName,
|
|
286
|
-
return: returnNode,
|
|
287
|
-
slotId,
|
|
288
|
-
events: brickConf.events,
|
|
289
|
-
runtimeContext,
|
|
290
|
-
portal: brickConf.portal,
|
|
291
|
-
iid: brickConf.iid,
|
|
292
|
-
ref: brickConf.ref
|
|
293
|
-
};
|
|
294
|
-
output.node = brick;
|
|
295
|
-
|
|
296
|
-
// const confProps = brickConf.properties;
|
|
297
283
|
let formData;
|
|
298
284
|
let confProps;
|
|
299
285
|
if (brickName === _constants2.FORM_RENDERER) {
|
|
@@ -305,19 +291,52 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
|
|
|
305
291
|
} else {
|
|
306
292
|
confProps = brickConf.properties;
|
|
307
293
|
}
|
|
308
|
-
|
|
309
|
-
// 加载构件属性和加载子构件等任务,可以并行。
|
|
310
|
-
const blockingList = [];
|
|
311
294
|
const trackingContextList = [];
|
|
312
295
|
const asyncPropertyEntries = (0, _computeRealProperties.asyncComputeRealPropertyEntries)(confProps, runtimeContext, trackingContextList);
|
|
313
296
|
const computedPropsFromHost = brickConf[_constants.symbolForAsyncComputedPropsFromHost];
|
|
314
297
|
if (computedPropsFromHost) {
|
|
315
298
|
asyncPropertyEntries.push(...computedPropsFromHost);
|
|
316
299
|
}
|
|
300
|
+
const isScript = brickName === "script";
|
|
301
|
+
if (isScript || brickName === "link") {
|
|
302
|
+
const props = await (0, _computeRealProperties.constructAsyncProperties)(asyncPropertyEntries);
|
|
303
|
+
if (isScript ? props.src : props.rel === "stylesheet" && props.href) {
|
|
304
|
+
var _window$PUBLIC_ROOT;
|
|
305
|
+
const prefix = (_window$PUBLIC_ROOT = window.PUBLIC_ROOT) !== null && _window$PUBLIC_ROOT !== void 0 ? _window$PUBLIC_ROOT : "";
|
|
306
|
+
if (isScript) {
|
|
307
|
+
const {
|
|
308
|
+
src,
|
|
309
|
+
...attrs
|
|
310
|
+
} = props;
|
|
311
|
+
await (0, _loader.loadScript)(src, prefix, attrs);
|
|
312
|
+
} else {
|
|
313
|
+
const {
|
|
314
|
+
href,
|
|
315
|
+
...attrs
|
|
316
|
+
} = props;
|
|
317
|
+
await (0, _loader.loadStyle)(href, prefix, attrs);
|
|
318
|
+
}
|
|
319
|
+
return output;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
const brick = {
|
|
323
|
+
tag: _enums.RenderTag.BRICK,
|
|
324
|
+
type: tplTagName || brickName,
|
|
325
|
+
return: returnNode,
|
|
326
|
+
slotId,
|
|
327
|
+
events: brickConf.events,
|
|
328
|
+
runtimeContext,
|
|
329
|
+
portal: brickConf.portal,
|
|
330
|
+
iid: brickConf.iid,
|
|
331
|
+
ref: brickConf.ref
|
|
332
|
+
};
|
|
333
|
+
output.node = brick;
|
|
334
|
+
|
|
335
|
+
// 加载构件属性和加载子构件等任务,可以并行。
|
|
336
|
+
const blockingList = [];
|
|
317
337
|
const loadProperties = async () => {
|
|
318
338
|
brick.properties = await (0, _computeRealProperties.constructAsyncProperties)(asyncPropertyEntries);
|
|
319
339
|
(0, _listenOnTrackingContext.listenOnTrackingContext)(brick, trackingContextList);
|
|
320
|
-
return brick.properties;
|
|
321
340
|
};
|
|
322
341
|
blockingList.push(loadProperties());
|
|
323
342
|
rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.js","names":["_loader","require","_cook","_general","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_evaluate","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","matchRoutes","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","match","ctxStore","define","context","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","key","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","symbolForTplStateStoreId","formStateStoreId","symbolForFormStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","ensureValidControlBrick","renderControlNode","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","test","customTemplates","get","catchLoadBrick","unknownBricks","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","customElements","FORM_RENDERER","FormRendererElement","HTMLElement","$$typeof","enqueueStableLoadBricks","tag","RenderTag","BRICK","return","events","portal","iid","ref","formData","confProps","_brickConf$properties","properties","trackingContextList","asyncPropertyEntries","asyncComputeRealPropertyEntries","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","loadProperties","constructAsyncProperties","listenOnTrackingContext","registerBrickLifeCycle","lifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","undefined","childRuntimeContext","loadChildren","entries","childSlotId","slotConf","childrenOutput","child","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","i","j","flat","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","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 loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\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 { matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\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\";\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 | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\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 runtimeContext.ctxStore.define(route.context, runtimeContext);\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 switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\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 slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\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 slotId?: string,\n key?: 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 slotId,\n key,\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`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\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 () => {\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 slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\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 output = await renderControlNode();\n output.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\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 return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoadBrick(\n loadBricksImperatively([brickName], getBrickPackages()),\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 catchLoadBrick(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n brickName,\n rendererContext.unknownBricks\n )\n );\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 // const confProps = brickConf.properties;\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 // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\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 loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n return brick.properties;\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 } 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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\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 slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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 catchLoadBrick(\n promise: Promise<unknown>,\n brickName: string,\n unknownBricks: RendererContext[\"unknownBricks\"]\n) {\n return unknownBricks === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load brick \"${brickName}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Renderer.js","names":["_loader","require","_cook","_general","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_evaluate","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","matchRoutes","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","match","ctxStore","define","context","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","key","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","symbolForTplStateStoreId","formStateStoreId","symbolForFormStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","ensureValidControlBrick","renderControlNode","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","test","customTemplates","get","catchLoadBrick","unknownBricks","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","customElements","FORM_RENDERER","FormRendererElement","HTMLElement","$$typeof","enqueueStableLoadBricks","formData","confProps","_brickConf$properties","properties","trackingContextList","asyncPropertyEntries","asyncComputeRealPropertyEntries","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","isScript","props","constructAsyncProperties","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","loadScript","loadStyle","tag","RenderTag","BRICK","return","events","portal","iid","ref","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","lifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","undefined","childRuntimeContext","loadChildren","entries","childSlotId","slotConf","childrenOutput","child","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","i","j","flat","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","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 loadBricksImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\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 { matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\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\";\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 | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\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 runtimeContext.ctxStore.define(route.context, runtimeContext);\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 switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\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 slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\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 slotId?: string,\n key?: 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 slotId,\n key,\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`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\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 () => {\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 slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\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 output = await renderControlNode();\n output.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\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 return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoadBrick(\n loadBricksImperatively([brickName], getBrickPackages()),\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 catchLoadBrick(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\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 loadScript(src as string, prefix, attrs);\n } else {\n const { href, ...attrs } = props;\n await loadStyle(href as string, prefix, attrs);\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 // 加载构件属性和加载子构件等任务,可以并行。\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 } 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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\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 slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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 catchLoadBrick(\n promise: Promise<unknown>,\n brickName: string,\n unknownBricks: RendererContext[\"unknownBricks\"]\n) {\n return unknownBricks === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load brick \"${brickName}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
|
|
@@ -3,8 +3,10 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
|
|
|
3
3
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
4
4
|
var _excluded = ["blockingList", "node", "menuRequests", "hasTrackingControls"],
|
|
5
5
|
_excluded2 = ["if", "permissionsPreCheck"],
|
|
6
|
-
_excluded3 = ["formData"]
|
|
7
|
-
|
|
6
|
+
_excluded3 = ["formData"],
|
|
7
|
+
_excluded4 = ["src"],
|
|
8
|
+
_excluded5 = ["href"];
|
|
9
|
+
import { enqueueStableLoadBricks, loadBricksImperatively, loadScript, loadStyle } from "@next-core/loader";
|
|
8
10
|
import { isTrackAll } from "@next-core/cook";
|
|
9
11
|
import { hasOwnProperty } from "@next-core/utils/general";
|
|
10
12
|
import { debounce } from "lodash";
|
|
@@ -299,20 +301,6 @@ function _renderBrick() {
|
|
|
299
301
|
output.blockingList.push(catchLoadBrick(enqueueStableLoadBricks([brickName], getBrickPackages()), brickName, rendererContext.unknownBricks));
|
|
300
302
|
}
|
|
301
303
|
}
|
|
302
|
-
var brick = {
|
|
303
|
-
tag: RenderTag.BRICK,
|
|
304
|
-
type: tplTagName || brickName,
|
|
305
|
-
return: returnNode,
|
|
306
|
-
slotId,
|
|
307
|
-
events: brickConf.events,
|
|
308
|
-
runtimeContext,
|
|
309
|
-
portal: brickConf.portal,
|
|
310
|
-
iid: brickConf.iid,
|
|
311
|
-
ref: brickConf.ref
|
|
312
|
-
};
|
|
313
|
-
output.node = brick;
|
|
314
|
-
|
|
315
|
-
// const confProps = brickConf.properties;
|
|
316
304
|
var formData;
|
|
317
305
|
var confProps;
|
|
318
306
|
if (brickName === FORM_RENDERER) {
|
|
@@ -326,20 +314,53 @@ function _renderBrick() {
|
|
|
326
314
|
} else {
|
|
327
315
|
confProps = brickConf.properties;
|
|
328
316
|
}
|
|
329
|
-
|
|
330
|
-
// 加载构件属性和加载子构件等任务,可以并行。
|
|
331
|
-
var blockingList = [];
|
|
332
317
|
var trackingContextList = [];
|
|
333
318
|
var asyncPropertyEntries = asyncComputeRealPropertyEntries(confProps, runtimeContext, trackingContextList);
|
|
334
319
|
var computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];
|
|
335
320
|
if (computedPropsFromHost) {
|
|
336
321
|
asyncPropertyEntries.push(...computedPropsFromHost);
|
|
337
322
|
}
|
|
323
|
+
var isScript = brickName === "script";
|
|
324
|
+
if (isScript || brickName === "link") {
|
|
325
|
+
var props = yield constructAsyncProperties(asyncPropertyEntries);
|
|
326
|
+
if (isScript ? props.src : props.rel === "stylesheet" && props.href) {
|
|
327
|
+
var _window$PUBLIC_ROOT;
|
|
328
|
+
var prefix = (_window$PUBLIC_ROOT = window.PUBLIC_ROOT) !== null && _window$PUBLIC_ROOT !== void 0 ? _window$PUBLIC_ROOT : "";
|
|
329
|
+
if (isScript) {
|
|
330
|
+
var {
|
|
331
|
+
src
|
|
332
|
+
} = props,
|
|
333
|
+
attrs = _objectWithoutProperties(props, _excluded4);
|
|
334
|
+
yield loadScript(src, prefix, attrs);
|
|
335
|
+
} else {
|
|
336
|
+
var {
|
|
337
|
+
href
|
|
338
|
+
} = props,
|
|
339
|
+
attrs = _objectWithoutProperties(props, _excluded5);
|
|
340
|
+
yield loadStyle(href, prefix, attrs);
|
|
341
|
+
}
|
|
342
|
+
return output;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
var brick = {
|
|
346
|
+
tag: RenderTag.BRICK,
|
|
347
|
+
type: tplTagName || brickName,
|
|
348
|
+
return: returnNode,
|
|
349
|
+
slotId,
|
|
350
|
+
events: brickConf.events,
|
|
351
|
+
runtimeContext,
|
|
352
|
+
portal: brickConf.portal,
|
|
353
|
+
iid: brickConf.iid,
|
|
354
|
+
ref: brickConf.ref
|
|
355
|
+
};
|
|
356
|
+
output.node = brick;
|
|
357
|
+
|
|
358
|
+
// 加载构件属性和加载子构件等任务,可以并行。
|
|
359
|
+
var blockingList = [];
|
|
338
360
|
var loadProperties = /*#__PURE__*/function () {
|
|
339
361
|
var _ref4 = _asyncToGenerator(function* () {
|
|
340
362
|
brick.properties = yield constructAsyncProperties(asyncPropertyEntries);
|
|
341
363
|
listenOnTrackingContext(brick, trackingContextList);
|
|
342
|
-
return brick.properties;
|
|
343
364
|
});
|
|
344
365
|
return function loadProperties() {
|
|
345
366
|
return _ref4.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","isTrackAll","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","renderRoutes","_x","_x2","_x3","_x4","_x5","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","define","context","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","concat","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","_x6","_x7","_x8","_x9","_x10","_x11","_x12","_renderBricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_x18","_renderBrick","key","_hooks$checkPermissio2","_runtimeContext$app","length","undefined","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","strict","brickName","startsWith","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","catchLoadBrick","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","tag","BRICK","return","events","portal","iid","ref","formData","confProps","_brickConf$properties","_ref3","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","loadProperties","_ref4","registerBrickLifeCycle","lifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","entries","_ref6","childSlotId","slotConf","childrenOutput","child","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","i","j","flat","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","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 loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\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 { matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\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\";\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 | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\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 runtimeContext.ctxStore.define(route.context, runtimeContext);\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 switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\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 slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\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 slotId?: string,\n key?: 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 slotId,\n key,\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`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\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 () => {\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 slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\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 output = await renderControlNode();\n output.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\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 return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoadBrick(\n loadBricksImperatively([brickName], getBrickPackages()),\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 catchLoadBrick(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n brickName,\n rendererContext.unknownBricks\n )\n );\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 // const confProps = brickConf.properties;\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 // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\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 loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n return brick.properties;\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 } 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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\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 slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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 catchLoadBrick(\n promise: Promise<unknown>,\n brickName: string,\n unknownBricks: RendererContext[\"unknownBricks\"]\n) {\n return unknownBricks === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load brick \"${brickName}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":";;;;;;AAUA,SACEA,uBAAuB,EACvBC,sBAAsB,QACjB,mBAAmB;AAC1B,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,QAAQ,QAAQ,QAAQ;AACjC,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SACEC,+BAA+B,EAC/BC,wBAAwB,QACnB,oCAAoC;AAC3C,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,qBAAqB,QAAQ,+BAA+B;AACrE,SAEEC,uBAAuB,QAClB,sCAAsC;AAE7C,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SACEC,mCAAmC,EACnCC,+BAA+B,EAC/BC,wBAAwB,QACnB,gCAAgC;AACvC,SAASC,oBAAoB,QAAQ,2CAA2C;AAOhF,SACEC,0BAA0B,EAC1BC,gBAAgB,QACX,4BAA4B;AACnC,SAASC,eAAe,QAAQ,uBAAuB;AAEvD,SAASC,gBAAgB,EAAEC,KAAK,QAAQ,cAAc;AACtD,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,SAAS,QAAQ,wBAAwB;AAClD,SAASC,YAAY,EAAEC,mBAAmB,QAAQ,oBAAoB;AACtE,SACEC,aAAa,EAEbC,yBAAyB,QACpB,6BAA6B;AACpC,SAASC,kBAAkB,QAAQ,sCAAsC;AACzE,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,kBAAkB,QAAQ,uBAAuB;AAgB1D,gBAAsBC,YAAYA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAgGjC,SAAAF,cAAA;EAAAA,aAAA,GAAAG,iBAAA,CAhGM,WACLC,UAAsB,EACtBC,MAAmB,EACnBC,eAA+B,EAC/BC,eAAgC,EAChCC,MAAe,EACQ;IACvB,IAAMC,OAAO,SAASlC,WAAW,CAAC8B,MAAM,EAAEC,eAAe,CAAC;IAC1D,IAAMI,MAAoB,GAAG;MAC3BC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;IAChB,CAAC;IACD,QAAQH,OAAO;MACb,KAAK,QAAQ;QACX;MACF,KAAK,iBAAiB;QACpBC,MAAM,CAACG,eAAe,GAAG,IAAI;QAC7B;MACF;QAAS;UAAA,IAAAC,qBAAA;UACP,IAAMC,KAAK,GAAIL,MAAM,CAACK,KAAK,GAAGN,OAAO,CAACM,KAAM;UAC5C,IAAMC,cAAc,GAAAC,aAAA,CAAAA,aAAA,KACfX,eAAe;YAClBY,KAAK,EAAET,OAAO,CAACS;UAAK,EACrB;UACDF,cAAc,CAACG,QAAQ,CAACC,MAAM,CAACL,KAAK,CAACM,OAAO,EAAEL,cAAc,CAAC;UAC7DA,cAAc,CAACM,0BAA0B,CAACC,IAAI,CAC5CvC,KAAK,aAALA,KAAK,gBAAA8B,qBAAA,GAAL9B,KAAK,CAAEwC,gBAAgB,cAAAV,qBAAA,uBAAvBA,qBAAA,CAAyBW,kCAAkC,CACzDV,KAAK,EACJW,KAAK,IAAKrD,qBAAqB,CAACqD,KAAK,EAAEV,cAAc,CACxD,CACF,CAAC;;UAED;UACA;UACA,IAAM;YAAEW;UAAc,CAAC,GAAGZ,KAAqC;UAC/D,IAAIa,KAAK,CAACC,OAAO,CAACF,aAAa,CAAC,EAAE;YAChCjB,MAAM,CAACC,YAAY,CAACY,IAAI,CACtB1D,sBAAsB,CAAC8D,aAAa,EAAE5C,gBAAgB,CAAC,CAAC,CAC1D,CAAC;UACH;UAEA,QAAQgC,KAAK,CAACe,IAAI;YAChB,KAAK,UAAU;cAAE;gBACf,IAAIC,UAAmB;gBACvB,IAAI,OAAOhB,KAAK,CAACiB,QAAQ,KAAK,QAAQ,EAAE;kBACtCD,UAAU,SAAS1D,qBAAqB,CACtC0C,KAAK,CAACiB,QAAQ,EACdhB,cACF,CAAC;gBACH,CAAC,MAAM;kBACL,IAAMiB,QAAQ,SAAU7D,WAAW,CAAA6C,aAAA;oBAE/BiB,SAAS,EAAE;kBAAU,GAClBnB,KAAK,CAACiB,QAAQ,GAEnBhB,cACF,CAA4B;kBAC5Be,UAAU,GAAGE,QAAQ,CAACD,QAAQ;gBAChC;gBACA,IAAI,OAAOD,UAAU,KAAK,QAAQ,EAAE;kBAClC;kBACAI,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAEL,UAAU,CAAC;kBACxD,MAAM,IAAIM,KAAK,wCAAAC,MAAA,CAC0B,OAAOP,UAAU,CAC1D,CAAC;gBACH;gBACArB,MAAM,CAACsB,QAAQ,GAAG;kBAAEO,IAAI,EAAER;gBAAW,CAAC;gBACtC;cACF;YACA,KAAK,QAAQ;cAAE;gBACbrB,MAAM,CAACE,YAAY,CAACW,IAAI,CAACiB,QAAQ,CAACzB,KAAK,CAAC0B,IAAI,EAAEzB,cAAc,CAAC,CAAC;gBAC9D,IAAM0B,SAAS,SAAShD,YAAY,CAClCU,UAAU,EACVW,KAAK,CAACV,MAAM,EACZW,cAAc,EACdT,eAAe,EACfC,MACF,CAAC;gBACDmC,iBAAiB,CAACjC,MAAM,EAAEgC,SAAS,CAAC;gBACpC;cACF;YACA;cAAS;gBACPhC,MAAM,CAACE,YAAY,CAACW,IAAI,CAACiB,QAAQ,CAACzB,KAAK,CAAC0B,IAAI,EAAEzB,cAAc,CAAC,CAAC;gBAC9D,IAAM0B,UAAS,SAASE,YAAY,CAClCxC,UAAU,EACVW,KAAK,CAAC8B,MAAM,EACZ7B,cAAc,EACdT,eAAe,EACfC,MACF,CAAC;gBACDmC,iBAAiB,CAACjC,MAAM,EAAEgC,UAAS,CAAC;cACtC;UACF;QACF;IACF;IACA,OAAOhC,MAAM;EACf,CAAC;EAAA,OAAAV,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,gBAAsB0C,YAAYA,CAAAE,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,aAAA,CAAApD,KAAA,OAAAC,SAAA;AAAA;AAqCjC,SAAAmD,cAAA;EAAAA,aAAA,GAAAlD,iBAAA,CArCM,WACLC,UAAsB,EACtByC,MAAmB,EACnB7B,cAA8B,EAC9BT,eAAgC,EAChCC,MAAe,EACf8C,QAA8B,EAC9BC,SAAmB,EACI;IACvB,IAAM7C,MAAoB,GAAG;MAC3BC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;IAChB,CAAC;IACD;IACA,IAAM4C,QAAQ,SAASC,OAAO,CAACC,GAAG,CAChCb,MAAM,CAACc,GAAG,CAAC,CAACC,SAAS,EAAEC,KAAK,KAC1BC,WAAW,CACT1D,UAAU,EACVwD,SAAS,EACT5C,cAAc,EACdT,eAAe,EACfC,MAAM,EACNqD,KAAK,EACLP,QAAQ,IAAI,IAAIS,GAAG,CAACT,QAAQ,CAC9B,CACF,CACF,CAAC;IAEDE,QAAQ,CAACQ,OAAO,CAAC,CAACC,IAAI,EAAEJ,KAAK,KAAK;MAChC,IAAI,CAACN,SAAS,IAAIU,IAAI,CAACC,mBAAmB,EAAE;QAC1C;QACA3D,eAAe,CAAC4D,kBAAkB,CAAC3D,MAAM,EAAEqD,KAAK,EAAEI,IAAI,CAACG,IAAI,EAAEhE,UAAU,CAAC;MAC1E;MACAuC,iBAAiB,CAACjC,MAAM,EAAEuD,IAAI,CAAC;IACjC,CAAC,CAAC;IAEF,OAAOvD,MAAM;EACf,CAAC;EAAA,OAAA2C,aAAA,CAAApD,KAAA,OAAAC,SAAA;AAAA;AAED,gBAAsB4D,WAAWA,CAAAO,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,YAAA,CAAA1E,KAAA,OAAAC,SAAA;AAAA;AAoYhC,SAAAyE,aAAA;EAAAA,YAAA,GAAAxE,iBAAA,CApYM,WACLC,UAAsB,EACtBwD,SAAsC,EACtCtD,eAA+B,EAC/BC,eAAgC,EAChCC,MAAe,EACfoE,GAAY,EAEW;IAAA,IAAAC,sBAAA,EAAAC,mBAAA;IAAA,IADvBxB,QAAQ,GAAApD,SAAA,CAAA6E,MAAA,QAAA7E,SAAA,QAAA8E,SAAA,GAAA9E,SAAA,MAAG,IAAI6D,GAAG,CAAiB,CAAC;IAEpC,IAAMrD,MAAoB,GAAG;MAC3BC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;IAChB,CAAC;IAED,IAAI,CAACgD,SAAS,CAACqB,KAAK,EAAE;MACpB,IAAKrB,SAAS,CAA2BsB,QAAQ,EAAE;QACjD;QACA/C,OAAO,CAACC,KAAK,CAAC,qCAAqC,EAAEwB,SAAS,CAAC;MACjE,CAAC,MAAM;QACL;QACAzB,OAAO,CAACC,KAAK,CAAC,gBAAgB,EAAEwB,SAAS,CAAC;MAC5C;MACA,OAAOlD,MAAM;IACf;;IAEA;IACA;IACA,IAAM;QAAEyE,EAAE,EAAEC,OAAO;QAAEC;MAAsC,CAAC,GAAGzB,SAAS;MAA3B0B,aAAa,GAAAC,wBAAA,CAAK3B,SAAS,EAAA4B,UAAA;IACxE,IAAIC,qBAAqB,CAACL,OAAO,CAAC,EAAE;MAClC,OAAOtB,WAAW,CAChB1D,UAAU,EAAAa,aAAA;QAERgE,KAAK,EAAE,KAAK;QACZS,UAAU,EAAEN,OAAO;QACnB;QACAC,mBAAmB;QACnBM,KAAK,EAAE;UACL,EAAE,EAAE;YACF7D,IAAI,EAAE,QAAQ;YACde,MAAM,EAAE,CAACyC,aAAa;UACxB;QACF;MAAC,GAEEM,MAAM,CAACC,qBAAqB,CAACjC,SAAS,CAAC,CAACkC,MAAM,CAC/C,CAACC,GAAG,EAAEC,MAAM,KAAA/E,aAAA,CAAAA,aAAA,KACP8E,GAAG;QACN,CAACC,MAAM,GAAIpC,SAAS,CAASoC,MAAM;MAAC,EACpC,EACF,CAAC,CACH,CAAC,GAEH1F,eAAe,EACfC,eAAe,EACfC,MAAM,EACNoE,GAAG,EACHtB,QACF,CAAC;IACH;IAEA,IAAM2C,eAAe,GAAGrC,SAAS,CAAClF,wBAAwB,CAAC;IAC3D,IAAMwH,gBAAgB,GAAGtC,SAAS,CAACtE,yBAAyB,CAAC;IAC7D,IAAM0B,cAAc,GAAAC,aAAA,CAAAA,aAAA,KACfX,eAAe;MAClB2F,eAAe;MACfC;IAAgB,EACjB;IAED,IAAInI,cAAc,CAAC6F,SAAS,EAAEnF,+BAA+B,CAAC,EAAE;MAC9D;MACA;MACAuC,cAAc,CAACmF,WAAW,GAAGvC,SAAS,CAACnF,+BAA+B,CAAC;IACzE;IAEA,IAAM;MAAE4C;IAAQ,CAAC,GAAGuC,SAAwC;IAC5D;IACA,IAAIhC,KAAK,CAACC,OAAO,CAACR,OAAO,CAAC,IAAIA,OAAO,CAAC0D,MAAM,GAAG,CAAC,EAAE;MAChD,IAAMqB,MAAM,GAAGjH,YAAY,CAAC6B,cAAc,CAAC;MAC3C5B,mBAAmB,CACjBgH,MAAM,EACN,4BAA4B,EAC5B,mBAAmB,EACnBxC,SACF,CAAC;MACD,IAAI,CAACwC,MAAM,EAAE;QACXpF,cAAc,CAACG,QAAQ,CAACC,MAAM,CAACC,OAAO,EAAEL,cAAc,CAAC;MACzD;IACF;IAEAA,cAAc,CAACM,0BAA0B,CAACC,IAAI,CAC5CvC,KAAK,aAALA,KAAK,gBAAA6F,sBAAA,GAAL7F,KAAK,CAAEwC,gBAAgB,cAAAqD,sBAAA,uBAAvBA,sBAAA,CAAyBpD,kCAAkC,CACzDmC,SAAS,EACRlC,KAAK,IAAKrD,qBAAqB,CAACqD,KAAK,EAAEV,cAAc,CACxD,CACF,CAAC;IAED,IAAI,QAAQ/C,iBAAiB,CAAC2F,SAAS,EAAE5C,cAAc,CAAC,CAAC,EAAE;MACzD,OAAON,MAAM;IACf;IAEA,IAAM2F,SAAS,GAAGzC,SAAS,CAACqB,KAAK;IACjC,IAAIoB,SAAS,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;MAC7BC,uBAAuB,CAACF,SAAS,CAAC;MAElC,IAAM;QAAEX;MAAW,CAAC,GAAG9B,SAAS;MAEhC,IAAM4C,iBAAiB;QAAA,IAAAC,IAAA,GAAAtG,iBAAA,CAAG,aAAY;UAAA,IAAAuG,WAAA;UACpC;UACA,IAAMC,kBAAkB,SAAStI,qBAAqB,CACpDqH,UAAU,EACV1E,cACF,CAAC;;UAED;UACA,IAAM4F,IAAI,GACRP,SAAS,KAAK,UAAU,GACpB,EAAE,GACFA,SAAS,KAAK,SAAS,GACvBQ,MAAM,CAACF,kBAAkB,CAAC,GAC1BA,kBAAkB,GAClB,EAAE,GACF,MAAM;;UAEZ;UACA,IAAMhB,KAAK,GAAGmB,eAAe,CAAClD,SAAS,CAACmD,QAAQ,EAAEnD,SAAS,CAAC+B,KAAK,CAAC;;UAElE;UACA,IAAM9C,MAAM,GACV8C,KAAK,IACL5H,cAAc,CAAC4H,KAAK,EAAEiB,IAAI,CAAC,MAAAF,WAAA,GAC1Bf,KAAK,CAACiB,IAAI,CAAC,cAAAF,WAAA,uBAAZA,WAAA,CAAmC7D,MAAM;UAE3C,IAAI,CAACjB,KAAK,CAACC,OAAO,CAACgB,MAAM,CAAC,EAAE;YAC1B,OAAOnC,MAAM;UACf;UAEA,QAAQ2F,SAAS;YACf,KAAK,UAAU;cAAE;gBACf,IAAI,CAACzE,KAAK,CAACC,OAAO,CAAC8E,kBAAkB,CAAC,EAAE;kBACtC,OAAOjG,MAAM;gBACf;gBACA,OAAOsG,aAAa,CAClB5G,UAAU,EACVuG,kBAAkB,EAClB9D,MAAM,EACN7B,cAAc,EACdT,eAAe,EACfC,MAAM,EACN8C,QACF,CAAC;cACH;YACA,KAAK,KAAK;YACV,KAAK,SAAS;cAAE;gBACd,OAAOV,YAAY,CACjBxC,UAAU,EACVyC,MAAM,EACN7B,cAAc,EACdT,eAAe,EACfC,MAAM,EACN8C,QAAQ,EACR,IACF,CAAC;cACH;UACF;QACF,CAAC;QAAA,gBA1DKkD,iBAAiBA,CAAA;UAAA,OAAAC,IAAA,CAAAxG,KAAA,OAAAC,SAAA;QAAA;MAAA,GA0DtB;MAED,IAAM+G,gBAAgB,SAAST,iBAAiB,CAAC,CAAC;MAElD,IAAM;QAAEU,YAAY;QAAEC;MAAW,CAAC,GAAGjI,SAAS,CAACwG,UAAU,CAAC;MAC1D,IAAIwB,YAAY,IAAIC,UAAU,EAAE;QAC9BF,gBAAgB,CAAC/C,mBAAmB,GAAG,IAAI;QAC3C,IAAIkD,QAAQ,GAAG,CAAC;QAChB,IAAMC,QAAQ;UAAA,IAAAC,KAAA,GAAAnH,iBAAA,CAAG,aAAY;YAC3B,IAAMoH,eAAe,GAAG,EAAEH,QAAQ;YAClC,IAAM1G,MAAM,SAAS8F,iBAAiB,CAAC,CAAC;YACxC9F,MAAM,CAACC,YAAY,CAACY,IAAI,CACtB,GAAG,CACD,GAAGP,cAAc,CAACwG,gBAAgB,CAACC,MAAM,CAAC,CAAC,EAC3C,GAAGzG,cAAc,CAAC0G,iBAAiB,CAACD,MAAM,CAAC,CAAC,CAC7C,CAAC9D,GAAG,CAAEgE,KAAK,IAAKA,KAAK,CAACC,UAAU,CAAC,CAAC,CAAC,EACpC,GAAG5G,cAAc,CAACM,0BACpB,CAAC;YACD,MAAMmC,OAAO,CAACC,GAAG,CAAChD,MAAM,CAACC,YAAY,CAAC;YACtC;YACA,IAAIyG,QAAQ,KAAKG,eAAe,EAAE;cAChChH,eAAe,CAACsH,mBAAmB,CACjCrH,MAAM,EACNoE,GAAG,EACHlE,MAAM,CAAC0D,IAAI,EACXhE,UACF,CAAC;YACH;UACF,CAAC;UAAA,gBApBKiH,QAAQA,CAAA;YAAA,OAAAC,KAAA,CAAArH,KAAA,OAAAC,SAAA;UAAA;QAAA,GAoBb;QACD,IAAM4H,iBAAiB,GAAG9J,QAAQ,CAACqJ,QAAQ,CAAC;QAC5C,IAAIH,YAAY,EAAE;UAChB,KAAK,IAAMa,WAAW,IAAIb,YAAY,EAAE;YACtClG,cAAc,CAACG,QAAQ,CAAC6G,QAAQ,CAACD,WAAW,EAAED,iBAAiB,CAAC;UAClE;QACF;QACA,IAAIX,UAAU,EAAE;UACd,KAAK,IAAMY,YAAW,IAAIZ,UAAU,EAAE;YACpC,IAAMc,aAAa,GAAGpJ,gBAAgB,CACpCmC,cAAc,EACd,OAAO,SAAAsB,MAAA,CACDoD,UAAU,OAClB,CAAC;YACDuC,aAAa,CAACD,QAAQ,CAACD,YAAW,EAAED,iBAAiB,CAAC;UACxD;QACF;MACF;MAEA,OAAOb,gBAAgB;IACzB;;IAEA;IACA,IAAI,QAAQ,CAACiB,IAAI,CAAC7B,SAAS,CAAC,IAAI,CAACvH,eAAe,CAACqJ,GAAG,CAAC9B,SAAS,CAAC,EAAE;MAC/D,MAAM+B,cAAc,CAClBvK,sBAAsB,CAAC,CAACwI,SAAS,CAAC,EAAEtH,gBAAgB,CAAC,CAAC,CAAC,EACvDsH,SAAS,EACT9F,eAAe,CAAC8H,aAClB,CAAC;IACH;IAEA,IAAMC,UAAU,GAAG1J,0BAA0B,CAC3CyH,SAAS,GAAAvB,mBAAA,GACT9D,cAAc,CAACuH,GAAG,cAAAzD,mBAAA,uBAAlBA,mBAAA,CAAoB0D,EACtB,CAAC;IAED,IAAIF,UAAU,EAAE;MAAA,IAAAG,aAAA;MACd,IAAMC,QAAQ,IAAAD,aAAA,GAAGnF,QAAQ,CAAC6E,GAAG,CAACG,UAAU,CAAC,cAAAG,aAAA,cAAAA,aAAA,GAAI,CAAC;MAC9C,IAAIC,QAAQ,IAAI,EAAE,EAAE;QAClB,MAAM,IAAIrG,KAAK,gDAAAC,MAAA,CACiCgG,UAAU,OAC1D,CAAC;MACH;MACAhF,QAAQ,CAACqF,GAAG,CAACL,UAAU,EAAEI,QAAQ,GAAG,CAAC,CAAC;IACxC,CAAC,MAAM,IAAIrC,SAAS,CAACuC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACC,cAAc,CAACV,GAAG,CAAC9B,SAAS,CAAC,EAAE;MACpE,IAAIA,SAAS,KAAKhH,aAAa,EAAE;QAC/BwJ,cAAc,CAACzH,MAAM,CACnB/B,aAAa,EACb,MAAMyJ,mBAAmB,SAASC,WAAW,CAAC;UAC5C,IAAIC,QAAQA,CAAA,EAAW;YACrB,OAAO,eAAe;UACxB;QACF,CACF,CAAC;MACH,CAAC,MAAM;QACLtI,MAAM,CAACC,YAAY,CAACY,IAAI,CACtB6G,cAAc,CACZxK,uBAAuB,CAAC,CAACyI,SAAS,CAAC,EAAEtH,gBAAgB,CAAC,CAAC,CAAC,EACxDsH,SAAS,EACT9F,eAAe,CAAC8H,aAClB,CACF,CAAC;MACH;IACF;IAEA,IAAMpD,KAAkB,GAAG;MACzBgE,GAAG,EAAEhK,SAAS,CAACiK,KAAK;MACpBpH,IAAI,EAAEwG,UAAU,IAAIjC,SAAS;MAC7B8C,MAAM,EAAE/I,UAAU;MAClBI,MAAM;MACN4I,MAAM,EAAExF,SAAS,CAACwF,MAAM;MACxBpI,cAAc;MACdqI,MAAM,EAAEzF,SAAS,CAACyF,MAAM;MACxBC,GAAG,EAAE1F,SAAS,CAAC0F,GAAG;MAClBC,GAAG,EAAG3F,SAAS,CAAyB2F;IAC1C,CAAC;IAED7I,MAAM,CAAC0D,IAAI,GAAGa,KAAK;;IAEnB;IACA,IAAIuE,QAAiB;IACrB,IAAIC,SAA8C;IAClD,IAAIpD,SAAS,KAAKhH,aAAa,EAAE;MAAA,IAAAqK,qBAAA;MAAA,IAAAC,KAAA,IAAAD,qBAAA,GACD9F,SAAS,CAACgG,UAAU,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;MAAA,CAAvD;QAAEF;MAAuB,CAAC,GAAAG,KAA6B;MAAxCF,SAAS,GAAAlE,wBAAA,CAAAoE,KAAA,EAAAE,UAAA;MAAAF,KAAA;IAC3B,CAAC,MAAM;MACLF,SAAS,GAAG7F,SAAS,CAACgG,UAAU;IAClC;;IAEA;IACA,IAAMjJ,YAAgC,GAAG,EAAE;IAE3C,IAAMmJ,mBAA0C,GAAG,EAAE;IACrD,IAAMC,oBAAoB,GAAG7L,+BAA+B,CAC1DuL,SAAS,EACTzI,cAAc,EACd8I,mBACF,CAAC;IAED,IAAME,qBAAqB,GAAGpG,SAAS,CAACpF,mCAAmC,CAAC;IAC5E,IAAIwL,qBAAqB,EAAE;MACzBD,oBAAoB,CAACxI,IAAI,CAAC,GAAGyI,qBAAqB,CAAC;IACrD;IAEA,IAAMC,cAAc;MAAA,IAAAC,KAAA,GAAA/J,iBAAA,CAAG,aAAY;QACjC8E,KAAK,CAAC2E,UAAU,SAASzL,wBAAwB,CAAC4L,oBAAoB,CAAC;QACvEzL,uBAAuB,CAAC2G,KAAK,EAAE6E,mBAAmB,CAAC;QACnD,OAAO7E,KAAK,CAAC2E,UAAU;MACzB,CAAC;MAAA,gBAJKK,cAAcA,CAAA;QAAA,OAAAC,KAAA,CAAAjK,KAAA,OAAAC,SAAA;MAAA;IAAA,GAInB;IACDS,YAAY,CAACY,IAAI,CAAC0I,cAAc,CAAC,CAAC,CAAC;IAEnC1J,eAAe,CAAC4J,sBAAsB,CAAClF,KAAK,EAAErB,SAAS,CAACwG,SAAS,CAAC;IAElE,IAAIC,iBAAiB,GAAGzG,SAAS;IACjC,IAAI0E,UAAU,EAAE;MACd+B,iBAAiB,GAAG1L,oBAAoB,CACtC2J,UAAU,EACV1E,SAAS,EACTqB,KAAK,EACL8E,oBAAoB,EACpBxJ,eACF,CAAC;IACH,CAAC,MAAM,IAAI8F,SAAS,KAAKhH,aAAa,EAAE;MACtCgL,iBAAiB,GAAG9K,kBAAkB,CACpCiK,QAAQ,EACR5F,SAAS,EACTqB,KAAK,EACL8E,oBAAoB,EACpBxJ,eACF,CAAC;IACH;IAEA,IAAI8J,iBAAiB,CAAChB,MAAM,EAAE;MAC5B;MACApE,KAAK,CAACzE,MAAM,GAAGwE,SAAS;IAC1B;IAEA,IAAIsF,mBAAmC;IACvC,IAAIhC,UAAU,EAAE;MACd;MACAgC,mBAAmB,GAAArJ,aAAA,KACdD,cAAc,CAClB;MACD,OAAOsJ,mBAAmB,CAACnE,WAAW;IACxC,CAAC,MAAM;MACLmE,mBAAmB,GAAGtJ,cAAc;IACtC;IAEA,IAAMuJ,YAAY;MAAA,IAAAC,KAAA,GAAArK,iBAAA,CAAG,aAAY;QAC/B,IAAMwF,KAAK,GAAGmB,eAAe,CAC3BuD,iBAAiB,CAACtD,QAAQ,EAC1BsD,iBAAiB,CAAC1E,KACpB,CAAC;QACD,IAAI,CAACA,KAAK,EAAE;UACV;QACF;QACA,IAAMnC,QAAQ,SAASC,OAAO,CAACC,GAAG,CAChCkC,MAAM,CAAC6E,OAAO,CAAC9E,KAAK,CAAC,CAAChC,GAAG,CAAC+G,KAAA;UAAA,IAAC,CAACC,WAAW,EAAEC,QAAQ,CAAC,GAAAF,KAAA;UAAA,OAChDE,QAAQ,CAAC9I,IAAI,KAAK,QAAQ,GACtBc,YAAY,CACVqC,KAAK,EACJ2F,QAAQ,CAAsB/H,MAAM,EACrCyH,mBAAmB,EACnB/J,eAAe,EACfoK,WAAW,EACXrH,QACF,CAAC,GACD5D,YAAY,CACVuF,KAAK,EACL2F,QAAQ,CAACvK,MAAM,EACfiK,mBAAmB,EACnB/J,eAAe,EACfoK,WACF,CAAC;QAAA,CACP,CACF,CAAC;QAED,IAAME,cAA4B,GAAA5J,aAAA,CAAAA,aAAA,KAC7BP,MAAM;UACT0D,IAAI,EAAEY,SAAS;UACfrE,YAAY,EAAE;QAAE,EACjB;QACD,KAAK,IAAMsD,IAAI,IAAIT,QAAQ,EAAE;UAC3Bb,iBAAiB,CAACkI,cAAc,EAAE5G,IAAI,CAAC;QACzC;QACA,IAAI4G,cAAc,CAACzG,IAAI,EAAE;UACvBa,KAAK,CAAC6F,KAAK,GAAGD,cAAc,CAACzG,IAAI;QACnC;QACAzB,iBAAiB,CAACjC,MAAM,EAAAO,aAAA,CAAAA,aAAA,KACnB4J,cAAc;UACjBzG,IAAI,EAAEY;QAAS,EAChB,CAAC;MACJ,CAAC;MAAA,gBA5CKuF,YAAYA,CAAA;QAAA,OAAAC,KAAA,CAAAvK,KAAA,OAAAC,SAAA;MAAA;IAAA,GA4CjB;IACDS,YAAY,CAACY,IAAI,CAACgJ,YAAY,CAAC,CAAC,CAAC;IAEjC,MAAM9G,OAAO,CAACC,GAAG,CAAC/C,YAAY,CAAC;IAE/B,OAAOD,MAAM;EACf,CAAC;EAAA,OAAAiE,YAAA,CAAA1E,KAAA,OAAAC,SAAA;AAAA;AAED,SAASuF,qBAAqBA,CAACL,OAAgB,EAAW;EACxD,OAAO,OAAOA,OAAO,KAAK,QAAQ,GAC9BtH,UAAU,CAACsH,OAAO,CAAC,GACnB5F,cAAc,CAAC4F,OAAO,CAAC;EACrB;EACAtH,UAAU,CAAC2B,kBAAkB,CAAC2F,OAAO,CAAC,CAAC;AAC/C;AAIA,SAASmB,uBAAuBA,CAC9BtB,KAAa,EACuB;EACpC,IAAIA,KAAK,KAAK,UAAU,IAAIA,KAAK,KAAK,KAAK,IAAIA,KAAK,KAAK,SAAS,EAAE;IAClE,MAAM,IAAI5C,KAAK,uCAAAC,MAAA,CAAsC2C,KAAK,OAAG,CAAC;EAChE;AACF;AAAC,SAEc+B,aAAaA,CAAA+D,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,cAAA,CAAArL,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAoL,eAAA;EAAAA,cAAA,GAAAnL,iBAAA,CAA5B,WACEC,UAAsB,EACtBsF,UAAqB,EACrB7C,MAAmB,EACnB7B,cAA8B,EAC9BT,eAAgC,EAChCC,MAA0B,EAC1B8C,QAA8B,EACP;IACvB,IAAM5C,MAAoB,GAAG;MAC3BC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;IAChB,CAAC;IAED,IAAM4C,QAAQ,SAASC,OAAO,CAACC,GAAG,CAChCgC,UAAU,CAAC/B,GAAG,CAAC,CAACM,IAAI,EAAEsH,CAAC,KACrB9H,OAAO,CAACC,GAAG,CACTb,MAAM,CAACc,GAAG,CAAC,CAACC,SAAS,EAAE4H,CAAC,KACtB1H,WAAW,CACT1D,UAAU,EACVwD,SAAS,EAAA3C,aAAA,CAAAA,aAAA,KAEJD,cAAc;MACjBmF,WAAW,EAAElC;IAAI,IAEnB1D,eAAe,EACfC,MAAM,EACN+K,CAAC,GAAGC,CAAC,EACLlI,QAAQ,IAAI,IAAIS,GAAG,CAACT,QAAQ,CAC9B,CACF,CACF,CACF,CACF,CAAC;;IAED;IACA,KAAK,IAAMW,IAAI,IAAIT,QAAQ,CAACiI,IAAI,CAAC,CAAC,EAAE;MAClC9I,iBAAiB,CAACjC,MAAM,EAAEuD,IAAI,CAAC;IACjC;IACA,OAAOvD,MAAM;EACf,CAAC;EAAA,OAAA4K,cAAA,CAAArL,KAAA,OAAAC,SAAA;AAAA;AAED,SAASsC,QAAQA,CACfkJ,QAA8B,EAC9B1K,cAA8B,EAC9B;EACA,IAAI,CAAC0K,QAAQ,EAAE;IACb;EACF;;EAEA;EACA,IAAKA,QAAQ,CAAwB5J,IAAI,KAAK,OAAO,EAAE;IACrD;IACAK,OAAO,CAACC,KAAK,CAAC,uCAAuC,EAAEsJ,QAAQ,CAAC;IAChE,MAAM,IAAIrJ,KAAK,CAAC,sCAAsC,CAAC;EACzD;;EAEA;EACA,IAAIqJ,QAAQ,CAAC5J,IAAI,KAAK,SAAS,EAAE;IAC/B;IACAK,OAAO,CAACwJ,IAAI,CAAC,mDAAmD,EAAED,QAAQ,CAAC;IAC3E;EACF;EAEA,OAAOrN,qBAAqB,CAC1BqN,QAAQ,EACR1K,cACF,CAAC;AACH;AAEA,SAAS2B,iBAAiBA,CACxBjC,MAAoB,EACpBgC,SAAuB,EACjB;EACN;EACA,IAAM;MAAE/B,YAAY;MAAEyD,IAAI;MAAExD,YAAY;MAAEsD;IAA6B,CAAC,GACtExB,SAAS;IADuDkJ,IAAI,GAAArG,wBAAA,CACpE7C,SAAS,EAAAmJ,SAAA;EACXnL,MAAM,CAACC,YAAY,CAACY,IAAI,CAAC,GAAGZ,YAAY,CAAC;EACzCD,MAAM,CAACE,YAAY,CAACW,IAAI,CAAC,GAAGX,YAAY,CAAC;EAEzC,IAAIwD,IAAI,EAAE;IACR,IAAI1D,MAAM,CAAC0D,IAAI,EAAE;MACf,IAAI0H,IAAI,GAAGpL,MAAM,CAAC0D,IAAI;MACtB,OAAO0H,IAAI,CAACC,OAAO,EAAE;QACnBD,IAAI,GAAGA,IAAI,CAACC,OAAO;MACrB;MACAD,IAAI,CAACC,OAAO,GAAG3H,IAAI;IACrB,CAAC,MAAM;MACL1D,MAAM,CAAC0D,IAAI,GAAGA,IAAI;IACpB;EACF;EAEAwB,MAAM,CAACoG,MAAM,CAACtL,MAAM,EAAEkL,IAAI,CAAC;AAC7B;AAEA,OAAO,SAAS9E,eAAeA,CAC7BC,QAAiC,EACjCkF,aAAoC,EACpC;EACA,IAAIC,QAAQ,GAAGD,aAAa;EAC5B;EACA,IACEE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IACtCtF,QAAQ,IACR,CAACnF,KAAK,CAACC,OAAO,CAACkF,QAAQ,CAAC,EACxB;IACA;IACA5E,OAAO,CAACwJ,IAAI,CACV,yCAAyC,MAAArJ,MAAA,CACrC,OAAOyE,QAAQ,QACnBA,QACF,CAAC;EACH;EACA,IAAInF,KAAK,CAACC,OAAO,CAACkF,QAAQ,CAAC,IAAI,CAACmF,QAAQ,EAAE;IACxCA,QAAQ,GAAG,CAAC,CAAC;IACb,KAAK,IAAMpB,KAAK,IAAI/D,QAAQ,EAAE;MAAA,IAAAuF,WAAA;MAC5B,IAAM1F,IAAI,IAAA0F,WAAA,GAAGxB,KAAK,CAAClE,IAAI,cAAA0F,WAAA,cAAAA,WAAA,GAAI,EAAE;MAC7B,IAAI,CAACvO,cAAc,CAACmO,QAAQ,EAAEtF,IAAI,CAAC,EAAE;QACnCsF,QAAQ,CAACtF,IAAI,CAAC,GAAG;UACf9E,IAAI,EAAE,QAAQ;UACde,MAAM,EAAE;QACV,CAAC;MACH;MACCqJ,QAAQ,CAACtF,IAAI,CAAC,CAAsB/D,MAAM,CAACtB,IAAI,CAACuJ,KAAK,CAAC;IACzD;EACF;EACA,OAAOoB,QAAQ;AACjB;AAEA,SAAS9D,cAAcA,CACrBmE,OAAyB,EACzBlG,SAAiB,EACjBgC,aAA+C,EAC/C;EACA,OAAOA,aAAa,KAAK,QAAQ,GAC7BkE,OAAO,CAACC,KAAK,CAAEC,CAAC,IAAK;IACnB;IACAtK,OAAO,CAACC,KAAK,iBAAAE,MAAA,CAAgB+D,SAAS,iBAAaoG,CAAC,CAAC;EACvD,CAAC,CAAC,GACFF,OAAO;AACb"}
|
|
1
|
+
{"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","renderRoutes","_x","_x2","_x3","_x4","_x5","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","define","context","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","concat","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","_x6","_x7","_x8","_x9","_x10","_x11","_x12","_renderBricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_x18","_renderBrick","key","_hooks$checkPermissio2","_runtimeContext$app","length","undefined","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","strict","brickName","startsWith","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","catchLoadBrick","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","tag","BRICK","return","events","portal","iid","ref","loadProperties","_ref4","registerBrickLifeCycle","lifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","entries","_ref6","childSlotId","slotConf","childrenOutput","child","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","i","j","flat","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","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 loadBricksImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\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 { matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\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\";\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 | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\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 runtimeContext.ctxStore.define(route.context, runtimeContext);\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 switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\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 slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\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 slotId?: string,\n key?: 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 slotId,\n key,\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`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\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 () => {\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 slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\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 output = await renderControlNode();\n output.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\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 return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoadBrick(\n loadBricksImperatively([brickName], getBrickPackages()),\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 catchLoadBrick(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\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 loadScript(src as string, prefix, attrs);\n } else {\n const { href, ...attrs } = props;\n await loadStyle(href as string, prefix, attrs);\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 // 加载构件属性和加载子构件等任务,可以并行。\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 } 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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\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 slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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 catchLoadBrick(\n promise: Promise<unknown>,\n brickName: string,\n unknownBricks: RendererContext[\"unknownBricks\"]\n) {\n return unknownBricks === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load brick \"${brickName}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/runtime",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.2",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@next-core/http": "^1.0.8",
|
|
48
48
|
"@next-core/i18n": "^1.0.24",
|
|
49
49
|
"@next-core/inject": "^1.0.17",
|
|
50
|
-
"@next-core/loader": "^1.
|
|
50
|
+
"@next-core/loader": "^1.4.0",
|
|
51
51
|
"@next-core/supply": "^2.1.3",
|
|
52
52
|
"@next-core/types": "^1.6.0",
|
|
53
53
|
"@next-core/utils": "^1.5.7",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"@next-core/build-next-libs": "^1.0.6",
|
|
66
66
|
"@next-core/test-next": "^1.0.8"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "0bd3d1edd7acdab6794f98366ef70e3d479930d8"
|
|
69
69
|
}
|