@next-core/runtime 1.22.3 → 1.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/internal/CustomTemplates/constants.js +3 -1
- package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +1 -0
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +7 -6
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +1 -0
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +6 -3
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/compute/evaluate.js +10 -6
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/constants.js +1 -0
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +1 -0
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +8 -7
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js +1 -0
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/esm/internal/Renderer.js +7 -4
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/compute/evaluate.js +10 -6
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/types/internal/CustomTemplates/constants.d.ts +2 -0
- package/dist/types/internal/interfaces.d.ts +1 -0
- package/package.json +2 -2
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.symbolForTplStateStoreId = exports.symbolForTPlExternalForEachItem = exports.symbolForAsyncComputedPropsFromHost = void 0;
|
|
6
|
+
exports.symbolForTplStateStoreId = exports.symbolForTPlExternalForEachItem = exports.symbolForTPlExternalForEachIndex = exports.symbolForAsyncComputedPropsFromHost = void 0;
|
|
7
7
|
const symbolForAsyncComputedPropsFromHost = Symbol.for("tpl.asyncComputedPropsFromHost");
|
|
8
8
|
exports.symbolForAsyncComputedPropsFromHost = symbolForAsyncComputedPropsFromHost;
|
|
9
9
|
const symbolForTplStateStoreId = Symbol.for("tpl.stateStoreId");
|
|
10
10
|
exports.symbolForTplStateStoreId = symbolForTplStateStoreId;
|
|
11
11
|
const symbolForTPlExternalForEachItem = Symbol.for("tpl.externalForEachItem");
|
|
12
12
|
exports.symbolForTPlExternalForEachItem = symbolForTPlExternalForEachItem;
|
|
13
|
+
const symbolForTPlExternalForEachIndex = Symbol.for("tpl.externalForEachIndex");
|
|
14
|
+
exports.symbolForTPlExternalForEachIndex = symbolForTPlExternalForEachIndex;
|
|
13
15
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["symbolForAsyncComputedPropsFromHost","Symbol","for","exports","symbolForTplStateStoreId","symbolForTPlExternalForEachItem"],"sources":["../../../../src/internal/CustomTemplates/constants.ts"],"sourcesContent":["import type { BrickConf } from \"@next-core/types\";\nimport type { AsyncPropertyEntry } from \"../interfaces.js\";\n\nexport const symbolForAsyncComputedPropsFromHost = Symbol.for(\n \"tpl.asyncComputedPropsFromHost\"\n);\nexport const symbolForTplStateStoreId = Symbol.for(\"tpl.stateStoreId\");\nexport const symbolForTPlExternalForEachItem = Symbol.for(\n \"tpl.externalForEachItem\"\n);\n\nexport type RuntimeBrickConfWithTplSymbols = BrickConf &\n RuntimeBrickConfOfTplSymbols;\n\nexport interface RuntimeBrickConfOfTplSymbols {\n [symbolForAsyncComputedPropsFromHost]?: AsyncPropertyEntry[];\n [symbolForTplStateStoreId]?: string;\n [symbolForTPlExternalForEachItem]?: unknown;\n}\n"],"mappings":";;;;;;AAGO,MAAMA,mCAAmC,GAAGC,MAAM,CAACC,GAAG,CAC3D,gCACF,CAAC;AAACC,OAAA,CAAAH,mCAAA,GAAAA,mCAAA;AACK,MAAMI,wBAAwB,GAAGH,MAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;AAACC,OAAA,CAAAC,wBAAA,GAAAA,wBAAA;AAChE,MAAMC,+BAA+B,GAAGJ,MAAM,CAACC,GAAG,CACvD,yBACF,CAAC;AAACC,OAAA,CAAAE,+BAAA,GAAAA,+BAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","names":["symbolForAsyncComputedPropsFromHost","Symbol","for","exports","symbolForTplStateStoreId","symbolForTPlExternalForEachItem","symbolForTPlExternalForEachIndex"],"sources":["../../../../src/internal/CustomTemplates/constants.ts"],"sourcesContent":["import type { BrickConf } from \"@next-core/types\";\nimport type { AsyncPropertyEntry } from \"../interfaces.js\";\n\nexport const symbolForAsyncComputedPropsFromHost = Symbol.for(\n \"tpl.asyncComputedPropsFromHost\"\n);\nexport const symbolForTplStateStoreId = Symbol.for(\"tpl.stateStoreId\");\nexport const symbolForTPlExternalForEachItem = Symbol.for(\n \"tpl.externalForEachItem\"\n);\nexport const symbolForTPlExternalForEachIndex = Symbol.for(\n \"tpl.externalForEachIndex\"\n);\n\nexport type RuntimeBrickConfWithTplSymbols = BrickConf &\n RuntimeBrickConfOfTplSymbols;\n\nexport interface RuntimeBrickConfOfTplSymbols {\n [symbolForAsyncComputedPropsFromHost]?: AsyncPropertyEntry[];\n [symbolForTplStateStoreId]?: string;\n [symbolForTPlExternalForEachItem]?: unknown;\n [symbolForTPlExternalForEachIndex]?: number;\n}\n"],"mappings":";;;;;;AAGO,MAAMA,mCAAmC,GAAGC,MAAM,CAACC,GAAG,CAC3D,gCACF,CAAC;AAACC,OAAA,CAAAH,mCAAA,GAAAA,mCAAA;AACK,MAAMI,wBAAwB,GAAGH,MAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;AAACC,OAAA,CAAAC,wBAAA,GAAAA,wBAAA;AAChE,MAAMC,+BAA+B,GAAGJ,MAAM,CAACC,GAAG,CACvD,yBACF,CAAC;AAACC,OAAA,CAAAE,+BAAA,GAAAA,+BAAA;AACK,MAAMC,gCAAgC,GAAGL,MAAM,CAACC,GAAG,CACxD,0BACF,CAAC;AAACC,OAAA,CAAAG,gCAAA,GAAAA,gCAAA"}
|
|
@@ -21,6 +21,7 @@ function expandCustomTemplate(tplTagName, brickConf, hostBrick, asyncHostPropert
|
|
|
21
21
|
|
|
22
22
|
// There is a boundary for `forEachItem` and `FORM_STATE` between template internals and externals.
|
|
23
23
|
delete runtimeContext.forEachItem;
|
|
24
|
+
delete runtimeContext.forEachIndex;
|
|
24
25
|
delete runtimeContext.formStateStoreId;
|
|
25
26
|
const tplStateStore = new _DataStore.DataStore("STATE", hostBrick, rendererContext);
|
|
26
27
|
runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expandCustomTemplate.js","names":["_lodash","require","_CustomTemplates","_DataStore","_setupTemplateProxy","_setupUseBrickInTemplate","_Renderer","_Runtime","expandCustomTemplate","tplTagName","brickConf","hostBrick","asyncHostPropertyEntries","rendererContext","_hooks$flowApi","tplStateStoreId","uniqueId","runtimeContext","forEachItem","formStateStoreId","tplStateStore","DataStore","tplStateStoreMap","set","tplStateStoreScope","push","bricks","proxy","state","contracts","customTemplates","get","hooks","flowApi","collectWidgetContract","define","slots","originalExternalSlots","children","externalChildren","restBrickConf","newBrickConf","brick","tplHostMetadata","internalBricksByRef","Map","reversedProxies","properties","from","to","Object","entries","proxies","ref","hostContext","externalSlots","childrenToSlots","type","map","item","expandBrickInTemplate","brickConfInTemplate","if","slotsInTemplate","childrenInTemplate","restBrickConfInTemplate","transpiledSlots","fromEntries","slotName","slotConf","_slotConf$bricks","setupUseBrickInTemplate","setupTemplateProxy"],"sources":["../../../../src/internal/CustomTemplates/expandCustomTemplate.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n SlotsConfInTemplate,\n SlotsConfOfBricks,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { uniqueId } from \"lodash\";\nimport { customTemplates } from \"../../CustomTemplates.js\";\nimport { DataStore } from \"../data/DataStore.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./constants.js\";\nimport { setupTemplateProxy } from \"./setupTemplateProxy.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n TemplateHostBrick,\n TemplateHostContext,\n} from \"../interfaces.js\";\nimport { setupUseBrickInTemplate } from \"./setupUseBrickInTemplate.js\";\nimport { childrenToSlots } from \"../Renderer.js\";\nimport { hooks } from \"../Runtime.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nexport function expandCustomTemplate<T extends BrickConf | UseSingleBrickConf>(\n tplTagName: string,\n brickConf: T,\n hostBrick: RuntimeBrick,\n asyncHostPropertyEntries: AsyncPropertyEntry[],\n rendererContext: RendererContext\n): T {\n const tplStateStoreId = uniqueId(\"tpl-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n tplStateStoreId,\n };\n\n // There is a boundary for `forEachItem` and `FORM_STATE` between template internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.formStateStoreId;\n\n const tplStateStore = new DataStore(\"STATE\", hostBrick, rendererContext);\n runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);\n if (runtimeContext.tplStateStoreScope) {\n runtimeContext.tplStateStoreScope.push(tplStateStore);\n }\n\n const { bricks, proxy, state, contracts } = customTemplates.get(tplTagName)!;\n hooks?.flowApi?.collectWidgetContract(contracts);\n tplStateStore.define(state, runtimeContext, asyncHostPropertyEntries);\n\n const {\n slots: originalExternalSlots,\n children: externalChildren,\n ...restBrickConf\n } = brickConf;\n\n const newBrickConf = {\n ...restBrickConf,\n brick: tplTagName,\n } as T;\n\n hostBrick.tplHostMetadata = {\n internalBricksByRef: new Map(),\n tplStateStoreId,\n proxy,\n };\n\n // Reversed proxies are used for expand storyboard before rendering page.\n const reversedProxies: TemplateHostContext[\"reversedProxies\"] = {\n properties: new Map(),\n slots: new Map(),\n // mergeBases: new Map(),\n };\n\n if (proxy?.properties) {\n for (const [from, to] of Object.entries(proxy.properties)) {\n let proxies = reversedProxies.properties.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.properties.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n if (proxy?.slots) {\n for (const [from, to] of Object.entries(proxy.slots)) {\n let proxies = reversedProxies.slots.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.slots.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n const hostContext: TemplateHostContext = {\n reversedProxies,\n asyncHostPropertyEntries,\n externalSlots: childrenToSlots(externalChildren, originalExternalSlots) as\n | SlotsConfOfBricks\n | undefined,\n tplStateStoreId,\n hostBrick: hostBrick as TemplateHostBrick,\n };\n\n newBrickConf.slots = {\n \"\": {\n type: \"bricks\",\n bricks: bricks.map((item) => expandBrickInTemplate(item, hostContext)),\n },\n };\n\n return newBrickConf;\n}\n\nfunction expandBrickInTemplate(\n brickConfInTemplate: BrickConfInTemplate,\n hostContext: TemplateHostContext\n): RuntimeBrickConfWithTplSymbols {\n // Ignore `if: null` to make `looseCheckIf` working.\n if (brickConfInTemplate.if === null) {\n delete brickConfInTemplate.if;\n }\n const {\n properties,\n slots: slotsInTemplate,\n children: childrenInTemplate,\n ...restBrickConfInTemplate\n } = brickConfInTemplate;\n\n const transpiledSlots = childrenToSlots(\n childrenInTemplate,\n slotsInTemplate\n ) as SlotsConfInTemplate | undefined;\n\n const slots: SlotsConfOfBricks = Object.fromEntries(\n Object.entries(transpiledSlots ?? {}).map(([slotName, slotConf]) => [\n slotName,\n {\n type: \"bricks\",\n bricks: (slotConf.bricks ?? []).map((item) =>\n expandBrickInTemplate(item, hostContext)\n ),\n },\n ])\n );\n\n return {\n ...restBrickConfInTemplate,\n properties: setupUseBrickInTemplate(properties, hostContext),\n slots,\n ...setupTemplateProxy(hostContext, restBrickConfInTemplate.ref, slots),\n };\n}\n"],"mappings":";;;;;;AAOA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,IAAAG,mBAAA,GAAAH,OAAA;AAOA,IAAAI,wBAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AAGO,SAASO,oBAAoBA,CAClCC,UAAkB,EAClBC,SAAY,EACZC,SAAuB,EACvBC,wBAA8C,EAC9CC,eAAgC,EAC7B;EAAA,IAAAC,cAAA;EACH,MAAMC,eAAe,GAAG,IAAAC,gBAAQ,EAAC,YAAY,CAAC;EAC9C,MAAMC,cAAc,GAAG;IACrB,GAAGN,SAAS,CAACM,cAAc;IAC3BF;EACF,CAAC;;EAED;EACA,OAAOE,cAAc,CAACC,WAAW;EACjC,OAAOD,cAAc,CAACE,gBAAgB;EAEtC,MAAMC,aAAa,GAAG,IAAIC,oBAAS,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"expandCustomTemplate.js","names":["_lodash","require","_CustomTemplates","_DataStore","_setupTemplateProxy","_setupUseBrickInTemplate","_Renderer","_Runtime","expandCustomTemplate","tplTagName","brickConf","hostBrick","asyncHostPropertyEntries","rendererContext","_hooks$flowApi","tplStateStoreId","uniqueId","runtimeContext","forEachItem","forEachIndex","formStateStoreId","tplStateStore","DataStore","tplStateStoreMap","set","tplStateStoreScope","push","bricks","proxy","state","contracts","customTemplates","get","hooks","flowApi","collectWidgetContract","define","slots","originalExternalSlots","children","externalChildren","restBrickConf","newBrickConf","brick","tplHostMetadata","internalBricksByRef","Map","reversedProxies","properties","from","to","Object","entries","proxies","ref","hostContext","externalSlots","childrenToSlots","type","map","item","expandBrickInTemplate","brickConfInTemplate","if","slotsInTemplate","childrenInTemplate","restBrickConfInTemplate","transpiledSlots","fromEntries","slotName","slotConf","_slotConf$bricks","setupUseBrickInTemplate","setupTemplateProxy"],"sources":["../../../../src/internal/CustomTemplates/expandCustomTemplate.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n SlotsConfInTemplate,\n SlotsConfOfBricks,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { uniqueId } from \"lodash\";\nimport { customTemplates } from \"../../CustomTemplates.js\";\nimport { DataStore } from \"../data/DataStore.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./constants.js\";\nimport { setupTemplateProxy } from \"./setupTemplateProxy.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n TemplateHostBrick,\n TemplateHostContext,\n} from \"../interfaces.js\";\nimport { setupUseBrickInTemplate } from \"./setupUseBrickInTemplate.js\";\nimport { childrenToSlots } from \"../Renderer.js\";\nimport { hooks } from \"../Runtime.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nexport function expandCustomTemplate<T extends BrickConf | UseSingleBrickConf>(\n tplTagName: string,\n brickConf: T,\n hostBrick: RuntimeBrick,\n asyncHostPropertyEntries: AsyncPropertyEntry[],\n rendererContext: RendererContext\n): T {\n const tplStateStoreId = uniqueId(\"tpl-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n tplStateStoreId,\n };\n\n // There is a boundary for `forEachItem` and `FORM_STATE` between template internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.forEachIndex;\n delete runtimeContext.formStateStoreId;\n\n const tplStateStore = new DataStore(\"STATE\", hostBrick, rendererContext);\n runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);\n if (runtimeContext.tplStateStoreScope) {\n runtimeContext.tplStateStoreScope.push(tplStateStore);\n }\n\n const { bricks, proxy, state, contracts } = customTemplates.get(tplTagName)!;\n hooks?.flowApi?.collectWidgetContract(contracts);\n tplStateStore.define(state, runtimeContext, asyncHostPropertyEntries);\n\n const {\n slots: originalExternalSlots,\n children: externalChildren,\n ...restBrickConf\n } = brickConf;\n\n const newBrickConf = {\n ...restBrickConf,\n brick: tplTagName,\n } as T;\n\n hostBrick.tplHostMetadata = {\n internalBricksByRef: new Map(),\n tplStateStoreId,\n proxy,\n };\n\n // Reversed proxies are used for expand storyboard before rendering page.\n const reversedProxies: TemplateHostContext[\"reversedProxies\"] = {\n properties: new Map(),\n slots: new Map(),\n // mergeBases: new Map(),\n };\n\n if (proxy?.properties) {\n for (const [from, to] of Object.entries(proxy.properties)) {\n let proxies = reversedProxies.properties.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.properties.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n if (proxy?.slots) {\n for (const [from, to] of Object.entries(proxy.slots)) {\n let proxies = reversedProxies.slots.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.slots.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n const hostContext: TemplateHostContext = {\n reversedProxies,\n asyncHostPropertyEntries,\n externalSlots: childrenToSlots(externalChildren, originalExternalSlots) as\n | SlotsConfOfBricks\n | undefined,\n tplStateStoreId,\n hostBrick: hostBrick as TemplateHostBrick,\n };\n\n newBrickConf.slots = {\n \"\": {\n type: \"bricks\",\n bricks: bricks.map((item) => expandBrickInTemplate(item, hostContext)),\n },\n };\n\n return newBrickConf;\n}\n\nfunction expandBrickInTemplate(\n brickConfInTemplate: BrickConfInTemplate,\n hostContext: TemplateHostContext\n): RuntimeBrickConfWithTplSymbols {\n // Ignore `if: null` to make `looseCheckIf` working.\n if (brickConfInTemplate.if === null) {\n delete brickConfInTemplate.if;\n }\n const {\n properties,\n slots: slotsInTemplate,\n children: childrenInTemplate,\n ...restBrickConfInTemplate\n } = brickConfInTemplate;\n\n const transpiledSlots = childrenToSlots(\n childrenInTemplate,\n slotsInTemplate\n ) as SlotsConfInTemplate | undefined;\n\n const slots: SlotsConfOfBricks = Object.fromEntries(\n Object.entries(transpiledSlots ?? {}).map(([slotName, slotConf]) => [\n slotName,\n {\n type: \"bricks\",\n bricks: (slotConf.bricks ?? []).map((item) =>\n expandBrickInTemplate(item, hostContext)\n ),\n },\n ])\n );\n\n return {\n ...restBrickConfInTemplate,\n properties: setupUseBrickInTemplate(properties, hostContext),\n slots,\n ...setupTemplateProxy(hostContext, restBrickConfInTemplate.ref, slots),\n };\n}\n"],"mappings":";;;;;;AAOA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,IAAAG,mBAAA,GAAAH,OAAA;AAOA,IAAAI,wBAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AAGO,SAASO,oBAAoBA,CAClCC,UAAkB,EAClBC,SAAY,EACZC,SAAuB,EACvBC,wBAA8C,EAC9CC,eAAgC,EAC7B;EAAA,IAAAC,cAAA;EACH,MAAMC,eAAe,GAAG,IAAAC,gBAAQ,EAAC,YAAY,CAAC;EAC9C,MAAMC,cAAc,GAAG;IACrB,GAAGN,SAAS,CAACM,cAAc;IAC3BF;EACF,CAAC;;EAED;EACA,OAAOE,cAAc,CAACC,WAAW;EACjC,OAAOD,cAAc,CAACE,YAAY;EAClC,OAAOF,cAAc,CAACG,gBAAgB;EAEtC,MAAMC,aAAa,GAAG,IAAIC,oBAAS,CAAC,OAAO,EAAEX,SAAS,EAAEE,eAAe,CAAC;EACxEI,cAAc,CAACM,gBAAgB,CAACC,GAAG,CAACT,eAAe,EAAEM,aAAa,CAAC;EACnE,IAAIJ,cAAc,CAACQ,kBAAkB,EAAE;IACrCR,cAAc,CAACQ,kBAAkB,CAACC,IAAI,CAACL,aAAa,CAAC;EACvD;EAEA,MAAM;IAAEM,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC;EAAU,CAAC,GAAGC,gCAAe,CAACC,GAAG,CAACvB,UAAU,CAAE;EAC5EwB,cAAK,aAALA,cAAK,gBAAAnB,cAAA,GAALmB,cAAK,CAAEC,OAAO,cAAApB,cAAA,eAAdA,cAAA,CAAgBqB,qBAAqB,CAACL,SAAS,CAAC;EAChDT,aAAa,CAACe,MAAM,CAACP,KAAK,EAAEZ,cAAc,EAAEL,wBAAwB,CAAC;EAErE,MAAM;IACJyB,KAAK,EAAEC,qBAAqB;IAC5BC,QAAQ,EAAEC,gBAAgB;IAC1B,GAAGC;EACL,CAAC,GAAG/B,SAAS;EAEb,MAAMgC,YAAY,GAAG;IACnB,GAAGD,aAAa;IAChBE,KAAK,EAAElC;EACT,CAAM;EAENE,SAAS,CAACiC,eAAe,GAAG;IAC1BC,mBAAmB,EAAE,IAAIC,GAAG,CAAC,CAAC;IAC9B/B,eAAe;IACfa;EACF,CAAC;;EAED;EACA,MAAMmB,eAAuD,GAAG;IAC9DC,UAAU,EAAE,IAAIF,GAAG,CAAC,CAAC;IACrBT,KAAK,EAAE,IAAIS,GAAG,CAAC;IACf;EACF,CAAC;;EAED,IAAIlB,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEoB,UAAU,EAAE;IACrB,KAAK,MAAM,CAACC,IAAI,EAAEC,EAAE,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACxB,KAAK,CAACoB,UAAU,CAAC,EAAE;MACzD,IAAIK,OAAO,GAAGN,eAAe,CAACC,UAAU,CAAChB,GAAG,CAACkB,EAAE,CAACI,GAAG,CAAC;MACpD,IAAI,CAACD,OAAO,EAAE;QACZA,OAAO,GAAG,EAAE;QACZN,eAAe,CAACC,UAAU,CAACxB,GAAG,CAAC0B,EAAE,CAACI,GAAG,EAAED,OAAO,CAAC;MACjD;MACAA,OAAO,CAAC3B,IAAI,CAAC;QACXuB,IAAI;QACJC;MACF,CAAC,CAAC;IACJ;EACF;EAEA,IAAItB,KAAK,aAALA,KAAK,eAALA,KAAK,CAAES,KAAK,EAAE;IAChB,KAAK,MAAM,CAACY,IAAI,EAAEC,EAAE,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACxB,KAAK,CAACS,KAAK,CAAC,EAAE;MACpD,IAAIgB,OAAO,GAAGN,eAAe,CAACV,KAAK,CAACL,GAAG,CAACkB,EAAE,CAACI,GAAG,CAAC;MAC/C,IAAI,CAACD,OAAO,EAAE;QACZA,OAAO,GAAG,EAAE;QACZN,eAAe,CAACV,KAAK,CAACb,GAAG,CAAC0B,EAAE,CAACI,GAAG,EAAED,OAAO,CAAC;MAC5C;MACAA,OAAO,CAAC3B,IAAI,CAAC;QACXuB,IAAI;QACJC;MACF,CAAC,CAAC;IACJ;EACF;EAEA,MAAMK,WAAgC,GAAG;IACvCR,eAAe;IACfnC,wBAAwB;IACxB4C,aAAa,EAAE,IAAAC,yBAAe,EAACjB,gBAAgB,EAAEF,qBAAqB,CAEzD;IACbvB,eAAe;IACfJ,SAAS,EAAEA;EACb,CAAC;EAED+B,YAAY,CAACL,KAAK,GAAG;IACnB,EAAE,EAAE;MACFqB,IAAI,EAAE,QAAQ;MACd/B,MAAM,EAAEA,MAAM,CAACgC,GAAG,CAAEC,IAAI,IAAKC,qBAAqB,CAACD,IAAI,EAAEL,WAAW,CAAC;IACvE;EACF,CAAC;EAED,OAAOb,YAAY;AACrB;AAEA,SAASmB,qBAAqBA,CAC5BC,mBAAwC,EACxCP,WAAgC,EACA;EAChC;EACA,IAAIO,mBAAmB,CAACC,EAAE,KAAK,IAAI,EAAE;IACnC,OAAOD,mBAAmB,CAACC,EAAE;EAC/B;EACA,MAAM;IACJf,UAAU;IACVX,KAAK,EAAE2B,eAAe;IACtBzB,QAAQ,EAAE0B,kBAAkB;IAC5B,GAAGC;EACL,CAAC,GAAGJ,mBAAmB;EAEvB,MAAMK,eAAe,GAAG,IAAAV,yBAAe,EACrCQ,kBAAkB,EAClBD,eACF,CAAoC;EAEpC,MAAM3B,KAAwB,GAAGc,MAAM,CAACiB,WAAW,CACjDjB,MAAM,CAACC,OAAO,CAACe,eAAe,aAAfA,eAAe,cAAfA,eAAe,GAAI,CAAC,CAAC,CAAC,CAACR,GAAG,CAAC,CAAC,CAACU,QAAQ,EAAEC,QAAQ,CAAC;IAAA,IAAAC,gBAAA;IAAA,OAAK,CAClEF,QAAQ,EACR;MACEX,IAAI,EAAE,QAAQ;MACd/B,MAAM,EAAE,EAAA4C,gBAAA,GAACD,QAAQ,CAAC3C,MAAM,cAAA4C,gBAAA,cAAAA,gBAAA,GAAI,EAAE,EAAEZ,GAAG,CAAEC,IAAI,IACvCC,qBAAqB,CAACD,IAAI,EAAEL,WAAW,CACzC;IACF,CAAC,CACF;EAAA,EACH,CAAC;EAED,OAAO;IACL,GAAGW,uBAAuB;IAC1BlB,UAAU,EAAE,IAAAwB,gDAAuB,EAACxB,UAAU,EAAEO,WAAW,CAAC;IAC5DlB,KAAK;IACL,GAAG,IAAAoC,sCAAkB,EAAClB,WAAW,EAAEW,uBAAuB,CAACZ,GAAG,EAAEjB,KAAK;EACvE,CAAC;AACH"}
|
|
@@ -60,7 +60,7 @@ function setupTemplateProxy(hostContext, ref, slots) {
|
|
|
60
60
|
quasisMap.set(refToSlot, expandableSlot);
|
|
61
61
|
}
|
|
62
62
|
const refPosition = (_to$refPosition = to.refPosition) !== null && _to$refPosition !== void 0 ? _to$refPosition : -1;
|
|
63
|
-
expandableSlot[(0, _lodash.clamp)(refPosition < 0 ? expandableSlot.length + refPosition : refPosition, 0, expandableSlot.length - 1)].push(...((0, _general.hasOwnProperty)(hostBrick.runtimeContext, "forEachItem") ? setupTemplateExternalBricks(insertBricks, hostBrick.runtimeContext.forEachItem) : insertBricks));
|
|
63
|
+
expandableSlot[(0, _lodash.clamp)(refPosition < 0 ? expandableSlot.length + refPosition : refPosition, 0, expandableSlot.length - 1)].push(...((0, _general.hasOwnProperty)(hostBrick.runtimeContext, "forEachItem") ? setupTemplateExternalBricks(insertBricks, hostBrick.runtimeContext.forEachItem, hostBrick.runtimeContext.forEachIndex) : insertBricks));
|
|
64
64
|
}
|
|
65
65
|
for (const [slotName, quasis] of quasisMap.entries()) {
|
|
66
66
|
if (!(0, _general.hasOwnProperty)(slots, slotName)) {
|
|
@@ -84,29 +84,30 @@ function setupTemplateProxy(hostContext, ref, slots) {
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
// External bricks of a template, have the same forEachItem context as their host.
|
|
87
|
-
function setupTemplateExternalBricks(bricks, forEachItem) {
|
|
87
|
+
function setupTemplateExternalBricks(bricks, forEachItem, forEachIndex) {
|
|
88
88
|
return bricks.map(brick => {
|
|
89
89
|
var _brick$slots;
|
|
90
90
|
return {
|
|
91
91
|
...brick,
|
|
92
92
|
[_constants.symbolForTPlExternalForEachItem]: forEachItem,
|
|
93
|
+
[_constants.symbolForTPlExternalForEachIndex]: forEachIndex,
|
|
93
94
|
slots: Object.fromEntries(Object.entries((_brick$slots = brick.slots) !== null && _brick$slots !== void 0 ? _brick$slots : {}).map(([slotName, slotConf]) => {
|
|
94
95
|
var _slotConf$bricks;
|
|
95
96
|
return [slotName, slotConf.type === "routes" ? {
|
|
96
97
|
type: "routes",
|
|
97
|
-
routes: setupTemplateExternalRoutes(slotConf.routes, forEachItem)
|
|
98
|
+
routes: setupTemplateExternalRoutes(slotConf.routes, forEachItem, forEachIndex)
|
|
98
99
|
} : {
|
|
99
100
|
type: "bricks",
|
|
100
|
-
bricks: setupTemplateExternalBricks((_slotConf$bricks = slotConf.bricks) !== null && _slotConf$bricks !== void 0 ? _slotConf$bricks : [], forEachItem)
|
|
101
|
+
bricks: setupTemplateExternalBricks((_slotConf$bricks = slotConf.bricks) !== null && _slotConf$bricks !== void 0 ? _slotConf$bricks : [], forEachItem, forEachIndex)
|
|
101
102
|
}];
|
|
102
103
|
}))
|
|
103
104
|
};
|
|
104
105
|
});
|
|
105
106
|
}
|
|
106
|
-
function setupTemplateExternalRoutes(routes, forEachItem) {
|
|
107
|
+
function setupTemplateExternalRoutes(routes, forEachItem, forEachIndex) {
|
|
107
108
|
return routes.map(route => route.type && route.type !== "bricks" ? route : {
|
|
108
109
|
...route,
|
|
109
|
-
bricks: setupTemplateExternalBricks(route.bricks, forEachItem)
|
|
110
|
+
bricks: setupTemplateExternalBricks(route.bricks, forEachItem, forEachIndex)
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
113
|
//# sourceMappingURL=setupTemplateProxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupTemplateProxy.js","names":["_general","require","_lodash","_constants","_computeRealProperties","setupTemplateProxy","hostContext","ref","slots","reversedProxies","asyncHostPropertyEntries","externalSlots","tplStateStoreId","hostBrick","asyncComputedProps","propertyProxies","properties","get","getComputedProps","asyncHostProps","map","from","to","filtered","filter","entry","length","refProperty","computePropertyValue","Boolean","slotProxies","quasisMap","Map","_externalSlots$from$b","_externalSlots$from","_to$refSlot","_to$refPosition","insertBricks","bricks","refToSlot","refSlot","expandableSlot","size","hasOwnProperty","i","push","set","refPosition","clamp","runtimeContext","setupTemplateExternalBricks","forEachItem","slotName","quasis","entries","type","slotConf","flatMap","index","concat","symbolForAsyncComputedPropsFromHost","symbolForTplStateStoreId","brick","_brick$slots","symbolForTPlExternalForEachItem","Object","fromEntries","_slotConf$bricks","routes","setupTemplateExternalRoutes","route"],"sources":["../../../../src/internal/CustomTemplates/setupTemplateProxy.ts"],"sourcesContent":["import type { BrickConf, RouteConf, SlotsConfOfBricks } from \"@next-core/types\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { clamp } from \"lodash\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./constants.js\";\nimport type { AsyncPropertyEntry, TemplateHostContext } from \"../interfaces.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\n\nexport function setupTemplateProxy(\n hostContext: TemplateHostContext,\n ref: string | undefined,\n slots: SlotsConfOfBricks\n) {\n const {\n reversedProxies,\n asyncHostPropertyEntries,\n externalSlots,\n tplStateStoreId,\n hostBrick,\n } = hostContext;\n\n let asyncComputedProps: AsyncPropertyEntry[] | undefined;\n\n if (ref && reversedProxies) {\n const propertyProxies = reversedProxies.properties.get(ref);\n if (propertyProxies) {\n const getComputedProps = (\n asyncHostProps: AsyncPropertyEntry[]\n ): AsyncPropertyEntry[] => {\n return propertyProxies!\n .map(({ from, to }) => {\n const filtered = asyncHostProps.filter(\n (entry) => entry[0] === from\n );\n if (filtered.length > 0 && to.refProperty) {\n return [\n to.refProperty,\n computePropertyValue(filtered, from),\n true,\n ];\n }\n })\n .filter(Boolean) as [string, Promise<unknown>][];\n };\n\n asyncComputedProps = getComputedProps(asyncHostPropertyEntries);\n }\n\n const slotProxies = reversedProxies.slots.get(ref);\n if (slotProxies && externalSlots) {\n // Use an approach like template-literal's quasis:\n // `quasi0${0}quais1${1}quasi2...`\n // Every quasi (indexed by `refPosition`) can be slotted with multiple bricks.\n const quasisMap = new Map<string, BrickConf[][]>();\n\n for (const { from, to } of slotProxies) {\n const insertBricks = externalSlots[from]?.bricks ?? [];\n if (!insertBricks.length) {\n continue;\n }\n const refToSlot = to.refSlot ?? from;\n let expandableSlot = quasisMap.get(refToSlot);\n if (!expandableSlot) {\n expandableSlot = [];\n // The size of quasis should be the existed slotted bricks' size plus one.\n const size = hasOwnProperty(slots, refToSlot)\n ? slots[refToSlot].bricks.length + 1\n : 1;\n for (let i = 0; i < size; i += 1) {\n expandableSlot.push([]);\n }\n quasisMap.set(refToSlot, expandableSlot);\n }\n const refPosition = to.refPosition ?? -1;\n expandableSlot[\n clamp(\n refPosition < 0 ? expandableSlot.length + refPosition : refPosition,\n 0,\n expandableSlot.length - 1\n )\n ].push(\n ...(hasOwnProperty(hostBrick.runtimeContext, \"forEachItem\")\n ? setupTemplateExternalBricks(\n insertBricks,\n hostBrick.runtimeContext.forEachItem\n )\n : insertBricks)\n );\n }\n\n for (const [slotName, quasis] of quasisMap.entries()) {\n if (!hasOwnProperty(slots, slotName)) {\n slots[slotName] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n const slotConf = slots[slotName];\n slotConf.bricks = quasis.flatMap((bricks, index) =>\n index < slotConf.bricks.length\n ? bricks.concat(slotConf.bricks[index])\n : bricks\n );\n\n if (slotConf.bricks.length === 0) {\n delete slots[slotName];\n }\n }\n }\n }\n\n return {\n [symbolForAsyncComputedPropsFromHost]: asyncComputedProps,\n [symbolForTplStateStoreId]: tplStateStoreId,\n };\n}\n\n// External bricks of a template, have the same forEachItem context as their host.\nfunction setupTemplateExternalBricks(\n bricks: BrickConf[],\n forEachItem: unknown\n): BrickConf[] {\n return bricks.map((brick) => ({\n ...brick,\n [symbolForTPlExternalForEachItem]: forEachItem,\n slots: Object.fromEntries(\n Object.entries(brick.slots ?? {}).map(([slotName, slotConf]) => [\n slotName,\n slotConf.type === \"routes\"\n ? {\n type: \"routes\",\n routes: setupTemplateExternalRoutes(slotConf.routes, forEachItem),\n }\n : {\n type: \"bricks\",\n bricks: setupTemplateExternalBricks(\n slotConf.bricks ?? [],\n forEachItem\n ),\n },\n ])\n ),\n }));\n}\n\nfunction setupTemplateExternalRoutes(\n routes: RouteConf[],\n forEachItem: unknown\n): RouteConf[] {\n return routes.map((route) =>\n route.type && route.type !== \"bricks\"\n ? route\n : {\n ...route,\n bricks: setupTemplateExternalBricks(route.bricks, forEachItem),\n }\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setupTemplateProxy.js","names":["_general","require","_lodash","_constants","_computeRealProperties","setupTemplateProxy","hostContext","ref","slots","reversedProxies","asyncHostPropertyEntries","externalSlots","tplStateStoreId","hostBrick","asyncComputedProps","propertyProxies","properties","get","getComputedProps","asyncHostProps","map","from","to","filtered","filter","entry","length","refProperty","computePropertyValue","Boolean","slotProxies","quasisMap","Map","_externalSlots$from$b","_externalSlots$from","_to$refSlot","_to$refPosition","insertBricks","bricks","refToSlot","refSlot","expandableSlot","size","hasOwnProperty","i","push","set","refPosition","clamp","runtimeContext","setupTemplateExternalBricks","forEachItem","forEachIndex","slotName","quasis","entries","type","slotConf","flatMap","index","concat","symbolForAsyncComputedPropsFromHost","symbolForTplStateStoreId","brick","_brick$slots","symbolForTPlExternalForEachItem","symbolForTPlExternalForEachIndex","Object","fromEntries","_slotConf$bricks","routes","setupTemplateExternalRoutes","route"],"sources":["../../../../src/internal/CustomTemplates/setupTemplateProxy.ts"],"sourcesContent":["import type { BrickConf, RouteConf, SlotsConfOfBricks } from \"@next-core/types\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { clamp } from \"lodash\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./constants.js\";\nimport type { AsyncPropertyEntry, TemplateHostContext } from \"../interfaces.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\n\nexport function setupTemplateProxy(\n hostContext: TemplateHostContext,\n ref: string | undefined,\n slots: SlotsConfOfBricks\n) {\n const {\n reversedProxies,\n asyncHostPropertyEntries,\n externalSlots,\n tplStateStoreId,\n hostBrick,\n } = hostContext;\n\n let asyncComputedProps: AsyncPropertyEntry[] | undefined;\n\n if (ref && reversedProxies) {\n const propertyProxies = reversedProxies.properties.get(ref);\n if (propertyProxies) {\n const getComputedProps = (\n asyncHostProps: AsyncPropertyEntry[]\n ): AsyncPropertyEntry[] => {\n return propertyProxies!\n .map(({ from, to }) => {\n const filtered = asyncHostProps.filter(\n (entry) => entry[0] === from\n );\n if (filtered.length > 0 && to.refProperty) {\n return [\n to.refProperty,\n computePropertyValue(filtered, from),\n true,\n ];\n }\n })\n .filter(Boolean) as [string, Promise<unknown>][];\n };\n\n asyncComputedProps = getComputedProps(asyncHostPropertyEntries);\n }\n\n const slotProxies = reversedProxies.slots.get(ref);\n if (slotProxies && externalSlots) {\n // Use an approach like template-literal's quasis:\n // `quasi0${0}quais1${1}quasi2...`\n // Every quasi (indexed by `refPosition`) can be slotted with multiple bricks.\n const quasisMap = new Map<string, BrickConf[][]>();\n\n for (const { from, to } of slotProxies) {\n const insertBricks = externalSlots[from]?.bricks ?? [];\n if (!insertBricks.length) {\n continue;\n }\n const refToSlot = to.refSlot ?? from;\n let expandableSlot = quasisMap.get(refToSlot);\n if (!expandableSlot) {\n expandableSlot = [];\n // The size of quasis should be the existed slotted bricks' size plus one.\n const size = hasOwnProperty(slots, refToSlot)\n ? slots[refToSlot].bricks.length + 1\n : 1;\n for (let i = 0; i < size; i += 1) {\n expandableSlot.push([]);\n }\n quasisMap.set(refToSlot, expandableSlot);\n }\n const refPosition = to.refPosition ?? -1;\n expandableSlot[\n clamp(\n refPosition < 0 ? expandableSlot.length + refPosition : refPosition,\n 0,\n expandableSlot.length - 1\n )\n ].push(\n ...(hasOwnProperty(hostBrick.runtimeContext, \"forEachItem\")\n ? setupTemplateExternalBricks(\n insertBricks,\n hostBrick.runtimeContext.forEachItem,\n hostBrick.runtimeContext.forEachIndex!\n )\n : insertBricks)\n );\n }\n\n for (const [slotName, quasis] of quasisMap.entries()) {\n if (!hasOwnProperty(slots, slotName)) {\n slots[slotName] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n const slotConf = slots[slotName];\n slotConf.bricks = quasis.flatMap((bricks, index) =>\n index < slotConf.bricks.length\n ? bricks.concat(slotConf.bricks[index])\n : bricks\n );\n\n if (slotConf.bricks.length === 0) {\n delete slots[slotName];\n }\n }\n }\n }\n\n return {\n [symbolForAsyncComputedPropsFromHost]: asyncComputedProps,\n [symbolForTplStateStoreId]: tplStateStoreId,\n };\n}\n\n// External bricks of a template, have the same forEachItem context as their host.\nfunction setupTemplateExternalBricks(\n bricks: BrickConf[],\n forEachItem: unknown,\n forEachIndex: number\n): BrickConf[] {\n return bricks.map((brick) => ({\n ...brick,\n [symbolForTPlExternalForEachItem]: forEachItem,\n [symbolForTPlExternalForEachIndex]: forEachIndex,\n slots: Object.fromEntries(\n Object.entries(brick.slots ?? {}).map(([slotName, slotConf]) => [\n slotName,\n slotConf.type === \"routes\"\n ? {\n type: \"routes\",\n routes: setupTemplateExternalRoutes(\n slotConf.routes,\n forEachItem,\n forEachIndex\n ),\n }\n : {\n type: \"bricks\",\n bricks: setupTemplateExternalBricks(\n slotConf.bricks ?? [],\n forEachItem,\n forEachIndex\n ),\n },\n ])\n ),\n }));\n}\n\nfunction setupTemplateExternalRoutes(\n routes: RouteConf[],\n forEachItem: unknown,\n forEachIndex: number\n): RouteConf[] {\n return routes.map((route) =>\n route.type && route.type !== \"bricks\"\n ? route\n : {\n ...route,\n bricks: setupTemplateExternalBricks(\n route.bricks,\n forEachItem,\n forEachIndex\n ),\n }\n );\n}\n"],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ function expandFormRenderer(formData, hostBrickConf, hostBrick, asyncHostPropert
|
|
|
21
21
|
|
|
22
22
|
// There is a boundary for `forEachItem` and `STATE` between form internals and externals.
|
|
23
23
|
delete runtimeContext.forEachItem;
|
|
24
|
+
delete runtimeContext.forEachIndex;
|
|
24
25
|
delete runtimeContext.tplStateStoreId;
|
|
25
26
|
const formStateStore = new _DataStore.DataStore("FORM_STATE", undefined, rendererContext);
|
|
26
27
|
runtimeContext.formStateStoreMap.set(formStateStoreId, formStateStore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expandFormRenderer.js","names":["_general","require","_lodash","_DataStore","_getDefaultProperties","_constants","formContainers","expandFormRenderer","formData","hostBrickConf","hostBrick","asyncHostPropertyEntries","rendererContext","_normalizedFormData$c","_hostBrickConf$proper","normalizedFormData","JSON","parse","formStateStoreId","uniqueId","runtimeContext","forEachItem","tplStateStoreId","formStateStore","DataStore","undefined","formStateStoreMap","set","formStateStoreScope","push","context","some","ctx","name","define","formConf","formSchemaToBrick","formSchema","fields","includes","brick","events","mergeEvents","renderRoot","properties","slots","children","style","padding","schema","id","bricks","mountPoint","instanceId","iid","field","find","item","fieldId","defaults","getDefaultProperties","brickConf","slot","formSchemasToBricks","symbolForFormStateStoreId","hasOwnProperty","if","schemas","Array","isArray","map","targetEvents","sourceEvents","eventType","handlers","Object","entries","flat"],"sources":["../../../../src/internal/FormRenderer/expandFormRenderer.ts"],"sourcesContent":["import type { BrickConf, BrickEventsMap } from \"@next-core/types\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { uniqueId } from \"lodash\";\nimport { DataStore } from \"../data/DataStore.js\";\nimport type { AsyncPropertyEntry, RuntimeBrick } from \"../interfaces.js\";\nimport type {\n FieldProperties,\n FormDataProperties,\n FormSchemaProperties,\n} from \"./interfaces.js\";\nimport { getDefaultProperties } from \"./getDefaultProperties.js\";\nimport { symbolForFormStateStoreId } from \"./constants.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst formContainers = [\"forms.general-form\", \"form.general-form\", \"eo-form\"];\n\nexport function expandFormRenderer(\n formData: unknown,\n hostBrickConf: BrickConf,\n hostBrick: RuntimeBrick,\n asyncHostPropertyEntries: AsyncPropertyEntry[],\n rendererContext: RendererContext\n): BrickConf {\n const normalizedFormData = (\n typeof formData === \"string\" ? JSON.parse(formData) : formData\n ) as FormDataProperties;\n\n const formStateStoreId = uniqueId(\"form-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n formStateStoreId,\n };\n\n // There is a boundary for `forEachItem` and `STATE` between form internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.tplStateStoreId;\n\n const formStateStore = new DataStore(\n \"FORM_STATE\",\n undefined,\n rendererContext\n );\n runtimeContext.formStateStoreMap.set(formStateStoreId, formStateStore);\n if (runtimeContext.formStateStoreScope) {\n runtimeContext.formStateStoreScope.push(formStateStore);\n }\n\n // Always add a state of `params`.\n const context = normalizedFormData.context ?? [];\n if (!context.some((ctx) => ctx.name === \"params\")) {\n context.push({ name: \"params\" });\n }\n\n formStateStore.define(context, runtimeContext, asyncHostPropertyEntries);\n\n const formConf = formSchemaToBrick(\n normalizedFormData.formSchema,\n normalizedFormData.fields,\n formStateStoreId\n );\n\n if (formContainers.includes(formConf.brick) && hostBrickConf.events) {\n formConf.events = mergeEvents(formConf.events, hostBrickConf.events);\n }\n\n const renderRoot =\n typeof hostBrickConf.properties?.renderRoot !== \"boolean\" ||\n hostBrickConf.properties.renderRoot;\n\n if (renderRoot) {\n return {\n ...hostBrickConf,\n slots: undefined,\n children: [\n {\n brick: \"eo-micro-view\",\n properties: { style: { padding: \"12px\" } },\n children: [formConf],\n },\n ],\n };\n }\n\n return {\n ...hostBrickConf,\n slots: undefined,\n children: [formConf],\n };\n}\n\nfunction formSchemaToBrick(\n schema: FormSchemaProperties,\n fields: FieldProperties[],\n formStateStoreId: string\n): BrickConf {\n const { id, bricks, events, context, mountPoint, instanceId: iid } = schema;\n let { brick, properties } = schema;\n\n // 根据字段类型获取默认配置\n const field = fields.find((item: FieldProperties) => item.fieldId === id);\n if (field) {\n const defaults = getDefaultProperties(field);\n if (!brick) {\n brick = defaults.brick;\n }\n properties = {\n ...defaults.properties,\n ...properties,\n };\n }\n\n const brickConf = {\n brick,\n properties,\n iid,\n slot: mountPoint,\n events,\n context,\n children: formSchemasToBricks(bricks, fields, formStateStoreId),\n [symbolForFormStateStoreId]: formStateStoreId,\n } as BrickConf;\n\n if (hasOwnProperty(schema, \"if\")) {\n brickConf.if = schema.if;\n }\n\n return brickConf;\n}\n\nfunction formSchemasToBricks(\n schemas: FormSchemaProperties[] | undefined,\n fields: FieldProperties[],\n formStateStoreId: string\n): BrickConf[] | undefined {\n if (Array.isArray(schemas)) {\n return schemas.map((schema) =>\n formSchemaToBrick(schema, fields, formStateStoreId)\n );\n }\n}\n\nfunction mergeEvents(\n targetEvents: BrickEventsMap | undefined,\n sourceEvents: BrickEventsMap\n): BrickEventsMap {\n const events = targetEvents ?? {};\n\n for (const [eventType, handlers] of Object.entries(sourceEvents)) {\n events[eventType] = hasOwnProperty(events, eventType)\n ? [events[eventType], handlers].flat()\n : handlers;\n }\n\n return events;\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAOA,IAAAG,qBAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAGA,MAAMK,cAAc,GAAG,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,SAAS,CAAC;AAEtE,SAASC,kBAAkBA,CAChCC,QAAiB,EACjBC,aAAwB,EACxBC,SAAuB,EACvBC,wBAA8C,EAC9CC,eAAgC,EACrB;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EACX,MAAMC,kBAAkB,GACtB,OAAOP,QAAQ,KAAK,QAAQ,GAAGQ,IAAI,CAACC,KAAK,CAACT,QAAQ,CAAC,GAAGA,QACjC;EAEvB,MAAMU,gBAAgB,GAAG,IAAAC,gBAAQ,EAAC,aAAa,CAAC;EAChD,MAAMC,cAAc,GAAG;IACrB,GAAGV,SAAS,CAACU,cAAc;IAC3BF;EACF,CAAC;;EAED;EACA,OAAOE,cAAc,CAACC,WAAW;EACjC,OAAOD,cAAc,CAACE,eAAe;EAErC,MAAMC,cAAc,GAAG,IAAIC,oBAAS,CAClC,YAAY,EACZC,SAAS,
|
|
1
|
+
{"version":3,"file":"expandFormRenderer.js","names":["_general","require","_lodash","_DataStore","_getDefaultProperties","_constants","formContainers","expandFormRenderer","formData","hostBrickConf","hostBrick","asyncHostPropertyEntries","rendererContext","_normalizedFormData$c","_hostBrickConf$proper","normalizedFormData","JSON","parse","formStateStoreId","uniqueId","runtimeContext","forEachItem","forEachIndex","tplStateStoreId","formStateStore","DataStore","undefined","formStateStoreMap","set","formStateStoreScope","push","context","some","ctx","name","define","formConf","formSchemaToBrick","formSchema","fields","includes","brick","events","mergeEvents","renderRoot","properties","slots","children","style","padding","schema","id","bricks","mountPoint","instanceId","iid","field","find","item","fieldId","defaults","getDefaultProperties","brickConf","slot","formSchemasToBricks","symbolForFormStateStoreId","hasOwnProperty","if","schemas","Array","isArray","map","targetEvents","sourceEvents","eventType","handlers","Object","entries","flat"],"sources":["../../../../src/internal/FormRenderer/expandFormRenderer.ts"],"sourcesContent":["import type { BrickConf, BrickEventsMap } from \"@next-core/types\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { uniqueId } from \"lodash\";\nimport { DataStore } from \"../data/DataStore.js\";\nimport type { AsyncPropertyEntry, RuntimeBrick } from \"../interfaces.js\";\nimport type {\n FieldProperties,\n FormDataProperties,\n FormSchemaProperties,\n} from \"./interfaces.js\";\nimport { getDefaultProperties } from \"./getDefaultProperties.js\";\nimport { symbolForFormStateStoreId } from \"./constants.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst formContainers = [\"forms.general-form\", \"form.general-form\", \"eo-form\"];\n\nexport function expandFormRenderer(\n formData: unknown,\n hostBrickConf: BrickConf,\n hostBrick: RuntimeBrick,\n asyncHostPropertyEntries: AsyncPropertyEntry[],\n rendererContext: RendererContext\n): BrickConf {\n const normalizedFormData = (\n typeof formData === \"string\" ? JSON.parse(formData) : formData\n ) as FormDataProperties;\n\n const formStateStoreId = uniqueId(\"form-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n formStateStoreId,\n };\n\n // There is a boundary for `forEachItem` and `STATE` between form internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.forEachIndex;\n delete runtimeContext.tplStateStoreId;\n\n const formStateStore = new DataStore(\n \"FORM_STATE\",\n undefined,\n rendererContext\n );\n runtimeContext.formStateStoreMap.set(formStateStoreId, formStateStore);\n if (runtimeContext.formStateStoreScope) {\n runtimeContext.formStateStoreScope.push(formStateStore);\n }\n\n // Always add a state of `params`.\n const context = normalizedFormData.context ?? [];\n if (!context.some((ctx) => ctx.name === \"params\")) {\n context.push({ name: \"params\" });\n }\n\n formStateStore.define(context, runtimeContext, asyncHostPropertyEntries);\n\n const formConf = formSchemaToBrick(\n normalizedFormData.formSchema,\n normalizedFormData.fields,\n formStateStoreId\n );\n\n if (formContainers.includes(formConf.brick) && hostBrickConf.events) {\n formConf.events = mergeEvents(formConf.events, hostBrickConf.events);\n }\n\n const renderRoot =\n typeof hostBrickConf.properties?.renderRoot !== \"boolean\" ||\n hostBrickConf.properties.renderRoot;\n\n if (renderRoot) {\n return {\n ...hostBrickConf,\n slots: undefined,\n children: [\n {\n brick: \"eo-micro-view\",\n properties: { style: { padding: \"12px\" } },\n children: [formConf],\n },\n ],\n };\n }\n\n return {\n ...hostBrickConf,\n slots: undefined,\n children: [formConf],\n };\n}\n\nfunction formSchemaToBrick(\n schema: FormSchemaProperties,\n fields: FieldProperties[],\n formStateStoreId: string\n): BrickConf {\n const { id, bricks, events, context, mountPoint, instanceId: iid } = schema;\n let { brick, properties } = schema;\n\n // 根据字段类型获取默认配置\n const field = fields.find((item: FieldProperties) => item.fieldId === id);\n if (field) {\n const defaults = getDefaultProperties(field);\n if (!brick) {\n brick = defaults.brick;\n }\n properties = {\n ...defaults.properties,\n ...properties,\n };\n }\n\n const brickConf = {\n brick,\n properties,\n iid,\n slot: mountPoint,\n events,\n context,\n children: formSchemasToBricks(bricks, fields, formStateStoreId),\n [symbolForFormStateStoreId]: formStateStoreId,\n } as BrickConf;\n\n if (hasOwnProperty(schema, \"if\")) {\n brickConf.if = schema.if;\n }\n\n return brickConf;\n}\n\nfunction formSchemasToBricks(\n schemas: FormSchemaProperties[] | undefined,\n fields: FieldProperties[],\n formStateStoreId: string\n): BrickConf[] | undefined {\n if (Array.isArray(schemas)) {\n return schemas.map((schema) =>\n formSchemaToBrick(schema, fields, formStateStoreId)\n );\n }\n}\n\nfunction mergeEvents(\n targetEvents: BrickEventsMap | undefined,\n sourceEvents: BrickEventsMap\n): BrickEventsMap {\n const events = targetEvents ?? {};\n\n for (const [eventType, handlers] of Object.entries(sourceEvents)) {\n events[eventType] = hasOwnProperty(events, eventType)\n ? [events[eventType], handlers].flat()\n : handlers;\n }\n\n return events;\n}\n"],"mappings":"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"}
|
|
@@ -176,9 +176,10 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
|
|
|
176
176
|
formStateStoreId
|
|
177
177
|
};
|
|
178
178
|
if ((0, _general.hasOwnProperty)(brickConf, _constants.symbolForTPlExternalForEachItem)) {
|
|
179
|
-
// The external bricks of a template should restore their `forEachItem`
|
|
180
|
-
// from their host.
|
|
179
|
+
// The external bricks of a template should restore their `forEachItem` and
|
|
180
|
+
// `forEachIndex` from their host.
|
|
181
181
|
runtimeContext.forEachItem = brickConf[_constants.symbolForTPlExternalForEachItem];
|
|
182
|
+
runtimeContext.forEachIndex = brickConf[_constants.symbolForTPlExternalForEachIndex];
|
|
182
183
|
}
|
|
183
184
|
const {
|
|
184
185
|
context
|
|
@@ -414,6 +415,7 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
|
|
|
414
415
|
...runtimeContext
|
|
415
416
|
};
|
|
416
417
|
delete childRuntimeContext.forEachItem;
|
|
418
|
+
delete childRuntimeContext.forEachIndex;
|
|
417
419
|
} else {
|
|
418
420
|
childRuntimeContext = runtimeContext;
|
|
419
421
|
}
|
|
@@ -533,7 +535,8 @@ async function renderForEach(returnNode, dataSource, bricks, runtimeContext, ren
|
|
|
533
535
|
const rows = dataSource.length;
|
|
534
536
|
const rendered = await Promise.all(dataSource.map((item, i) => Promise.all(bricks.map((brickConf, j) => renderBrick(returnNode, brickConf, {
|
|
535
537
|
...runtimeContext,
|
|
536
|
-
forEachItem: item
|
|
538
|
+
forEachItem: item,
|
|
539
|
+
forEachIndex: i
|
|
537
540
|
}, rendererContext, parentRoutes, slotId, keyPath.concat(i * rows + j), tplStack && new Map(tplStack))))));
|
|
538
541
|
|
|
539
542
|
// 多层构件并行异步转换,但转换的结果按原顺序串行合并。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.js","names":["_loader","require","_cook","_general","_storyboard","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_evaluate","_matchStoryboard","_bindListeners","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","matchRoutes","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","match","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","path","menuRequest","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tag","RenderTag","BRICK","memoizeMenuRequests","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_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","_brickConf$lifeCycle","ensureValidControlBrick","renderControlNode","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","controlOutput","scopedStores","postAsyncRender","listenerFactory","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","registerArbitraryLifeCycle","test","customTemplates","get","catchLoad","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","return","events","portal","iid","ref","usedProcessors","strictCollectMemberUsage","size","loadProcessorsImperatively","join","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","childRuntimeContext","loadChildren","routeSlotIndexes","Set","entries","childSlotId","slotConf","flags","add","performIncrementalRender","location","homepage","pathname","matchHomepage","every","matchRoute","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","childrenOutput","has","child","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","flushStableLoadBricks","waitForAll","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem`\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 (runtimeContext: RuntimeContext) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const controlOutput = await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n controlOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n controlOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[]\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Renderer.js","names":["_loader","require","_cook","_general","_storyboard","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_evaluate","_matchStoryboard","_bindListeners","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","matchRoutes","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","match","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","path","menuRequest","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tag","RenderTag","BRICK","memoizeMenuRequests","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_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","forEachIndex","symbolForTPlExternalForEachIndex","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","renderControlNode","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","controlOutput","scopedStores","postAsyncRender","listenerFactory","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","registerArbitraryLifeCycle","test","customTemplates","get","catchLoad","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","return","events","portal","iid","ref","usedProcessors","strictCollectMemberUsage","size","loadProcessorsImperatively","join","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","childRuntimeContext","loadChildren","routeSlotIndexes","Set","entries","childSlotId","slotConf","flags","add","performIncrementalRender","location","homepage","pathname","matchHomepage","every","matchRoute","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","childrenOutput","has","child","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","flushStableLoadBricks","waitForAll","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const controlOutput = await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n controlOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n controlOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
|
|
@@ -265,13 +265,17 @@ runtimeContext, options = {}, isAsync) {
|
|
|
265
265
|
});
|
|
266
266
|
break;
|
|
267
267
|
case "ITEM":
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
268
|
+
case "INDEX":
|
|
269
|
+
{
|
|
270
|
+
const property = variableName === "ITEM" ? "forEachItem" : "forEachIndex";
|
|
271
|
+
if (!(0, _general.hasOwnProperty)(runtimeContext, property)) {
|
|
272
|
+
// eslint-disable-next-line no-console
|
|
273
|
+
console.error(`Using \`${variableName}\` but no \`:forEach\` is found, check your expression: "${raw}"`);
|
|
274
|
+
} else {
|
|
275
|
+
globalVariables[variableName] = runtimeContext[property];
|
|
276
|
+
}
|
|
277
|
+
break;
|
|
273
278
|
}
|
|
274
|
-
break;
|
|
275
279
|
case "LOCAL_STORAGE":
|
|
276
280
|
globalVariables[variableName] = (0, _proxyFactories.getReadOnlyProxy)({
|
|
277
281
|
getItem: (0, _getStorageItem.getStorageItem)("local")
|