@next-core/runtime 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/cjs/Dialog.js +49 -0
  2. package/dist/cjs/Dialog.js.map +1 -0
  3. package/dist/cjs/Notification.js +30 -0
  4. package/dist/cjs/Notification.js.map +1 -0
  5. package/dist/cjs/StoryboardFunctionRegistry.js +14 -0
  6. package/dist/cjs/StoryboardFunctionRegistry.js.map +1 -1
  7. package/dist/cjs/handleHttpError.js +33 -18
  8. package/dist/cjs/handleHttpError.js.map +1 -1
  9. package/dist/cjs/index.js +19 -3
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/internal/CustomTemplates/utils.js +1 -1
  12. package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
  13. package/dist/cjs/internal/Renderer.js +2 -3
  14. package/dist/cjs/internal/Renderer.js.map +1 -1
  15. package/dist/cjs/internal/Runtime.js +21 -11
  16. package/dist/cjs/internal/Runtime.js.map +1 -1
  17. package/dist/cjs/internal/bindListeners.js +7 -2
  18. package/dist/cjs/internal/bindListeners.js.map +1 -1
  19. package/dist/cjs/internal/compute/checkIf.js +4 -0
  20. package/dist/cjs/internal/compute/checkIf.js.map +1 -1
  21. package/dist/cjs/internal/compute/getNextStateOfUseBrick.js +4 -4
  22. package/dist/cjs/internal/compute/getNextStateOfUseBrick.js.map +1 -1
  23. package/dist/cjs/internal/enums.js +4 -4
  24. package/dist/cjs/internal/enums.js.map +1 -1
  25. package/dist/cjs/internal/historyExtended.js +21 -0
  26. package/dist/cjs/internal/historyExtended.js.map +1 -1
  27. package/dist/cjs/internal/i18n.js +31 -0
  28. package/dist/cjs/internal/i18n.js.map +1 -0
  29. package/dist/cjs/internal/mediaQuery.js +4 -4
  30. package/dist/cjs/internal/mediaQuery.js.map +1 -1
  31. package/dist/cjs/internal/secret_internals.js +5 -0
  32. package/dist/cjs/internal/secret_internals.js.map +1 -1
  33. package/dist/esm/CustomTemplates.js.map +1 -1
  34. package/dist/esm/Dialog.js +40 -0
  35. package/dist/esm/Dialog.js.map +1 -0
  36. package/dist/esm/Notification.js +21 -0
  37. package/dist/esm/Notification.js.map +1 -0
  38. package/dist/esm/StoryboardFunctionRegistry.js +12 -0
  39. package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
  40. package/dist/esm/handleHttpError.js +32 -17
  41. package/dist/esm/handleHttpError.js.map +1 -1
  42. package/dist/esm/index.js +4 -2
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js +2 -2
  45. package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  46. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +2 -2
  47. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  48. package/dist/esm/internal/CustomTemplates/utils.js +1 -1
  49. package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
  50. package/dist/esm/internal/Renderer.js +2 -3
  51. package/dist/esm/internal/Renderer.js.map +1 -1
  52. package/dist/esm/internal/Runtime.js +21 -11
  53. package/dist/esm/internal/Runtime.js.map +1 -1
  54. package/dist/esm/internal/bindListeners.js +7 -2
  55. package/dist/esm/internal/bindListeners.js.map +1 -1
  56. package/dist/esm/internal/checkInstalledApps.js.map +1 -1
  57. package/dist/esm/internal/compute/checkIf.js +5 -0
  58. package/dist/esm/internal/compute/checkIf.js.map +1 -1
  59. package/dist/esm/internal/compute/getNextStateOfUseBrick.js +3 -3
  60. package/dist/esm/internal/compute/getNextStateOfUseBrick.js.map +1 -1
  61. package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
  62. package/dist/esm/internal/data/DataStore.js.map +1 -1
  63. package/dist/esm/internal/data/FlowApiProvider.js +6 -6
  64. package/dist/esm/internal/data/FlowApiProvider.js.map +1 -1
  65. package/dist/esm/internal/enums.js +3 -3
  66. package/dist/esm/internal/enums.js.map +1 -1
  67. package/dist/esm/internal/historyExtended.js +21 -0
  68. package/dist/esm/internal/historyExtended.js.map +1 -1
  69. package/dist/esm/internal/i18n.js +22 -0
  70. package/dist/esm/internal/i18n.js.map +1 -0
  71. package/dist/esm/internal/loadBootstrapData.js +19 -18
  72. package/dist/esm/internal/loadBootstrapData.js.map +1 -1
  73. package/dist/esm/internal/mediaQuery.js +3 -3
  74. package/dist/esm/internal/mediaQuery.js.map +1 -1
  75. package/dist/esm/internal/menu/interfaces.js +4 -0
  76. package/dist/esm/internal/menu/interfaces.js.map +1 -1
  77. package/dist/esm/internal/menu/mergeMenu.js +11 -10
  78. package/dist/esm/internal/menu/mergeMenu.js.map +1 -1
  79. package/dist/esm/internal/secret_internals.js +5 -0
  80. package/dist/esm/internal/secret_internals.js.map +1 -1
  81. package/dist/types/Dialog.d.ts +14 -0
  82. package/dist/types/Notification.d.ts +10 -0
  83. package/dist/types/index.d.ts +4 -1
  84. package/dist/types/internal/Runtime.d.ts +1 -4
  85. package/dist/types/internal/i18n.d.ts +14 -0
  86. package/dist/types/tsdoc-metadata.json +11 -0
  87. package/package.json +16 -12
@@ -58,7 +58,7 @@ export function setupTemplateProxy(hostContext, ref, slots) {
58
58
  var refPosition = (_to$refPosition = to.refPosition) !== null && _to$refPosition !== void 0 ? _to$refPosition : -1;
59
59
  expandableSlot[clamp(refPosition < 0 ? expandableSlot.length + refPosition : refPosition, 0, expandableSlot.length - 1)].push(...(hasOwnProperty(hostBrick.runtimeContext, "forEachItem") ? setupTemplateExternalBricks(insertBricks, hostBrick.runtimeContext.forEachItem) : insertBricks));
60
60
  }
61
- var _loop = function (slotName, quasis) {
61
+ var _loop = function () {
62
62
  if (!hasOwnProperty(slots, slotName)) {
63
63
  slots[slotName] = {
64
64
  type: "bricks",
@@ -72,7 +72,7 @@ export function setupTemplateProxy(hostContext, ref, slots) {
72
72
  }
73
73
  };
74
74
  for (var [slotName, quasis] of quasisMap.entries()) {
75
- _loop(slotName, quasis);
75
+ _loop();
76
76
  }
77
77
  }
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setupTemplateProxy.js","names":["hasOwnProperty","clamp","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","setupTemplateProxy","hostContext","ref","slots","reversedProxies","asyncHostProperties","externalSlots","tplStateStoreId","hostBrick","asyncComputedProps","propertyProxies","properties","get","getComputedProps","hostProps","props","from","to","propValue","undefined","refProperty","then","slotProxies","quasisMap","Map","_externalSlots$from$b","_externalSlots$from","_to$refSlot","_to$refPosition","insertBricks","bricks","length","refToSlot","refSlot","expandableSlot","size","i","push","set","refPosition","runtimeContext","setupTemplateExternalBricks","forEachItem","_loop","slotName","quasis","type","slotConf","flatMap","index","concat","entries","map","brick","_brick$slots","_objectSpread","Object","fromEntries","_ref","_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 { AsyncProperties, TemplateHostContext } from \"../interfaces.js\";\n\nexport function setupTemplateProxy(\n hostContext: TemplateHostContext,\n ref: string | undefined,\n slots: SlotsConfOfBricks\n) {\n const {\n reversedProxies,\n asyncHostProperties,\n externalSlots,\n tplStateStoreId,\n hostBrick,\n } = hostContext;\n\n let asyncComputedProps: AsyncProperties | undefined;\n\n if (ref && reversedProxies) {\n const propertyProxies = reversedProxies.properties.get(ref);\n if (propertyProxies) {\n const getComputedProps = (hostProps: Record<string, unknown>) => {\n const props: Record<string, unknown> = {};\n for (const { from, to } of propertyProxies) {\n const propValue = hostProps[from];\n if (propValue !== undefined && to.refProperty) {\n props[to.refProperty] = propValue;\n }\n }\n return props;\n };\n\n asyncComputedProps = (asyncHostProperties as AsyncProperties).then(\n getComputedProps\n );\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":["hasOwnProperty","clamp","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","setupTemplateProxy","hostContext","ref","slots","reversedProxies","asyncHostProperties","externalSlots","tplStateStoreId","hostBrick","asyncComputedProps","propertyProxies","properties","get","getComputedProps","hostProps","props","from","to","propValue","undefined","refProperty","then","slotProxies","quasisMap","Map","_externalSlots$from$b","_externalSlots$from","_to$refSlot","_to$refPosition","insertBricks","bricks","length","refToSlot","refSlot","expandableSlot","size","i","push","set","refPosition","runtimeContext","setupTemplateExternalBricks","forEachItem","_loop","slotName","type","slotConf","quasis","flatMap","index","concat","entries","map","brick","_brick$slots","_objectSpread","Object","fromEntries","_ref","_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 { AsyncProperties, TemplateHostContext } from \"../interfaces.js\";\n\nexport function setupTemplateProxy(\n hostContext: TemplateHostContext,\n ref: string | undefined,\n slots: SlotsConfOfBricks\n) {\n const {\n reversedProxies,\n asyncHostProperties,\n externalSlots,\n tplStateStoreId,\n hostBrick,\n } = hostContext;\n\n let asyncComputedProps: AsyncProperties | undefined;\n\n if (ref && reversedProxies) {\n const propertyProxies = reversedProxies.properties.get(ref);\n if (propertyProxies) {\n const getComputedProps = (hostProps: Record<string, unknown>) => {\n const props: Record<string, unknown> = {};\n for (const { from, to } of propertyProxies) {\n const propValue = hostProps[from];\n if (propValue !== undefined && to.refProperty) {\n props[to.refProperty] = propValue;\n }\n }\n return props;\n };\n\n asyncComputedProps = (asyncHostProperties as AsyncProperties).then(\n getComputedProps\n );\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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"}
@@ -23,7 +23,7 @@ export function getTplHostElement(runtimeContext, using, extraInfo) {
23
23
  }
24
24
  export function getTagNameOfCustomTemplate(brick, appId) {
25
25
  // When a template is registered by an app, it's namespace maybe missed.
26
- if (!brick.includes(".") && appId) {
26
+ if (!brick.includes(".") && brick.startsWith("tpl-") && appId) {
27
27
  var tagName = "".concat(appId, ".").concat(brick);
28
28
  if (customTemplates.get(tagName)) {
29
29
  return tagName;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["customTemplates","getTplStateStore","_ref","using","extraInfo","tplStateStoreId","tplStateStoreMap","Error","concat","store","get","getTplHostElement","runtimeContext","hostElement","hostBrick","element","getTagNameOfCustomTemplate","brick","appId","includes","tagName"],"sources":["../../../../src/internal/CustomTemplates/utils.ts"],"sourcesContent":["import type { DataStore } from \"../data/DataStore.js\";\nimport type { RuntimeBrickElement, RuntimeContext } from \"../interfaces.js\";\nimport { customTemplates } from \"../../CustomTemplates.js\";\n\ntype MinimalTplStateStoreContext = Pick<\n RuntimeContext,\n \"tplStateStoreId\" | \"tplStateStoreMap\"\n>;\n\nexport function getTplStateStore(\n { tplStateStoreId, tplStateStoreMap }: MinimalTplStateStoreContext,\n using: string,\n extraInfo?: string\n): DataStore<\"STATE\"> {\n if (!tplStateStoreId) {\n throw new Error(\n `Using \"${using}\" outside of a custom template${extraInfo ?? \"\"}`\n );\n }\n const store = tplStateStoreMap.get(tplStateStoreId);\n if (!store) {\n throw new Error(\n `Template state store is not found when using \"${using}\"${\n extraInfo ?? \"\"\n }.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n return store!;\n}\n\nexport function getTplHostElement(\n runtimeContext: MinimalTplStateStoreContext,\n using: string,\n extraInfo?: string\n): RuntimeBrickElement {\n const store = getTplStateStore(runtimeContext, using, extraInfo);\n const hostElement = store.hostBrick!.element;\n if (!hostElement) {\n throw new Error(\n `Template host element is gone when using \"${using}\"${\n extraInfo ?? \"\"\n }.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n return hostElement!;\n}\n\nexport function getTagNameOfCustomTemplate(\n brick: string,\n appId?: string\n): false | string {\n // When a template is registered by an app, it's namespace maybe missed.\n if (!brick.includes(\".\") && appId) {\n const tagName = `${appId}.${brick}`;\n if (customTemplates.get(tagName)) {\n return tagName;\n }\n }\n if (customTemplates.get(brick)) {\n return brick;\n }\n return false;\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ,0BAA0B;AAO1D,OAAO,SAASC,gBAAgBA,CAAAC,IAAA,EAE9BC,KAAa,EACbC,SAAkB,EACE;EAAA,IAHpB;IAAEC,eAAe;IAAEC;EAA8C,CAAC,GAAAJ,IAAA;EAIlE,IAAI,CAACG,eAAe,EAAE;IACpB,MAAM,IAAIE,KAAK,YAAAC,MAAA,CACHL,KAAK,qCAAAK,MAAA,CAAiCJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,EAChE;EACH;EACA,IAAMK,KAAK,GAAGH,gBAAgB,CAACI,GAAG,CAACL,eAAe,CAAC;EACnD,IAAI,CAACI,KAAK,EAAE;IACV,MAAM,IAAIF,KAAK,mDAAAC,MAAA,CACoCL,KAAK,QAAAK,MAAA,CACpDJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,uDAElB;EACH;EACA,OAAOK,KAAK;AACd;AAEA,OAAO,SAASE,iBAAiBA,CAC/BC,cAA2C,EAC3CT,KAAa,EACbC,SAAkB,EACG;EACrB,IAAMK,KAAK,GAAGR,gBAAgB,CAACW,cAAc,EAAET,KAAK,EAAEC,SAAS,CAAC;EAChE,IAAMS,WAAW,GAAGJ,KAAK,CAACK,SAAS,CAAEC,OAAO;EAC5C,IAAI,CAACF,WAAW,EAAE;IAChB,MAAM,IAAIN,KAAK,+CAAAC,MAAA,CACgCL,KAAK,QAAAK,MAAA,CAChDJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,uDAElB;EACH;EACA,OAAOS,WAAW;AACpB;AAEA,OAAO,SAASG,0BAA0BA,CACxCC,KAAa,EACbC,KAAc,EACE;EAChB;EACA,IAAI,CAACD,KAAK,CAACE,QAAQ,CAAC,GAAG,CAAC,IAAID,KAAK,EAAE;IACjC,IAAME,OAAO,MAAAZ,MAAA,CAAMU,KAAK,OAAAV,MAAA,CAAIS,KAAK,CAAE;IACnC,IAAIjB,eAAe,CAACU,GAAG,CAACU,OAAO,CAAC,EAAE;MAChC,OAAOA,OAAO;IAChB;EACF;EACA,IAAIpB,eAAe,CAACU,GAAG,CAACO,KAAK,CAAC,EAAE;IAC9B,OAAOA,KAAK;EACd;EACA,OAAO,KAAK;AACd"}
1
+ {"version":3,"file":"utils.js","names":["customTemplates","getTplStateStore","_ref","using","extraInfo","tplStateStoreId","tplStateStoreMap","Error","concat","store","get","getTplHostElement","runtimeContext","hostElement","hostBrick","element","getTagNameOfCustomTemplate","brick","appId","includes","startsWith","tagName"],"sources":["../../../../src/internal/CustomTemplates/utils.ts"],"sourcesContent":["import type { DataStore } from \"../data/DataStore.js\";\nimport type { RuntimeBrickElement, RuntimeContext } from \"../interfaces.js\";\nimport { customTemplates } from \"../../CustomTemplates.js\";\n\ntype MinimalTplStateStoreContext = Pick<\n RuntimeContext,\n \"tplStateStoreId\" | \"tplStateStoreMap\"\n>;\n\nexport function getTplStateStore(\n { tplStateStoreId, tplStateStoreMap }: MinimalTplStateStoreContext,\n using: string,\n extraInfo?: string\n): DataStore<\"STATE\"> {\n if (!tplStateStoreId) {\n throw new Error(\n `Using \"${using}\" outside of a custom template${extraInfo ?? \"\"}`\n );\n }\n const store = tplStateStoreMap.get(tplStateStoreId);\n if (!store) {\n throw new Error(\n `Template state store is not found when using \"${using}\"${\n extraInfo ?? \"\"\n }.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n return store!;\n}\n\nexport function getTplHostElement(\n runtimeContext: MinimalTplStateStoreContext,\n using: string,\n extraInfo?: string\n): RuntimeBrickElement {\n const store = getTplStateStore(runtimeContext, using, extraInfo);\n const hostElement = store.hostBrick!.element;\n if (!hostElement) {\n throw new Error(\n `Template host element is gone when using \"${using}\"${\n extraInfo ?? \"\"\n }.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n return hostElement!;\n}\n\nexport function getTagNameOfCustomTemplate(\n brick: string,\n appId?: string\n): false | string {\n // When a template is registered by an app, it's namespace maybe missed.\n if (!brick.includes(\".\") && brick.startsWith(\"tpl-\") && appId) {\n const tagName = `${appId}.${brick}`;\n if (customTemplates.get(tagName)) {\n return tagName;\n }\n }\n if (customTemplates.get(brick)) {\n return brick;\n }\n return false;\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ,0BAA0B;AAO1D,OAAO,SAASC,gBAAgBA,CAAAC,IAAA,EAE9BC,KAAa,EACbC,SAAkB,EACE;EAAA,IAHpB;IAAEC,eAAe;IAAEC;EAA8C,CAAC,GAAAJ,IAAA;EAIlE,IAAI,CAACG,eAAe,EAAE;IACpB,MAAM,IAAIE,KAAK,YAAAC,MAAA,CACHL,KAAK,qCAAAK,MAAA,CAAiCJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,EAChE;EACH;EACA,IAAMK,KAAK,GAAGH,gBAAgB,CAACI,GAAG,CAACL,eAAe,CAAC;EACnD,IAAI,CAACI,KAAK,EAAE;IACV,MAAM,IAAIF,KAAK,mDAAAC,MAAA,CACoCL,KAAK,QAAAK,MAAA,CACpDJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,uDAElB;EACH;EACA,OAAOK,KAAK;AACd;AAEA,OAAO,SAASE,iBAAiBA,CAC/BC,cAA2C,EAC3CT,KAAa,EACbC,SAAkB,EACG;EACrB,IAAMK,KAAK,GAAGR,gBAAgB,CAACW,cAAc,EAAET,KAAK,EAAEC,SAAS,CAAC;EAChE,IAAMS,WAAW,GAAGJ,KAAK,CAACK,SAAS,CAAEC,OAAO;EAC5C,IAAI,CAACF,WAAW,EAAE;IAChB,MAAM,IAAIN,KAAK,+CAAAC,MAAA,CACgCL,KAAK,QAAAK,MAAA,CAChDJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,uDAElB;EACH;EACA,OAAOS,WAAW;AACpB;AAEA,OAAO,SAASG,0BAA0BA,CACxCC,KAAa,EACbC,KAAc,EACE;EAChB;EACA,IAAI,CAACD,KAAK,CAACE,QAAQ,CAAC,GAAG,CAAC,IAAIF,KAAK,CAACG,UAAU,CAAC,MAAM,CAAC,IAAIF,KAAK,EAAE;IAC7D,IAAMG,OAAO,MAAAb,MAAA,CAAMU,KAAK,OAAAV,MAAA,CAAIS,KAAK,CAAE;IACnC,IAAIjB,eAAe,CAACU,GAAG,CAACW,OAAO,CAAC,EAAE;MAChC,OAAOA,OAAO;IAChB;EACF;EACA,IAAIrB,eAAe,CAACU,GAAG,CAACO,KAAK,CAAC,EAAE;IAC9B,OAAOA,KAAK;EACd;EACA,OAAO,KAAK;AACd"}
@@ -234,7 +234,7 @@ function _renderBrick() {
234
234
  return controlledOutput;
235
235
  }
236
236
 
237
- // Custom templates need to be defined before rendering.
237
+ // Widgets need to be defined before rendering.
238
238
  if (/\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {
239
239
  yield loadBricksImperatively([brickName], getBrickPackages());
240
240
  }
@@ -246,8 +246,7 @@ function _renderBrick() {
246
246
  throw new Error("Maximum custom template stack overflowed: \"".concat(tplTagName, "\""));
247
247
  }
248
248
  tplStack.set(tplTagName, tplCount + 1);
249
- }
250
- if (brickName.includes(".")) {
249
+ } else if (brickName.includes("-") && !customElements.get(brickName)) {
251
250
  output.blockingList.push(enqueueStableLoadBricks([brickName], getBrickPackages()));
252
251
  }
253
252
  var brick = {
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealProperties","resolveData","asyncComputeRealValue","preCheckPermissionsForBrickOrRoute","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","renderRoutes","_x","_x2","_x3","_x4","_x5","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","output","blockingList","menuRequests","unauthenticated","route","runtimeContext","_objectSpread","match","ctxStore","define","context","pendingPermissionsPreCheck","push","type","redirectTo","redirect","resolved","transform","console","error","Error","concat","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","_x6","_x7","_x8","_x9","_x10","_x11","_x12","_renderBricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_x18","_renderBrick","key","_runtimeContext$app","length","undefined","brick","template","tplStateStoreId","forEachItem","Array","isArray","strict","brickName","startsWith","ensureValidControlBrick","dataSource","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","slots","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","tplStateStoreMap","values","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","tplTagName","app","id","_tplStack$get","tplCount","set","includes","tag","BRICK","return","events","portal","iid","ref","trackingContextList","loadProperties","_ref3","properties","computedPropsFromHost","_brick$properties","computed","propName","propValue","Object","entries","asyncProperties","then","registerBrickLifeCycle","lifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref4","_ref5","childSlotId","slotConf","childrenOutput","child","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","i","j","flat","menuConf","warn","rest","_objectWithoutProperties","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport { asyncComputeRealProperties } from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport { preCheckPermissionsForBrickOrRoute } from \"./checkPermissions.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoutes } from \"./matchRoutes.js\";\nimport {\n RuntimeBrickConfWithTplSymbols,\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type { RenderBrick, RenderNode, RuntimeContext } 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 } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: (Promise<StaticMenuConf | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n runtimeContext.ctxStore.define(route.context, runtimeContext);\n runtimeContext.pendingPermissionsPreCheck.push(\n preCheckPermissionsForBrickOrRoute(route, runtimeContext)\n );\n switch (route.type) {\n case \"redirect\": {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n }\n }\n }\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithTplSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n key?: number,\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\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 preCheckPermissionsForBrickOrRoute(brickConf, runtimeContext)\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async () => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const output = await renderControlNode();\n output.blockingList.push(\n ...[...runtimeContext.tplStateStoreMap.values()].map((store) =>\n store.waitForAll()\n ),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\n );\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n return controlledOutput;\n }\n\n // Custom templates need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await loadBricksImperatively([brickName], getBrickPackages());\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 }\n\n if (brickName.includes(\".\")) {\n output.blockingList.push(\n enqueueStableLoadBricks([brickName], getBrickPackages())\n );\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const trackingContextList: TrackingContextItem[] = [];\n const loadProperties = async () => {\n brick.properties = await asyncComputeRealProperties(\n brickConf.properties,\n runtimeContext,\n trackingContextList\n );\n const computedPropsFromHost =\n brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n brick.properties ??= {};\n const computed = await computedPropsFromHost;\n for (const [propName, propValue] of Object.entries(computed)) {\n brick.properties[propName] = propValue;\n }\n }\n return brick.properties;\n };\n const asyncProperties = loadProperties();\n blockingList.push(asyncProperties);\n\n asyncProperties.then(() => {\n listenOnTrackingContext(brick, trackingContextList);\n });\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 asyncProperties\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\n mergeRenderOutput(childrenOutput, item);\n }\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n 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"],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealProperties","resolveData","asyncComputeRealValue","preCheckPermissionsForBrickOrRoute","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","renderRoutes","_x","_x2","_x3","_x4","_x5","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","output","blockingList","menuRequests","unauthenticated","route","runtimeContext","_objectSpread","match","ctxStore","define","context","pendingPermissionsPreCheck","push","type","redirectTo","redirect","resolved","transform","console","error","Error","concat","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","_x6","_x7","_x8","_x9","_x10","_x11","_x12","_renderBricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_x18","_renderBrick","key","_runtimeContext$app","length","undefined","brick","template","tplStateStoreId","forEachItem","Array","isArray","strict","brickName","startsWith","ensureValidControlBrick","dataSource","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","slots","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","tplStateStoreMap","values","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","tag","BRICK","return","events","portal","iid","ref","trackingContextList","loadProperties","_ref3","properties","computedPropsFromHost","_brick$properties","computed","propName","propValue","Object","entries","asyncProperties","then","registerBrickLifeCycle","lifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref4","_ref5","childSlotId","slotConf","childrenOutput","child","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","i","j","flat","menuConf","warn","rest","_objectWithoutProperties","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport { asyncComputeRealProperties } from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport { preCheckPermissionsForBrickOrRoute } from \"./checkPermissions.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoutes } from \"./matchRoutes.js\";\nimport {\n RuntimeBrickConfWithTplSymbols,\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type { RenderBrick, RenderNode, RuntimeContext } 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 } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: (Promise<StaticMenuConf | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n runtimeContext.ctxStore.define(route.context, runtimeContext);\n runtimeContext.pendingPermissionsPreCheck.push(\n preCheckPermissionsForBrickOrRoute(route, runtimeContext)\n );\n switch (route.type) {\n case \"redirect\": {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n }\n }\n }\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithTplSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n key?: number,\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\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 preCheckPermissionsForBrickOrRoute(brickConf, runtimeContext)\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async () => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const output = await renderControlNode();\n output.blockingList.push(\n ...[...runtimeContext.tplStateStoreMap.values()].map((store) =>\n store.waitForAll()\n ),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\n );\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await loadBricksImperatively([brickName], getBrickPackages());\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 output.blockingList.push(\n enqueueStableLoadBricks([brickName], getBrickPackages())\n );\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const trackingContextList: TrackingContextItem[] = [];\n const loadProperties = async () => {\n brick.properties = await asyncComputeRealProperties(\n brickConf.properties,\n runtimeContext,\n trackingContextList\n );\n const computedPropsFromHost =\n brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n brick.properties ??= {};\n const computed = await computedPropsFromHost;\n for (const [propName, propValue] of Object.entries(computed)) {\n brick.properties[propName] = propValue;\n }\n }\n return brick.properties;\n };\n const asyncProperties = loadProperties();\n blockingList.push(asyncProperties);\n\n asyncProperties.then(() => {\n listenOnTrackingContext(brick, trackingContextList);\n });\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 asyncProperties\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\n mergeRenderOutput(childrenOutput, item);\n }\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n 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"],"mappings":"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"}
@@ -8,6 +8,9 @@ import { matchStoryboard } from "./matchStoryboard.js";
8
8
  import { Router } from "./Router.js";
9
9
  import { loadCheckLogin } from "./loadCheckLogin.js";
10
10
  import { loadBootstrapData } from "./loadBootstrapData.js";
11
+ import { NS, locales } from "./i18n.js";
12
+ import { loadNotificationService } from "../Notification.js";
13
+ import { loadDialogService } from "../Dialog.js";
11
14
  var runtime;
12
15
  var bootstrapData;
13
16
  var router;
@@ -15,7 +18,7 @@ export function createRuntime() {
15
18
  if (runtime) {
16
19
  throw new Error("Cannot create multiple runtimes");
17
20
  }
18
- initializeI18n();
21
+ initializeI18n(NS, locales);
19
22
  moment.locale(i18n.language);
20
23
  i18n.on("languageChanged", () => {
21
24
  moment.locale(i18n.language);
@@ -31,26 +34,31 @@ export class Runtime {
31
34
  bootstrap() {
32
35
  return _asyncToGenerator(function* () {
33
36
  var [, _bootstrapData] = yield Promise.all([loadCheckLogin(), loadBootstrapData()]);
37
+ // Todo: allow configuration of notification bricks.
38
+ loadNotificationService("shoelace.show-notification");
39
+ loadDialogService("shoelace.show-dialog");
34
40
  bootstrapData = _bootstrapData;
35
41
  router = new Router(_bootstrapData.storyboards);
36
42
  yield router.bootstrap();
37
43
  })();
38
44
  }
39
45
  getRecentApps() {
40
- return router.getRecentApps();
46
+ var _router$getRecentApps, _router;
47
+ return (_router$getRecentApps = (_router = router) === null || _router === void 0 ? void 0 : _router.getRecentApps()) !== null && _router$getRecentApps !== void 0 ? _router$getRecentApps : {};
41
48
  }
42
49
  getCurrentApp() {
43
- return router.getRecentApps().currentApp;
50
+ var _router2;
51
+ return (_router2 = router) === null || _router2 === void 0 ? void 0 : _router2.getRecentApps().currentApp;
44
52
  }
45
53
  getFeatureFlags() {
46
- var _bootstrapData2, _bootstrapData2$setti, _router$getRecentApps, _router$getRecentApps2, _router$getRecentApps3;
47
- return _objectSpread(_objectSpread(_objectSpread({}, (_bootstrapData2 = bootstrapData) === null || _bootstrapData2 === void 0 ? void 0 : (_bootstrapData2$setti = _bootstrapData2.settings) === null || _bootstrapData2$setti === void 0 ? void 0 : _bootstrapData2$setti.featureFlags), (_router$getRecentApps = router.getRecentApps().currentApp) === null || _router$getRecentApps === void 0 ? void 0 : (_router$getRecentApps2 = _router$getRecentApps.config) === null || _router$getRecentApps2 === void 0 ? void 0 : (_router$getRecentApps3 = _router$getRecentApps2.settings) === null || _router$getRecentApps3 === void 0 ? void 0 : _router$getRecentApps3.featureFlags), {}, {
54
+ var _bootstrapData2, _bootstrapData2$setti, _router3, _router3$getRecentApp, _router3$getRecentApp2, _router3$getRecentApp3;
55
+ return _objectSpread(_objectSpread(_objectSpread({}, (_bootstrapData2 = bootstrapData) === null || _bootstrapData2 === void 0 ? void 0 : (_bootstrapData2$setti = _bootstrapData2.settings) === null || _bootstrapData2$setti === void 0 ? void 0 : _bootstrapData2$setti.featureFlags), (_router3 = router) === null || _router3 === void 0 ? void 0 : (_router3$getRecentApp = _router3.getRecentApps().currentApp) === null || _router3$getRecentApp === void 0 ? void 0 : (_router3$getRecentApp2 = _router3$getRecentApp.config) === null || _router3$getRecentApp2 === void 0 ? void 0 : (_router3$getRecentApp3 = _router3$getRecentApp2.settings) === null || _router3$getRecentApp3 === void 0 ? void 0 : _router3$getRecentApp3.featureFlags), {}, {
48
56
  "migrate-to-brick-next-v3": true
49
57
  });
50
58
  }
51
59
  getMiscSettings() {
52
- var _bootstrapData3, _bootstrapData3$setti, _router$getRecentApps4, _router$getRecentApps5, _router$getRecentApps6;
53
- return _objectSpread(_objectSpread({}, (_bootstrapData3 = bootstrapData) === null || _bootstrapData3 === void 0 ? void 0 : (_bootstrapData3$setti = _bootstrapData3.settings) === null || _bootstrapData3$setti === void 0 ? void 0 : _bootstrapData3$setti.misc), (_router$getRecentApps4 = router.getRecentApps().currentApp) === null || _router$getRecentApps4 === void 0 ? void 0 : (_router$getRecentApps5 = _router$getRecentApps4.config) === null || _router$getRecentApps5 === void 0 ? void 0 : (_router$getRecentApps6 = _router$getRecentApps5.settings) === null || _router$getRecentApps6 === void 0 ? void 0 : _router$getRecentApps6.misc);
60
+ var _bootstrapData3, _bootstrapData3$setti, _router4, _router4$getRecentApp, _router4$getRecentApp2, _router4$getRecentApp3;
61
+ return _objectSpread(_objectSpread({}, (_bootstrapData3 = bootstrapData) === null || _bootstrapData3 === void 0 ? void 0 : (_bootstrapData3$setti = _bootstrapData3.settings) === null || _bootstrapData3$setti === void 0 ? void 0 : _bootstrapData3$setti.misc), (_router4 = router) === null || _router4 === void 0 ? void 0 : (_router4$getRecentApp = _router4.getRecentApps().currentApp) === null || _router4$getRecentApp === void 0 ? void 0 : (_router4$getRecentApp2 = _router4$getRecentApp.config) === null || _router4$getRecentApp2 === void 0 ? void 0 : (_router4$getRecentApp3 = _router4$getRecentApp2.settings) === null || _router4$getRecentApp3 === void 0 ? void 0 : _router4$getRecentApp3.misc);
54
62
  }
55
63
  getBrandSettings() {
56
64
  var _bootstrapData4, _bootstrapData4$setti;
@@ -81,7 +89,8 @@ export class Runtime {
81
89
  document.title = pageTitle ? "".concat(pageTitle, " - ").concat(baseTitle) : baseTitle;
82
90
  }
83
91
  getNavConfig() {
84
- return router.getNavConfig();
92
+ var _router5;
93
+ return (_router5 = router) === null || _router5 === void 0 ? void 0 : _router5.getNavConfig();
85
94
  }
86
95
  }
87
96
  export function _internalApiSetBootstrapData(data) {
@@ -92,15 +101,16 @@ export function getBrickPackages() {
92
101
  return (_bootstrapData$brickP = (_bootstrapData8 = bootstrapData) === null || _bootstrapData8 === void 0 ? void 0 : _bootstrapData8.brickPackages) !== null && _bootstrapData$brickP !== void 0 ? _bootstrapData$brickP : [];
93
102
  }
94
103
  export function _internalApiGetRenderId() {
95
- return router.getRenderId();
104
+ var _router6;
105
+ return (_router6 = router) === null || _router6 === void 0 ? void 0 : _router6.getRenderId();
96
106
  }
97
107
  export function _internalApiMatchStoryboard(pathname) {
98
108
  var _bootstrapData$storyb, _bootstrapData9;
99
109
  return matchStoryboard((_bootstrapData$storyb = (_bootstrapData9 = bootstrapData) === null || _bootstrapData9 === void 0 ? void 0 : _bootstrapData9.storyboards) !== null && _bootstrapData$storyb !== void 0 ? _bootstrapData$storyb : [], pathname);
100
110
  }
101
111
  export function _internalApiGetRuntimeContext() {
102
- var _router;
103
- return (_router = router) === null || _router === void 0 ? void 0 : _router.getRuntimeContext();
112
+ var _router7;
113
+ return (_router7 = router) === null || _router7 === void 0 ? void 0 : _router7.getRuntimeContext();
104
114
  }
105
115
  export function _internalApiGetStoryboardInBootstrapData(appId) {
106
116
  var _bootstrapData10, _bootstrapData10$stor;
@@ -1 +1 @@
1
- {"version":3,"file":"Runtime.js","names":["i18n","initializeI18n","moment","createHistory","matchStoryboard","Router","loadCheckLogin","loadBootstrapData","runtime","bootstrapData","router","createRuntime","Error","locale","language","on","Runtime","getRuntime","bootstrap","_asyncToGenerator","_bootstrapData","Promise","all","storyboards","getRecentApps","getCurrentApp","currentApp","getFeatureFlags","_bootstrapData2","_bootstrapData2$setti","_router$getRecentApps","_router$getRecentApps2","_router$getRecentApps3","_objectSpread","settings","featureFlags","config","getMiscSettings","_bootstrapData3","_bootstrapData3$setti","_router$getRecentApps4","_router$getRecentApps5","_router$getRecentApps6","misc","getBrandSettings","_bootstrapData4","_bootstrapData4$setti","base_title","brand","getLaunchpadSettings","_bootstrapData5","_bootstrapData5$setti","columns","rows","launchpad","getDesktops","_bootstrapData$deskto","_bootstrapData6","desktops","getLaunchpadSiteMap","_bootstrapData$siteSo","_bootstrapData7","siteSort","toggleLaunchpadEffect","open","document","body","classList","toggle","applyPageTitle","pageTitle","baseTitle","title","concat","getNavConfig","_internalApiSetBootstrapData","data","getBrickPackages","_bootstrapData$brickP","_bootstrapData8","brickPackages","_internalApiGetRenderId","getRenderId","_internalApiMatchStoryboard","pathname","_bootstrapData$storyb","_bootstrapData9","_internalApiGetRuntimeContext","_router","getRuntimeContext","_internalApiGetStoryboardInBootstrapData","appId","_bootstrapData10","_bootstrapData10$stor","find","storyboard","app","id","_internalApiGetAppInBootstrapData","_internalApiGetStoryb"],"sources":["../../../src/internal/Runtime.ts"],"sourcesContent":["import type {\n RuntimeStoryboard,\n BootstrapSettings,\n FeatureFlags,\n BootstrapData,\n} from \"@next-core/types\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport moment from \"moment\";\nimport \"moment/locale/zh-cn.js\";\nimport { createHistory } from \"../history.js\";\nimport { matchStoryboard } from \"./matchStoryboard.js\";\nimport { Router } from \"./Router.js\";\nimport { loadCheckLogin } from \"./loadCheckLogin.js\";\nimport { loadBootstrapData } from \"./loadBootstrapData.js\";\n\nlet runtime: Runtime;\n\nlet bootstrapData: Partial<BootstrapData> | undefined;\nlet router!: Router;\n\nexport function createRuntime() {\n if (runtime) {\n throw new Error(\"Cannot create multiple runtimes\");\n }\n initializeI18n();\n moment.locale(i18n.language);\n i18n.on(\"languageChanged\", () => {\n moment.locale(i18n.language);\n });\n createHistory();\n runtime = new Runtime();\n return runtime;\n}\n\nexport function getRuntime() {\n return runtime;\n}\n\nexport class Runtime {\n async bootstrap() {\n const [, _bootstrapData] = await Promise.all([\n loadCheckLogin(),\n loadBootstrapData(),\n ]);\n bootstrapData = _bootstrapData;\n router = new Router(_bootstrapData.storyboards);\n await router.bootstrap();\n }\n\n getRecentApps() {\n return router.getRecentApps();\n }\n\n getCurrentApp() {\n return router.getRecentApps().currentApp;\n }\n\n getFeatureFlags(): FeatureFlags {\n return {\n ...bootstrapData?.settings?.featureFlags,\n ...(\n router.getRecentApps().currentApp?.config?.settings as BootstrapSettings\n )?.featureFlags,\n \"migrate-to-brick-next-v3\": true,\n };\n }\n\n getMiscSettings() {\n return {\n ...bootstrapData?.settings?.misc,\n ...(\n router.getRecentApps().currentApp?.config?.settings as BootstrapSettings\n )?.misc,\n };\n }\n\n getBrandSettings(): Record<string, string> {\n return {\n base_title: \"DevOps 管理专家\",\n ...(bootstrapData?.settings?.brand as Record<string, string>),\n // ...(kernel.getOriginFaviconHref()\n // ? { favicon: kernel.getOriginFaviconHref() }\n // : {})\n };\n }\n\n getLaunchpadSettings() {\n return {\n columns: 7,\n rows: 4,\n ...bootstrapData?.settings?.launchpad,\n };\n }\n\n getDesktops(): unknown[] {\n return bootstrapData?.desktops ?? [];\n }\n\n getLaunchpadSiteMap(): unknown[] {\n return bootstrapData?.siteSort ?? [];\n }\n\n toggleLaunchpadEffect(open: boolean): void {\n document.body.classList.toggle(\"launchpad-open\", open);\n }\n\n applyPageTitle(pageTitle: string): void {\n const baseTitle = this.getBrandSettings().base_title;\n document.title = pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle;\n }\n\n getNavConfig() {\n return router.getNavConfig();\n }\n}\n\nexport function _internalApiSetBootstrapData(data: Partial<BootstrapData>) {\n bootstrapData = data;\n}\n\nexport function getBrickPackages() {\n return bootstrapData?.brickPackages ?? [];\n}\n\nexport function _internalApiGetRenderId(): string | undefined {\n return router.getRenderId();\n}\n\nexport function _internalApiMatchStoryboard(\n pathname: string\n): RuntimeStoryboard | undefined {\n return matchStoryboard(bootstrapData?.storyboards ?? [], pathname);\n}\n\nexport function _internalApiGetRuntimeContext() {\n return router?.getRuntimeContext();\n}\n\nexport function _internalApiGetStoryboardInBootstrapData(appId: string) {\n return bootstrapData?.storyboards?.find(\n (storyboard) => storyboard.app.id === appId\n );\n}\n\nexport function _internalApiGetAppInBootstrapData(appId: string) {\n return _internalApiGetStoryboardInBootstrapData(appId)?.app;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Runtime.js","names":["i18n","initializeI18n","moment","createHistory","matchStoryboard","Router","loadCheckLogin","loadBootstrapData","NS","locales","loadNotificationService","loadDialogService","runtime","bootstrapData","router","createRuntime","Error","locale","language","on","Runtime","getRuntime","bootstrap","_asyncToGenerator","_bootstrapData","Promise","all","storyboards","getRecentApps","_router$getRecentApps","_router","getCurrentApp","_router2","currentApp","getFeatureFlags","_bootstrapData2","_bootstrapData2$setti","_router3","_router3$getRecentApp","_router3$getRecentApp2","_router3$getRecentApp3","_objectSpread","settings","featureFlags","config","getMiscSettings","_bootstrapData3","_bootstrapData3$setti","_router4","_router4$getRecentApp","_router4$getRecentApp2","_router4$getRecentApp3","misc","getBrandSettings","_bootstrapData4","_bootstrapData4$setti","base_title","brand","getLaunchpadSettings","_bootstrapData5","_bootstrapData5$setti","columns","rows","launchpad","getDesktops","_bootstrapData$deskto","_bootstrapData6","desktops","getLaunchpadSiteMap","_bootstrapData$siteSo","_bootstrapData7","siteSort","toggleLaunchpadEffect","open","document","body","classList","toggle","applyPageTitle","pageTitle","baseTitle","title","concat","getNavConfig","_router5","_internalApiSetBootstrapData","data","getBrickPackages","_bootstrapData$brickP","_bootstrapData8","brickPackages","_internalApiGetRenderId","_router6","getRenderId","_internalApiMatchStoryboard","pathname","_bootstrapData$storyb","_bootstrapData9","_internalApiGetRuntimeContext","_router7","getRuntimeContext","_internalApiGetStoryboardInBootstrapData","appId","_bootstrapData10","_bootstrapData10$stor","find","storyboard","app","id","_internalApiGetAppInBootstrapData","_internalApiGetStoryb"],"sources":["../../../src/internal/Runtime.ts"],"sourcesContent":["import type {\n RuntimeStoryboard,\n BootstrapSettings,\n FeatureFlags,\n BootstrapData,\n} from \"@next-core/types\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport moment from \"moment\";\nimport \"moment/locale/zh-cn.js\";\nimport { createHistory } from \"../history.js\";\nimport { matchStoryboard } from \"./matchStoryboard.js\";\nimport { Router } from \"./Router.js\";\nimport { loadCheckLogin } from \"./loadCheckLogin.js\";\nimport { loadBootstrapData } from \"./loadBootstrapData.js\";\nimport { NS, locales } from \"./i18n.js\";\nimport { loadNotificationService } from \"../Notification.js\";\nimport { loadDialogService } from \"../Dialog.js\";\n\nlet runtime: Runtime;\n\nlet bootstrapData: Partial<BootstrapData> | undefined;\nlet router: Router | undefined;\n\nexport function createRuntime() {\n if (runtime) {\n throw new Error(\"Cannot create multiple runtimes\");\n }\n initializeI18n(NS, locales);\n moment.locale(i18n.language);\n i18n.on(\"languageChanged\", () => {\n moment.locale(i18n.language);\n });\n createHistory();\n runtime = new Runtime();\n return runtime;\n}\n\nexport function getRuntime() {\n return runtime;\n}\n\nexport class Runtime {\n async bootstrap() {\n const [, _bootstrapData] = await Promise.all([\n loadCheckLogin(),\n loadBootstrapData(),\n ]);\n // Todo: allow configuration of notification bricks.\n loadNotificationService(\"shoelace.show-notification\");\n loadDialogService(\"shoelace.show-dialog\");\n bootstrapData = _bootstrapData;\n router = new Router(_bootstrapData.storyboards);\n await router.bootstrap();\n }\n\n getRecentApps() {\n return router?.getRecentApps() ?? {};\n }\n\n getCurrentApp() {\n return router?.getRecentApps().currentApp;\n }\n\n getFeatureFlags(): FeatureFlags {\n return {\n ...bootstrapData?.settings?.featureFlags,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.featureFlags,\n \"migrate-to-brick-next-v3\": true,\n };\n }\n\n getMiscSettings() {\n return {\n ...bootstrapData?.settings?.misc,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.misc,\n };\n }\n\n getBrandSettings(): Record<string, string> {\n return {\n base_title: \"DevOps 管理专家\",\n ...(bootstrapData?.settings?.brand as Record<string, string>),\n // ...(kernel.getOriginFaviconHref()\n // ? { favicon: kernel.getOriginFaviconHref() }\n // : {})\n };\n }\n\n getLaunchpadSettings() {\n return {\n columns: 7,\n rows: 4,\n ...bootstrapData?.settings?.launchpad,\n };\n }\n\n getDesktops(): unknown[] {\n return bootstrapData?.desktops ?? [];\n }\n\n getLaunchpadSiteMap(): unknown[] {\n return bootstrapData?.siteSort ?? [];\n }\n\n toggleLaunchpadEffect(open: boolean): void {\n document.body.classList.toggle(\"launchpad-open\", open);\n }\n\n applyPageTitle(pageTitle: string): void {\n const baseTitle = this.getBrandSettings().base_title;\n document.title = pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle;\n }\n\n getNavConfig() {\n return router?.getNavConfig();\n }\n}\n\nexport function _internalApiSetBootstrapData(data: Partial<BootstrapData>) {\n bootstrapData = data;\n}\n\nexport function getBrickPackages() {\n return bootstrapData?.brickPackages ?? [];\n}\n\nexport function _internalApiGetRenderId(): string | undefined {\n return router?.getRenderId();\n}\n\nexport function _internalApiMatchStoryboard(\n pathname: string\n): RuntimeStoryboard | undefined {\n return matchStoryboard(bootstrapData?.storyboards ?? [], pathname);\n}\n\nexport function _internalApiGetRuntimeContext() {\n return router?.getRuntimeContext();\n}\n\nexport function _internalApiGetStoryboardInBootstrapData(appId: string) {\n return bootstrapData?.storyboards?.find(\n (storyboard) => storyboard.app.id === appId\n );\n}\n\nexport function _internalApiGetAppInBootstrapData(appId: string) {\n return _internalApiGetStoryboardInBootstrapData(appId)?.app;\n}\n"],"mappings":";;AAMA,SAASA,IAAI,EAAEC,cAAc,QAAQ,iBAAiB;AACtD,OAAOC,MAAM,MAAM,QAAQ;AAC3B,OAAO,wBAAwB;AAC/B,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,MAAM,QAAQ,aAAa;AACpC,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,EAAE,EAAEC,OAAO,QAAQ,WAAW;AACvC,SAASC,uBAAuB,QAAQ,oBAAoB;AAC5D,SAASC,iBAAiB,QAAQ,cAAc;AAEhD,IAAIC,OAAgB;AAEpB,IAAIC,aAAiD;AACrD,IAAIC,MAA0B;AAE9B,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,IAAIH,OAAO,EAAE;IACX,MAAM,IAAII,KAAK,CAAC,iCAAiC,CAAC;EACpD;EACAf,cAAc,CAACO,EAAE,EAAEC,OAAO,CAAC;EAC3BP,MAAM,CAACe,MAAM,CAACjB,IAAI,CAACkB,QAAQ,CAAC;EAC5BlB,IAAI,CAACmB,EAAE,CAAC,iBAAiB,EAAE,MAAM;IAC/BjB,MAAM,CAACe,MAAM,CAACjB,IAAI,CAACkB,QAAQ,CAAC;EAC9B,CAAC,CAAC;EACFf,aAAa,EAAE;EACfS,OAAO,GAAG,IAAIQ,OAAO,EAAE;EACvB,OAAOR,OAAO;AAChB;AAEA,OAAO,SAASS,UAAUA,CAAA,EAAG;EAC3B,OAAOT,OAAO;AAChB;AAEA,OAAO,MAAMQ,OAAO,CAAC;EACbE,SAASA,CAAA,EAAG;IAAA,OAAAC,iBAAA;MAChB,IAAM,GAAGC,cAAc,CAAC,SAASC,OAAO,CAACC,GAAG,CAAC,CAC3CpB,cAAc,EAAE,EAChBC,iBAAiB,EAAE,CACpB,CAAC;MACF;MACAG,uBAAuB,CAAC,4BAA4B,CAAC;MACrDC,iBAAiB,CAAC,sBAAsB,CAAC;MACzCE,aAAa,GAAGW,cAAc;MAC9BV,MAAM,GAAG,IAAIT,MAAM,CAACmB,cAAc,CAACG,WAAW,CAAC;MAC/C,MAAMb,MAAM,CAACQ,SAAS,EAAE;IAAC;EAC3B;EAEAM,aAAaA,CAAA,EAAG;IAAA,IAAAC,qBAAA,EAAAC,OAAA;IACd,QAAAD,qBAAA,IAAAC,OAAA,GAAOhB,MAAM,cAAAgB,OAAA,uBAANA,OAAA,CAAQF,aAAa,EAAE,cAAAC,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;EACtC;EAEAE,aAAaA,CAAA,EAAG;IAAA,IAAAC,QAAA;IACd,QAAAA,QAAA,GAAOlB,MAAM,cAAAkB,QAAA,uBAANA,QAAA,CAAQJ,aAAa,EAAE,CAACK,UAAU;EAC3C;EAEAC,eAAeA,CAAA,EAAiB;IAAA,IAAAC,eAAA,EAAAC,qBAAA,EAAAC,QAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAC9B,OAAAC,aAAA,CAAAA,aAAA,CAAAA,aAAA,MAAAN,eAAA,GACKtB,aAAa,cAAAsB,eAAA,wBAAAC,qBAAA,GAAbD,eAAA,CAAeO,QAAQ,cAAAN,qBAAA,uBAAvBA,qBAAA,CAAyBO,YAAY,IAAAN,QAAA,GAEtCvB,MAAM,cAAAuB,QAAA,wBAAAC,qBAAA,GAAND,QAAA,CAAQT,aAAa,EAAE,CAACK,UAAU,cAAAK,qBAAA,wBAAAC,sBAAA,GAAlCD,qBAAA,CAAoCM,MAAM,cAAAL,sBAAA,wBAAAC,sBAAA,GAA1CD,sBAAA,CACIG,QAAQ,cAAAF,sBAAA,uBAFXA,sBAAA,CAGAG,YAAY;MACf,0BAA0B,EAAE;IAAI;EAEpC;EAEAE,eAAeA,CAAA,EAAG;IAAA,IAAAC,eAAA,EAAAC,qBAAA,EAAAC,QAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChB,OAAAV,aAAA,CAAAA,aAAA,MAAAK,eAAA,GACKjC,aAAa,cAAAiC,eAAA,wBAAAC,qBAAA,GAAbD,eAAA,CAAeJ,QAAQ,cAAAK,qBAAA,uBAAvBA,qBAAA,CAAyBK,IAAI,IAAAJ,QAAA,GAE9BlC,MAAM,cAAAkC,QAAA,wBAAAC,qBAAA,GAAND,QAAA,CAAQpB,aAAa,EAAE,CAACK,UAAU,cAAAgB,qBAAA,wBAAAC,sBAAA,GAAlCD,qBAAA,CAAoCL,MAAM,cAAAM,sBAAA,wBAAAC,sBAAA,GAA1CD,sBAAA,CACIR,QAAQ,cAAAS,sBAAA,uBAFXA,sBAAA,CAGAC,IAAI;EAEX;EAEAC,gBAAgBA,CAAA,EAA2B;IAAA,IAAAC,eAAA,EAAAC,qBAAA;IACzC,OAAAd,aAAA;MACEe,UAAU,EAAE;IAAa,IAAAF,eAAA,GACrBzC,aAAa,cAAAyC,eAAA,wBAAAC,qBAAA,GAAbD,eAAA,CAAeZ,QAAQ,cAAAa,qBAAA,uBAAvBA,qBAAA,CAAyBE,KAAK;EAKtC;EAEAC,oBAAoBA,CAAA,EAAG;IAAA,IAAAC,eAAA,EAAAC,qBAAA;IACrB,OAAAnB,aAAA;MACEoB,OAAO,EAAE,CAAC;MACVC,IAAI,EAAE;IAAC,IAAAH,eAAA,GACJ9C,aAAa,cAAA8C,eAAA,wBAAAC,qBAAA,GAAbD,eAAA,CAAejB,QAAQ,cAAAkB,qBAAA,uBAAvBA,qBAAA,CAAyBG,SAAS;EAEzC;EAEAC,WAAWA,CAAA,EAAc;IAAA,IAAAC,qBAAA,EAAAC,eAAA;IACvB,QAAAD,qBAAA,IAAAC,eAAA,GAAOrD,aAAa,cAAAqD,eAAA,uBAAbA,eAAA,CAAeC,QAAQ,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,EAAE;EACtC;EAEAG,mBAAmBA,CAAA,EAAc;IAAA,IAAAC,qBAAA,EAAAC,eAAA;IAC/B,QAAAD,qBAAA,IAAAC,eAAA,GAAOzD,aAAa,cAAAyD,eAAA,uBAAbA,eAAA,CAAeC,QAAQ,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,EAAE;EACtC;EAEAG,qBAAqBA,CAACC,IAAa,EAAQ;IACzCC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACC,MAAM,CAAC,gBAAgB,EAAEJ,IAAI,CAAC;EACxD;EAEAK,cAAcA,CAACC,SAAiB,EAAQ;IACtC,IAAMC,SAAS,GAAG,IAAI,CAAC3B,gBAAgB,EAAE,CAACG,UAAU;IACpDkB,QAAQ,CAACO,KAAK,GAAGF,SAAS,MAAAG,MAAA,CAAMH,SAAS,SAAAG,MAAA,CAAMF,SAAS,IAAKA,SAAS;EACxE;EAEAG,YAAYA,CAAA,EAAG;IAAA,IAAAC,QAAA;IACb,QAAAA,QAAA,GAAOtE,MAAM,cAAAsE,QAAA,uBAANA,QAAA,CAAQD,YAAY,EAAE;EAC/B;AACF;AAEA,OAAO,SAASE,4BAA4BA,CAACC,IAA4B,EAAE;EACzEzE,aAAa,GAAGyE,IAAI;AACtB;AAEA,OAAO,SAASC,gBAAgBA,CAAA,EAAG;EAAA,IAAAC,qBAAA,EAAAC,eAAA;EACjC,QAAAD,qBAAA,IAAAC,eAAA,GAAO5E,aAAa,cAAA4E,eAAA,uBAAbA,eAAA,CAAeC,aAAa,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,EAAE;AAC3C;AAEA,OAAO,SAASG,uBAAuBA,CAAA,EAAuB;EAAA,IAAAC,QAAA;EAC5D,QAAAA,QAAA,GAAO9E,MAAM,cAAA8E,QAAA,uBAANA,QAAA,CAAQC,WAAW,EAAE;AAC9B;AAEA,OAAO,SAASC,2BAA2BA,CACzCC,QAAgB,EACe;EAAA,IAAAC,qBAAA,EAAAC,eAAA;EAC/B,OAAO7F,eAAe,EAAA4F,qBAAA,IAAAC,eAAA,GAACpF,aAAa,cAAAoF,eAAA,uBAAbA,eAAA,CAAetE,WAAW,cAAAqE,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAAED,QAAQ,CAAC;AACpE;AAEA,OAAO,SAASG,6BAA6BA,CAAA,EAAG;EAAA,IAAAC,QAAA;EAC9C,QAAAA,QAAA,GAAOrF,MAAM,cAAAqF,QAAA,uBAANA,QAAA,CAAQC,iBAAiB,EAAE;AACpC;AAEA,OAAO,SAASC,wCAAwCA,CAACC,KAAa,EAAE;EAAA,IAAAC,gBAAA,EAAAC,qBAAA;EACtE,QAAAD,gBAAA,GAAO1F,aAAa,cAAA0F,gBAAA,wBAAAC,qBAAA,GAAbD,gBAAA,CAAe5E,WAAW,cAAA6E,qBAAA,uBAA1BA,qBAAA,CAA4BC,IAAI,CACpCC,UAAU,IAAKA,UAAU,CAACC,GAAG,CAACC,EAAE,KAAKN,KAAK,CAC5C;AACH;AAEA,OAAO,SAASO,iCAAiCA,CAACP,KAAa,EAAE;EAAA,IAAAQ,qBAAA;EAC/D,QAAAA,qBAAA,GAAOT,wCAAwC,CAACC,KAAK,CAAC,cAAAQ,qBAAA,uBAA/CA,qBAAA,CAAiDH,GAAG;AAC7D"}
@@ -12,6 +12,7 @@ import { applyMode, applyTheme } from "../themeAndMode.js";
12
12
  import { getTplHostElement, getTplStateStore } from "./CustomTemplates/utils.js";
13
13
  import { handleHttpError, httpErrorToString } from "../handleHttpError.js";
14
14
  import { getArgsOfFlowApi } from "./data/FlowApi.js";
15
+ import { Notification } from "../Notification.js";
15
16
  export function bindListeners(brick, eventsMap, runtimeContext) {
16
17
  if (!eventsMap) {
17
18
  return;
@@ -398,9 +399,13 @@ function handleConsoleAction(event, method, args, runtimeContext) {
398
399
  }));
399
400
  }
400
401
  function handleMessageAction(event, method, args, runtimeContext) {
401
- alert(...argsFactory(args, runtimeContext, event, {
402
+ var computedArgs = argsFactory(args, runtimeContext, event, {
402
403
  useEventAsDefault: true
403
- }));
404
+ });
405
+ Notification.show({
406
+ type: method,
407
+ message: computedArgs[0]
408
+ });
404
409
  }
405
410
  export function eventCallbackFactory(callback, runtimeContext, runtimeBrick) {
406
411
  return function callbackFactory(type) {