@next-core/runtime 1.4.3 → 1.5.1

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 (102) hide show
  1. package/dist/cjs/Dialog.js +2 -3
  2. package/dist/cjs/Dialog.js.map +1 -1
  3. package/dist/cjs/Notification.js +2 -3
  4. package/dist/cjs/Notification.js.map +1 -1
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +2 -1
  7. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  8. package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
  9. package/dist/cjs/internal/FormRenderer/constants.js +11 -0
  10. package/dist/cjs/internal/FormRenderer/constants.js.map +1 -0
  11. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +122 -0
  12. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -0
  13. package/dist/cjs/internal/FormRenderer/getDefaultProperties.js +165 -0
  14. package/dist/cjs/internal/FormRenderer/getDefaultProperties.js.map +1 -0
  15. package/dist/cjs/internal/FormRenderer/interfaces.js +6 -0
  16. package/dist/cjs/internal/FormRenderer/interfaces.js.map +1 -0
  17. package/dist/cjs/internal/FormRenderer/utils.js +20 -0
  18. package/dist/cjs/internal/FormRenderer/utils.js.map +1 -0
  19. package/dist/cjs/internal/Renderer.js +38 -9
  20. package/dist/cjs/internal/Renderer.js.map +1 -1
  21. package/dist/cjs/internal/Router.js +5 -4
  22. package/dist/cjs/internal/Router.js.map +1 -1
  23. package/dist/cjs/internal/Runtime.js +72 -32
  24. package/dist/cjs/internal/Runtime.js.map +1 -1
  25. package/dist/cjs/internal/bindListeners.js +9 -2
  26. package/dist/cjs/internal/bindListeners.js.map +1 -1
  27. package/dist/cjs/internal/bootstrapData.js.map +1 -1
  28. package/dist/cjs/internal/compute/evaluate.js +21 -6
  29. package/dist/cjs/internal/compute/evaluate.js.map +1 -1
  30. package/dist/cjs/internal/compute/listenOnTrackingContext.js +7 -9
  31. package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
  32. package/dist/cjs/internal/data/DataStore.js +2 -2
  33. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  34. package/dist/cjs/internal/fulfilStoryboard.js +27 -0
  35. package/dist/cjs/internal/fulfilStoryboard.js.map +1 -0
  36. package/dist/cjs/internal/interfaces.js.map +1 -1
  37. package/dist/cjs/internal/secret_internals.js +6 -15
  38. package/dist/cjs/internal/secret_internals.js.map +1 -1
  39. package/dist/esm/Dialog.js +2 -3
  40. package/dist/esm/Dialog.js.map +1 -1
  41. package/dist/esm/Notification.js +2 -3
  42. package/dist/esm/Notification.js.map +1 -1
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +2 -1
  45. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  46. package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
  47. package/dist/esm/internal/FormRenderer/constants.js +3 -0
  48. package/dist/esm/internal/FormRenderer/constants.js.map +1 -0
  49. package/dist/esm/internal/FormRenderer/expandFormRenderer.js +111 -0
  50. package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -0
  51. package/dist/esm/internal/FormRenderer/getDefaultProperties.js +136 -0
  52. package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -0
  53. package/dist/esm/internal/FormRenderer/interfaces.js +2 -0
  54. package/dist/esm/internal/FormRenderer/interfaces.js.map +1 -0
  55. package/dist/esm/internal/FormRenderer/utils.js +15 -0
  56. package/dist/esm/internal/FormRenderer/utils.js.map +1 -0
  57. package/dist/esm/internal/Renderer.js +48 -16
  58. package/dist/esm/internal/Renderer.js.map +1 -1
  59. package/dist/esm/internal/Router.js +4 -3
  60. package/dist/esm/internal/Router.js.map +1 -1
  61. package/dist/esm/internal/Runtime.js +70 -29
  62. package/dist/esm/internal/Runtime.js.map +1 -1
  63. package/dist/esm/internal/bindListeners.js +9 -2
  64. package/dist/esm/internal/bindListeners.js.map +1 -1
  65. package/dist/esm/internal/bootstrapData.js.map +1 -1
  66. package/dist/esm/internal/compute/evaluate.js +22 -9
  67. package/dist/esm/internal/compute/evaluate.js.map +1 -1
  68. package/dist/esm/internal/compute/listenOnTrackingContext.js +7 -9
  69. package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
  70. package/dist/esm/internal/data/DataStore.js +2 -2
  71. package/dist/esm/internal/data/DataStore.js.map +1 -1
  72. package/dist/esm/internal/fulfilStoryboard.js +34 -0
  73. package/dist/esm/internal/fulfilStoryboard.js.map +1 -0
  74. package/dist/esm/internal/interfaces.js.map +1 -1
  75. package/dist/esm/internal/secret_internals.js +7 -13
  76. package/dist/esm/internal/secret_internals.js.map +1 -1
  77. package/dist/types/Dialog.d.ts +1 -1
  78. package/dist/types/Notification.d.ts +1 -1
  79. package/dist/types/index.d.ts +1 -1
  80. package/dist/types/internal/CustomTemplates/expandCustomTemplate.d.ts +1 -1
  81. package/dist/types/internal/FormRenderer/constants.d.ts +7 -0
  82. package/dist/types/internal/FormRenderer/expandFormRenderer.d.ts +3 -0
  83. package/dist/types/internal/FormRenderer/getDefaultProperties.d.ts +2 -0
  84. package/dist/types/internal/FormRenderer/interfaces.d.ts +30 -0
  85. package/dist/types/internal/FormRenderer/utils.d.ts +5 -0
  86. package/dist/types/internal/Renderer.d.ts +2 -3
  87. package/dist/types/internal/Runtime.d.ts +11 -2
  88. package/dist/types/internal/bootstrapData.d.ts +1 -1
  89. package/dist/types/internal/fulfilStoryboard.d.ts +2 -0
  90. package/dist/types/internal/interfaces.d.ts +6 -0
  91. package/dist/types/internal/secret_internals.d.ts +1 -4
  92. package/package.json +6 -6
  93. package/dist/cjs/internal/loadBootstrapData.js +0 -227
  94. package/dist/cjs/internal/loadBootstrapData.js.map +0 -1
  95. package/dist/cjs/internal/loadCheckLogin.js +0 -17
  96. package/dist/cjs/internal/loadCheckLogin.js.map +0 -1
  97. package/dist/esm/internal/loadBootstrapData.js +0 -244
  98. package/dist/esm/internal/loadBootstrapData.js.map +0 -1
  99. package/dist/esm/internal/loadCheckLogin.js +0 -18
  100. package/dist/esm/internal/loadCheckLogin.js.map +0 -1
  101. package/dist/types/internal/loadBootstrapData.d.ts +0 -10
  102. package/dist/types/internal/loadCheckLogin.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","names":["_cook","require","_loader","_supply","_general","_storyboard","_lodash","_CustomProcessors","_StoryboardFunctions","_getGeneralGlobals","_proxyFactories","_devtools","_mediaQuery","_getStorageItem","_Runtime","_utils","_WidgetFunctions","_collectMemberCallUsage","_fetchMenuById","_WidgetI18n","_images","_checkInstalledApps","_isStrictMode","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","shouldAllowRecursiveEvaluations","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","isAsync","pendingPermissionsPreCheck","_1","tplStateStoreMap","_2","tplStateStoreScope","_3","passByRuntimeContext","menuUsage","usedArgs","Set","hasAppUsage","precooked","preevaluate","withParent","hooks","beforeVisitGlobal","node","parent","collectAppGetMenuUsage","collectInstalledAppsHasUsage","message","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","hasOwnProperty","Object","keys","length","usedCtx","usedProcessors","usedStates","tplStateStore","strict","isStrictMode","getTplStateStore","devHook","getDevHook","strictCollectMemberUsage","push","ctxStore","waitFor","usedTpls","tpl","add","loadProcessorsImperatively","getBrickPackages","attemptToCheckPermissions","usedFunctions","checkPermissionsUsage","size","usedMenuIds","map","menuId","fetchMenuById","waitForCheckingApps","_runtimeContext$overr","_match$params","app","currentApp","location","query","match","flags","sys","data","event","overrideApp","variableName","hash","substring","cloneDeep","getMenu","getMenuById","getDynamicReadOnlyProxy","get","target","key","getValue","ownKeys","Array","from","getReadOnlyProxy","hasInstalledApp","console","forEachItem","getItem","getStorageItem","getMedia","getRuntime","getMiscSettings","URLSearchParams","params","pathname","pkg","customProcessors","t","k","fromEntries","getAll","warnAboutStrictMode","widgetFunctions","widgetImagesFactory","widgetI18nFactory","assign","getGeneralGlobals","storyboardFunctions","appendI18nNamespace","result","cook","expression","source","supply"],"sources":["../../../../src/internal/compute/evaluate.ts"],"sourcesContent":["import {\n cook,\n preevaluate,\n PreevaluateResult,\n shouldAllowRecursiveEvaluations,\n} from \"@next-core/cook\";\nimport { loadProcessorsImperatively } from \"@next-core/loader\";\nimport { supply } from \"@next-core/supply\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { cloneDeep } from \"lodash\";\nimport { customProcessors } from \"../../CustomProcessors.js\";\nimport {\n checkPermissionsUsage,\n storyboardFunctions,\n} from \"./StoryboardFunctions.js\";\nimport { getGeneralGlobals } from \"./getGeneralGlobals.js\";\nimport {\n getDynamicReadOnlyProxy,\n getReadOnlyProxy,\n} from \"../proxyFactories.js\";\nimport { getDevHook } from \"../devtools.js\";\nimport { getMedia } from \"../mediaQuery.js\";\nimport { getStorageItem } from \"./getStorageItem.js\";\nimport { getBrickPackages, getRuntime } from \"../Runtime.js\";\nimport type { DataStore } from \"../data/DataStore.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { widgetFunctions } from \"./WidgetFunctions.js\";\nimport {\n collectAppGetMenuUsage,\n collectInstalledAppsHasUsage,\n MemberCallUsage,\n} from \"./collectMemberCallUsage.js\";\nimport { fetchMenuById, getMenuById } from \"../menu/fetchMenuById.js\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { widgetImagesFactory } from \"./images.js\";\nimport { hasInstalledApp, waitForCheckingApps } from \"../checkInstalledApps.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\n\nconst symbolForRaw = Symbol.for(\"pre.evaluated.raw\");\nconst symbolForContext = Symbol.for(\"pre.evaluated.context\");\n\nexport interface PreEvaluated {\n [symbolForRaw]: string;\n [symbolForContext]: RuntimeContext;\n}\n\nexport interface EvaluateOptions {\n lazy?: boolean;\n isReEvaluation?: boolean;\n evaluationId?: number;\n}\n\nexport function isPreEvaluated(raw: unknown): raw is PreEvaluated {\n return !!(raw as PreEvaluated)?.[symbolForRaw];\n}\n\nexport function getPreEvaluatedRaw(pre: PreEvaluated): string {\n return pre[symbolForRaw];\n}\n\nexport function shouldDismissMarkingComputed(\n raw: string | PreEvaluated\n): boolean {\n if (typeof raw === \"string\") {\n return shouldAllowRecursiveEvaluations(raw);\n }\n return shouldAllowRecursiveEvaluations(raw[symbolForRaw]);\n}\n\nconst possibleErrorConstructs = new WeakSet<ErrorConstructor>([\n SyntaxError,\n TypeError,\n ReferenceError,\n]);\n\nexport function getCookErrorConstructor(error: any): ErrorConstructor {\n return possibleErrorConstructs.has(error.constructor)\n ? error.constructor\n : TypeError;\n}\n\nexport async function asyncEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { blockingList, run } = lowLevelEvaluate(\n raw,\n runtimeContext,\n options,\n true\n );\n await Promise.all(blockingList);\n return run();\n}\n\nexport function evaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { run } = lowLevelEvaluate(raw, runtimeContext, options, false);\n return run();\n}\n\nfunction lowLevelEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options: EvaluateOptions = {},\n isAsync?: boolean\n): {\n blockingList: (Promise<unknown> | undefined)[];\n run: Function;\n} {\n const blockingList: (Promise<unknown> | undefined)[] = [];\n if (typeof raw !== \"string\") {\n // If the `raw` is not a string, it must be a pre-evaluated object.\n // Then fulfil the context, and restore the original `raw`.\n\n const {\n pendingPermissionsPreCheck: _1,\n tplStateStoreMap: _2,\n tplStateStoreScope: _3,\n ...passByRuntimeContext\n } = runtimeContext;\n\n runtimeContext = {\n ...raw[symbolForContext],\n ...passByRuntimeContext,\n };\n raw = raw[symbolForRaw];\n }\n\n // Collect `APP.getMenu(...)` usage before evaluating.\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n const hasAppUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult;\n try {\n precooked = preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n collectAppGetMenuUsage(menuUsage, node, parent!);\n collectInstalledAppsHasUsage(hasAppUsage, node, parent!);\n },\n },\n });\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n // if (options.isReEvaluation) {\n // devtoolsHookEmit(\"re-evaluation\", {\n // id: options.evaluationId,\n // detail: { raw, context: {} },\n // error: message,\n // });\n // return;\n // } else {\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n // }\n }\n\n if (menuUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"APP.getMenu\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n if (hasAppUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"INSTALLED_APPS.has\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n const globalVariables: Record<string, unknown> = {};\n const { attemptToVisitGlobals } = precooked;\n\n // Ignore evaluating if required `event/DATA` is missing in\n // context. Since they are are provided in different context, whenever\n // missing one of them, memorize the current context for later consuming.\n if (\n options.lazy ||\n (attemptToVisitGlobals.has(\"EVENT\") &&\n !hasOwnProperty(runtimeContext, \"event\")) ||\n (attemptToVisitGlobals.has(\"DATA\") &&\n !hasOwnProperty(runtimeContext, \"data\"))\n ) {\n return {\n blockingList,\n run() {\n return Object.keys(runtimeContext).length > 0\n ? ({\n [symbolForRaw]: raw,\n [symbolForContext]: runtimeContext,\n } as PreEvaluated)\n : raw;\n },\n };\n }\n\n let usedCtx: Set<string>;\n let usedProcessors: Set<string>;\n let usedStates: Set<string>;\n let tplStateStore: DataStore<\"STATE\"> | undefined;\n const strict = isStrictMode(runtimeContext);\n\n // For existed TPL usage, treat it as a STATE.\n if (\n attemptToVisitGlobals.has(\"STATE\") ||\n (!strict && attemptToVisitGlobals.has(\"TPL\"))\n ) {\n tplStateStore = getTplStateStore(runtimeContext, \"STATE\", `: \"${raw}\"`);\n }\n\n const devHook = getDevHook();\n if (isAsync || devHook) {\n if (attemptToVisitGlobals.has(\"CTX\")) {\n usedCtx = strictCollectMemberUsage(raw, \"CTX\");\n isAsync && blockingList.push(runtimeContext.ctxStore.waitFor(usedCtx));\n }\n\n if (tplStateStore) {\n usedStates = strictCollectMemberUsage(raw, \"STATE\");\n // istanbul ignore if\n if (!strict) {\n const usedTpls = strictCollectMemberUsage(raw, \"TPL\");\n for (const tpl of usedTpls) {\n usedStates.add(tpl);\n }\n }\n isAsync && blockingList.push(tplStateStore.waitFor(usedStates));\n }\n\n if (attemptToVisitGlobals.has(\"PROCESSORS\")) {\n usedProcessors = strictCollectMemberUsage(raw, \"PROCESSORS\", 2);\n isAsync &&\n blockingList.push(\n loadProcessorsImperatively(usedProcessors, getBrickPackages())\n );\n }\n }\n\n if (isAsync) {\n let attemptToCheckPermissions = attemptToVisitGlobals.has(\"PERMISSIONS\");\n // There maybe `PERMISSIONS.check()` usage in functions\n if (!attemptToCheckPermissions && attemptToVisitGlobals.has(\"FN\")) {\n const usedFunctions = [...strictCollectMemberUsage(raw, \"FN\")];\n attemptToCheckPermissions = checkPermissionsUsage(usedFunctions);\n }\n\n if (attemptToCheckPermissions) {\n blockingList.push(...runtimeContext.pendingPermissionsPreCheck);\n }\n\n if (menuUsage.usedArgs.size > 0) {\n // Block evaluating if has `APP.getMenu(...)` usage.\n const usedMenuIds = [...menuUsage.usedArgs];\n blockingList.push(\n Promise.all(\n usedMenuIds.map((menuId) => fetchMenuById(menuId, runtimeContext))\n )\n );\n }\n\n if (hasAppUsage.usedArgs.size > 0) {\n // Only wait for specific apps\n blockingList.push(waitForCheckingApps([...hasAppUsage.usedArgs]));\n }\n }\n\n return {\n blockingList,\n run() {\n const {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n ctxStore,\n data,\n event,\n } = runtimeContext;\n const app = runtimeContext.overrideApp ?? currentApp;\n\n for (const variableName of attemptToVisitGlobals) {\n switch (variableName) {\n // case \"ALIAS\":\n case \"ANCHOR\":\n globalVariables[variableName] = location.hash\n ? location.hash.substring(1)\n : null;\n break;\n case \"APP\":\n globalVariables[variableName] = {\n ...cloneDeep(app),\n getMenu: getMenuById,\n };\n break;\n case \"CTX\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return ctxStore.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedCtx);\n },\n });\n break;\n case \"DATA\":\n globalVariables[variableName] = data;\n break;\n case \"EVENT\":\n globalVariables[variableName] = event;\n break;\n case \"FLAGS\":\n globalVariables[variableName] = getReadOnlyProxy(flags);\n break;\n case \"HASH\":\n globalVariables[variableName] = location.hash;\n break;\n case \"INSTALLED_APPS\":\n globalVariables[variableName] = getReadOnlyProxy({\n has: hasInstalledApp,\n });\n break;\n case \"ITEM\":\n if (!hasOwnProperty(runtimeContext, \"forEachItem\")) {\n // eslint-disable-next-line no-console\n console.error(\n `Using \\`ITEM\\` but no \\`:forEach\\` is found, check your expression: \"${raw}\"`\n );\n } else {\n globalVariables[variableName] = runtimeContext.forEachItem;\n }\n break;\n case \"LOCAL_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"local\"),\n });\n break;\n case \"MEDIA\":\n globalVariables[variableName] = getReadOnlyProxy(getMedia());\n break;\n case \"MISC\":\n globalVariables[variableName] = getRuntime().getMiscSettings();\n break;\n case \"PARAMS\":\n globalVariables[variableName] = new URLSearchParams(query);\n break;\n case \"PATH\":\n globalVariables[variableName] = getReadOnlyProxy(\n match?.params ?? {}\n );\n break;\n case \"PATH_NAME\":\n globalVariables[variableName] = location.pathname;\n break;\n case \"PROCESSORS\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n const pkg = customProcessors.get(key as string);\n if (!pkg) {\n throw new Error(\n `'PROCESSORS.${\n key as string\n }' is not registered! Have you installed the relevant brick package?`\n );\n }\n return getDynamicReadOnlyProxy({\n get(t, k) {\n return pkg.get(k as string);\n },\n ownKeys() {\n return Array.from(pkg.keys());\n },\n });\n },\n ownKeys() {\n return Array.from(usedProcessors);\n },\n });\n break;\n case \"QUERY\":\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.get(key)])\n );\n break;\n case \"QUERY_ARRAY\":\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.getAll(key)])\n );\n // case \"SEGUE\":\n break;\n case \"SESSION_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"session\"),\n });\n break;\n // istanbul ignore next\n case \"TPL\":\n warnAboutStrictMode(\n strict,\n 'Using \"TPL\" in expression',\n `check your expression: \"${raw}\"`\n );\n if (strict) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case \"STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return tplStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedStates);\n },\n });\n break;\n case \"SYS\":\n globalVariables[variableName] = getReadOnlyProxy(sys ?? {});\n break;\n case \"__WIDGET_FN__\":\n globalVariables[variableName] = widgetFunctions;\n break;\n case \"__WIDGET_IMG__\":\n globalVariables[variableName] = widgetImagesFactory;\n break;\n case \"__WIDGET_I18N__\":\n globalVariables[variableName] = widgetI18nFactory;\n break;\n }\n }\n\n Object.assign(\n globalVariables,\n getGeneralGlobals(precooked.attemptToVisitGlobals, {\n storyboardFunctions,\n app: runtimeContext.app,\n appendI18nNamespace: runtimeContext.appendI18nNamespace,\n })\n );\n\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: supply(\n precooked.attemptToVisitGlobals,\n globalVariables\n ),\n });\n // const detail = { raw, context: globalVariables, result };\n // if (options.isReEvaluation) {\n // devtoolsHookEmit(\"re-evaluation\", {\n // id: options.evaluationId,\n // detail,\n // });\n // } else {\n // devtoolsHookEmit(\"evaluation\", detail);\n // }\n return result;\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n // if (options.isReEvaluation) {\n // devtoolsHookEmit(\"re-evaluation\", {\n // id: options.evaluationId,\n // detail: { raw, context: globalVariables },\n // error: message,\n // });\n // } else {\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n // }\n }\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"evaluate.js","names":["_cook","require","_loader","_supply","_general","_storyboard","_lodash","_CustomProcessors","_StoryboardFunctions","_getGeneralGlobals","_proxyFactories","_devtools","_mediaQuery","_getStorageItem","_Runtime","_utils","_WidgetFunctions","_collectMemberCallUsage","_fetchMenuById","_WidgetI18n","_images","_checkInstalledApps","_isStrictMode","_utils2","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","shouldAllowRecursiveEvaluations","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","isAsync","passByRuntimeContext","omit","menuUsage","usedArgs","Set","hasAppUsage","precooked","preevaluate","withParent","hooks","beforeVisitGlobal","node","parent","collectAppGetMenuUsage","collectInstalledAppsHasUsage","message","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","hasOwnProperty","Object","keys","length","usedCtx","usedProcessors","usedStates","tplStateStore","strict","isStrictMode","getTplStateStore","usedFormStates","formStateStore","getFormStateStore","devHook","getDevHook","strictCollectMemberUsage","push","ctxStore","waitFor","usedTpls","tpl","add","loadProcessorsImperatively","getBrickPackages","attemptToCheckPermissions","usedFunctions","checkPermissionsUsage","pendingPermissionsPreCheck","size","usedMenuIds","map","menuId","fetchMenuById","waitForCheckingApps","_runtimeContext$overr","_match$params","app","currentApp","location","query","match","flags","sys","data","event","overrideApp","variableName","hash","substring","cloneDeep","getMenu","getMenuById","getDynamicReadOnlyProxy","get","target","key","getValue","ownKeys","Array","from","getReadOnlyProxy","hasInstalledApp","console","forEachItem","getItem","getStorageItem","getMedia","getRuntime","getMiscSettings","URLSearchParams","params","pathname","pkg","customProcessors","t","k","fromEntries","getAll","warnAboutStrictMode","widgetFunctions","widgetImagesFactory","widgetI18nFactory","assign","getGeneralGlobals","storyboardFunctions","appendI18nNamespace","result","cook","expression","source","supply"],"sources":["../../../../src/internal/compute/evaluate.ts"],"sourcesContent":["import {\n cook,\n preevaluate,\n PreevaluateResult,\n shouldAllowRecursiveEvaluations,\n} from \"@next-core/cook\";\nimport { loadProcessorsImperatively } from \"@next-core/loader\";\nimport { supply } from \"@next-core/supply\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { cloneDeep, omit } from \"lodash\";\nimport { customProcessors } from \"../../CustomProcessors.js\";\nimport {\n checkPermissionsUsage,\n storyboardFunctions,\n} from \"./StoryboardFunctions.js\";\nimport { getGeneralGlobals } from \"./getGeneralGlobals.js\";\nimport {\n getDynamicReadOnlyProxy,\n getReadOnlyProxy,\n} from \"../proxyFactories.js\";\nimport { getDevHook } from \"../devtools.js\";\nimport { getMedia } from \"../mediaQuery.js\";\nimport { getStorageItem } from \"./getStorageItem.js\";\nimport { getBrickPackages, getRuntime } from \"../Runtime.js\";\nimport type { DataStore } from \"../data/DataStore.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { widgetFunctions } from \"./WidgetFunctions.js\";\nimport {\n collectAppGetMenuUsage,\n collectInstalledAppsHasUsage,\n MemberCallUsage,\n} from \"./collectMemberCallUsage.js\";\nimport { fetchMenuById, getMenuById } from \"../menu/fetchMenuById.js\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { widgetImagesFactory } from \"./images.js\";\nimport { hasInstalledApp, waitForCheckingApps } from \"../checkInstalledApps.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\n\nconst symbolForRaw = Symbol.for(\"pre.evaluated.raw\");\nconst symbolForContext = Symbol.for(\"pre.evaluated.context\");\n\nexport interface PreEvaluated {\n [symbolForRaw]: string;\n [symbolForContext]: RuntimeContext;\n}\n\nexport interface EvaluateOptions {\n lazy?: boolean;\n isReEvaluation?: boolean;\n evaluationId?: number;\n}\n\nexport function isPreEvaluated(raw: unknown): raw is PreEvaluated {\n return !!(raw as PreEvaluated)?.[symbolForRaw];\n}\n\nexport function getPreEvaluatedRaw(pre: PreEvaluated): string {\n return pre[symbolForRaw];\n}\n\nexport function shouldDismissMarkingComputed(\n raw: string | PreEvaluated\n): boolean {\n if (typeof raw === \"string\") {\n return shouldAllowRecursiveEvaluations(raw);\n }\n return shouldAllowRecursiveEvaluations(raw[symbolForRaw]);\n}\n\nconst possibleErrorConstructs = new WeakSet<ErrorConstructor>([\n SyntaxError,\n TypeError,\n ReferenceError,\n]);\n\nexport function getCookErrorConstructor(error: any): ErrorConstructor {\n return possibleErrorConstructs.has(error.constructor)\n ? error.constructor\n : TypeError;\n}\n\nexport async function asyncEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { blockingList, run } = lowLevelEvaluate(\n raw,\n runtimeContext,\n options,\n true\n );\n await Promise.all(blockingList);\n return run();\n}\n\nexport function evaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { run } = lowLevelEvaluate(raw, runtimeContext, options, false);\n return run();\n}\n\nfunction lowLevelEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options: EvaluateOptions = {},\n isAsync?: boolean\n): {\n blockingList: (Promise<unknown> | undefined)[];\n run: Function;\n} {\n const blockingList: (Promise<unknown> | undefined)[] = [];\n if (typeof raw !== \"string\") {\n // If the `raw` is not a string, it must be a pre-evaluated object.\n // Then fulfil the context, and restore the original `raw`.\n\n const passByRuntimeContext = omit(runtimeContext, [\n \"pendingPermissionsPreCheck\",\n \"tplStateStoreMap\",\n \"tplStateStoreScope\",\n \"formStateStoreMap\",\n \"formStateStoreScope\",\n ]);\n\n runtimeContext = {\n ...raw[symbolForContext],\n ...passByRuntimeContext,\n };\n raw = raw[symbolForRaw];\n }\n\n // Collect `APP.getMenu(...)` usage before evaluating.\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n const hasAppUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult;\n try {\n precooked = preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n collectAppGetMenuUsage(menuUsage, node, parent!);\n collectInstalledAppsHasUsage(hasAppUsage, node, parent!);\n },\n },\n });\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n // if (options.isReEvaluation) {\n // devtoolsHookEmit(\"re-evaluation\", {\n // id: options.evaluationId,\n // detail: { raw, context: {} },\n // error: message,\n // });\n // return;\n // } else {\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n // }\n }\n\n if (menuUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"APP.getMenu\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n if (hasAppUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"INSTALLED_APPS.has\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n const globalVariables: Record<string, unknown> = {};\n const { attemptToVisitGlobals } = precooked;\n\n // Ignore evaluating if required `event/DATA` is missing in\n // context. Since they are are provided in different context, whenever\n // missing one of them, memorize the current context for later consuming.\n if (\n options.lazy ||\n (attemptToVisitGlobals.has(\"EVENT\") &&\n !hasOwnProperty(runtimeContext, \"event\")) ||\n (attemptToVisitGlobals.has(\"DATA\") &&\n !hasOwnProperty(runtimeContext, \"data\"))\n ) {\n return {\n blockingList,\n run() {\n return Object.keys(runtimeContext).length > 0\n ? ({\n [symbolForRaw]: raw,\n [symbolForContext]: runtimeContext,\n } as PreEvaluated)\n : raw;\n },\n };\n }\n\n let usedCtx: Set<string>;\n let usedProcessors: Set<string>;\n let usedStates: Set<string>;\n let tplStateStore: DataStore<\"STATE\"> | undefined;\n const strict = isStrictMode(runtimeContext);\n\n // For existed TPL usage, treat it as a STATE.\n if (\n attemptToVisitGlobals.has(\"STATE\") ||\n (!strict && attemptToVisitGlobals.has(\"TPL\"))\n ) {\n tplStateStore = getTplStateStore(runtimeContext, \"STATE\", `: \"${raw}\"`);\n }\n\n let usedFormStates: Set<string>;\n let formStateStore: DataStore<\"FORM_STATE\"> | undefined;\n if (attemptToVisitGlobals.has(\"FORM_STATE\")) {\n formStateStore = getFormStateStore(\n runtimeContext,\n \"FORM_STATE\",\n `: \"${raw}\"`\n );\n }\n\n const devHook = getDevHook();\n if (isAsync || devHook) {\n if (attemptToVisitGlobals.has(\"CTX\")) {\n usedCtx = strictCollectMemberUsage(raw, \"CTX\");\n isAsync && blockingList.push(runtimeContext.ctxStore.waitFor(usedCtx));\n }\n\n if (tplStateStore) {\n usedStates = strictCollectMemberUsage(raw, \"STATE\");\n // istanbul ignore if\n if (!strict) {\n const usedTpls = strictCollectMemberUsage(raw, \"TPL\");\n for (const tpl of usedTpls) {\n usedStates.add(tpl);\n }\n }\n isAsync && blockingList.push(tplStateStore.waitFor(usedStates));\n }\n\n if (formStateStore) {\n usedFormStates = strictCollectMemberUsage(raw, \"FORM_STATE\");\n isAsync && blockingList.push(formStateStore.waitFor(usedFormStates));\n }\n\n if (attemptToVisitGlobals.has(\"PROCESSORS\")) {\n usedProcessors = strictCollectMemberUsage(raw, \"PROCESSORS\", 2);\n isAsync &&\n blockingList.push(\n loadProcessorsImperatively(usedProcessors, getBrickPackages())\n );\n }\n }\n\n if (isAsync) {\n let attemptToCheckPermissions = attemptToVisitGlobals.has(\"PERMISSIONS\");\n // There maybe `PERMISSIONS.check()` usage in functions\n if (!attemptToCheckPermissions && attemptToVisitGlobals.has(\"FN\")) {\n const usedFunctions = [...strictCollectMemberUsage(raw, \"FN\")];\n attemptToCheckPermissions = checkPermissionsUsage(usedFunctions);\n }\n\n if (attemptToCheckPermissions) {\n blockingList.push(...runtimeContext.pendingPermissionsPreCheck);\n }\n\n if (menuUsage.usedArgs.size > 0) {\n // Block evaluating if has `APP.getMenu(...)` usage.\n const usedMenuIds = [...menuUsage.usedArgs];\n blockingList.push(\n Promise.all(\n usedMenuIds.map((menuId) => fetchMenuById(menuId, runtimeContext))\n )\n );\n }\n\n if (hasAppUsage.usedArgs.size > 0) {\n // Only wait for specific apps\n blockingList.push(waitForCheckingApps([...hasAppUsage.usedArgs]));\n }\n }\n\n return {\n blockingList,\n run() {\n const {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n ctxStore,\n data,\n event,\n } = runtimeContext;\n const app = runtimeContext.overrideApp ?? currentApp;\n\n for (const variableName of attemptToVisitGlobals) {\n switch (variableName) {\n // case \"ALIAS\":\n case \"ANCHOR\":\n globalVariables[variableName] = location.hash\n ? location.hash.substring(1)\n : null;\n break;\n case \"APP\":\n globalVariables[variableName] = {\n ...cloneDeep(app),\n getMenu: getMenuById,\n };\n break;\n case \"CTX\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return ctxStore.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedCtx);\n },\n });\n break;\n case \"DATA\":\n globalVariables[variableName] = data;\n break;\n case \"EVENT\":\n globalVariables[variableName] = event;\n break;\n case \"FLAGS\":\n globalVariables[variableName] = getReadOnlyProxy(flags);\n break;\n case \"FORM_STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return formStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedFormStates);\n },\n });\n break;\n case \"HASH\":\n globalVariables[variableName] = location.hash;\n break;\n case \"INSTALLED_APPS\":\n globalVariables[variableName] = getReadOnlyProxy({\n has: hasInstalledApp,\n });\n break;\n case \"ITEM\":\n if (!hasOwnProperty(runtimeContext, \"forEachItem\")) {\n // eslint-disable-next-line no-console\n console.error(\n `Using \\`ITEM\\` but no \\`:forEach\\` is found, check your expression: \"${raw}\"`\n );\n } else {\n globalVariables[variableName] = runtimeContext.forEachItem;\n }\n break;\n case \"LOCAL_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"local\"),\n });\n break;\n case \"MEDIA\":\n globalVariables[variableName] = getReadOnlyProxy(getMedia());\n break;\n case \"MISC\":\n globalVariables[variableName] = getRuntime().getMiscSettings();\n break;\n case \"PARAMS\":\n globalVariables[variableName] = new URLSearchParams(query);\n break;\n case \"PATH\":\n globalVariables[variableName] = getReadOnlyProxy(\n match?.params ?? {}\n );\n break;\n case \"PATH_NAME\":\n globalVariables[variableName] = location.pathname;\n break;\n case \"PROCESSORS\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n const pkg = customProcessors.get(key as string);\n if (!pkg) {\n throw new Error(\n `'PROCESSORS.${\n key as string\n }' is not registered! Have you installed the relevant brick package?`\n );\n }\n return getDynamicReadOnlyProxy({\n get(t, k) {\n return pkg.get(k as string);\n },\n ownKeys() {\n return Array.from(pkg.keys());\n },\n });\n },\n ownKeys() {\n return Array.from(usedProcessors);\n },\n });\n break;\n case \"QUERY\":\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.get(key)])\n );\n break;\n case \"QUERY_ARRAY\":\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.getAll(key)])\n );\n // case \"SEGUE\":\n break;\n case \"SESSION_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"session\"),\n });\n break;\n // istanbul ignore next\n case \"TPL\":\n warnAboutStrictMode(\n strict,\n 'Using \"TPL\" in expression',\n `check your expression: \"${raw}\"`\n );\n if (strict) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case \"STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return tplStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedStates);\n },\n });\n break;\n case \"SYS\":\n globalVariables[variableName] = getReadOnlyProxy(sys ?? {});\n break;\n case \"__WIDGET_FN__\":\n globalVariables[variableName] = widgetFunctions;\n break;\n case \"__WIDGET_IMG__\":\n globalVariables[variableName] = widgetImagesFactory;\n break;\n case \"__WIDGET_I18N__\":\n globalVariables[variableName] = widgetI18nFactory;\n break;\n }\n }\n\n Object.assign(\n globalVariables,\n getGeneralGlobals(precooked.attemptToVisitGlobals, {\n storyboardFunctions,\n app: runtimeContext.app,\n appendI18nNamespace: runtimeContext.appendI18nNamespace,\n })\n );\n\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: supply(\n precooked.attemptToVisitGlobals,\n globalVariables\n ),\n });\n // const detail = { raw, context: globalVariables, result };\n // if (options.isReEvaluation) {\n // devtoolsHookEmit(\"re-evaluation\", {\n // id: options.evaluationId,\n // detail,\n // });\n // } else {\n // devtoolsHookEmit(\"evaluation\", detail);\n // }\n return result;\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n // if (options.isReEvaluation) {\n // devtoolsHookEmit(\"re-evaluation\", {\n // id: options.evaluationId,\n // detail: { raw, context: globalVariables },\n // error: message,\n // });\n // } else {\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n // }\n }\n },\n };\n}\n"],"mappings":"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"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.listenOnTrackingContext = listenOnTrackingContext;
7
7
  var _setProperties = require("./setProperties.js");
8
8
  var _utils = require("../CustomTemplates/utils.js");
9
+ var _utils2 = require("../FormRenderer/utils.js");
9
10
  function listenOnTrackingContext(brick, trackingContextList) {
10
11
  for (const track of trackingContextList) {
11
12
  const listener = () => {
@@ -26,15 +27,12 @@ function listenOnTrackingContext(brick, trackingContextList) {
26
27
  tplStateStore.onChange(stateName, listener);
27
28
  }
28
29
  }
29
- // if (track.formStateNames) {
30
- // const formContext = getCustomFormContext(context.formContextId);
31
- // for (const stateName of track.formStateNames) {
32
- // const ctx = formContext.formState.get().get(stateName);
33
- // (
34
- // ctx as StoryboardContextItemFreeVariable
35
- // )?.eventTarget?.addEventListener("formstate.change", listener);
36
- // }
37
- // }
30
+ if (track.formStateNames) {
31
+ const formStateStore = (0, _utils2.getFormStateStore)(brick.runtimeContext, "FORM_STATE", `: "${track.propValue}"`);
32
+ for (const stateName of track.formStateNames) {
33
+ formStateStore.onChange(stateName, listener);
34
+ }
35
+ }
38
36
  }
39
37
  }
40
38
  //# sourceMappingURL=listenOnTrackingContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"listenOnTrackingContext.js","names":["_setProperties","require","_utils","listenOnTrackingContext","brick","trackingContextList","track","listener","element","setProperties","propName","propValue","runtimeContext","contextNames","contextName","ctxStore","onChange","stateNames","tplStateStore","getTplStateStore","stateName"],"sources":["../../../../src/internal/compute/listenOnTrackingContext.ts"],"sourcesContent":["import { setProperties } from \"./setProperties.js\";\nimport type { RuntimeBrick } from \"../interfaces.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\n\nexport interface TrackingContextItem {\n contextNames: string[] | Set<string> | false;\n stateNames: string[] | Set<string> | false;\n formStateNames: string[] | Set<string> | false;\n propName: string;\n propValue: unknown;\n}\n\nexport function listenOnTrackingContext(\n brick: RuntimeBrick,\n trackingContextList: TrackingContextItem[]\n): void {\n for (const track of trackingContextList) {\n const listener = (): void => {\n if (brick.element) {\n setProperties(\n brick.element,\n { [track.propName]: track.propValue },\n brick.runtimeContext\n );\n }\n };\n if (track.contextNames) {\n for (const contextName of track.contextNames) {\n brick.runtimeContext.ctxStore.onChange(contextName, listener);\n }\n }\n if (track.stateNames) {\n const tplStateStore = getTplStateStore(\n brick.runtimeContext,\n \"STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.stateNames) {\n tplStateStore.onChange(stateName, listener);\n }\n }\n // if (track.formStateNames) {\n // const formContext = getCustomFormContext(context.formContextId);\n // for (const stateName of track.formStateNames) {\n // const ctx = formContext.formState.get().get(stateName);\n // (\n // ctx as StoryboardContextItemFreeVariable\n // )?.eventTarget?.addEventListener(\"formstate.change\", listener);\n // }\n // }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAUO,SAASE,uBAAuBA,CACrCC,KAAmB,EACnBC,mBAA0C,EACpC;EACN,KAAK,MAAMC,KAAK,IAAID,mBAAmB,EAAE;IACvC,MAAME,QAAQ,GAAGA,CAAA,KAAY;MAC3B,IAAIH,KAAK,CAACI,OAAO,EAAE;QACjB,IAAAC,4BAAa,EACXL,KAAK,CAACI,OAAO,EACb;UAAE,CAACF,KAAK,CAACI,QAAQ,GAAGJ,KAAK,CAACK;QAAU,CAAC,EACrCP,KAAK,CAACQ,cAAc,CACrB;MACH;IACF,CAAC;IACD,IAAIN,KAAK,CAACO,YAAY,EAAE;MACtB,KAAK,MAAMC,WAAW,IAAIR,KAAK,CAACO,YAAY,EAAE;QAC5CT,KAAK,CAACQ,cAAc,CAACG,QAAQ,CAACC,QAAQ,CAACF,WAAW,EAAEP,QAAQ,CAAC;MAC/D;IACF;IACA,IAAID,KAAK,CAACW,UAAU,EAAE;MACpB,MAAMC,aAAa,GAAG,IAAAC,uBAAgB,EACpCf,KAAK,CAACQ,cAAc,EACpB,OAAO,EACN,MAAKN,KAAK,CAACK,SAAU,GAAE,CACzB;MACD,KAAK,MAAMS,SAAS,IAAId,KAAK,CAACW,UAAU,EAAE;QACxCC,aAAa,CAACF,QAAQ,CAACI,SAAS,EAAEb,QAAQ,CAAC;MAC7C;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;AACF"}
1
+ {"version":3,"file":"listenOnTrackingContext.js","names":["_setProperties","require","_utils","_utils2","listenOnTrackingContext","brick","trackingContextList","track","listener","element","setProperties","propName","propValue","runtimeContext","contextNames","contextName","ctxStore","onChange","stateNames","tplStateStore","getTplStateStore","stateName","formStateNames","formStateStore","getFormStateStore"],"sources":["../../../../src/internal/compute/listenOnTrackingContext.ts"],"sourcesContent":["import { setProperties } from \"./setProperties.js\";\nimport type { RuntimeBrick } from \"../interfaces.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\n\nexport interface TrackingContextItem {\n contextNames: string[] | Set<string> | false;\n stateNames: string[] | Set<string> | false;\n formStateNames: string[] | Set<string> | false;\n propName: string;\n propValue: unknown;\n}\n\nexport function listenOnTrackingContext(\n brick: RuntimeBrick,\n trackingContextList: TrackingContextItem[]\n): void {\n for (const track of trackingContextList) {\n const listener = (): void => {\n if (brick.element) {\n setProperties(\n brick.element,\n { [track.propName]: track.propValue },\n brick.runtimeContext\n );\n }\n };\n if (track.contextNames) {\n for (const contextName of track.contextNames) {\n brick.runtimeContext.ctxStore.onChange(contextName, listener);\n }\n }\n if (track.stateNames) {\n const tplStateStore = getTplStateStore(\n brick.runtimeContext,\n \"STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.stateNames) {\n tplStateStore.onChange(stateName, listener);\n }\n }\n if (track.formStateNames) {\n const formStateStore = getFormStateStore(\n brick.runtimeContext,\n \"FORM_STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.formStateNames) {\n formStateStore.onChange(stateName, listener);\n }\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAUO,SAASG,uBAAuBA,CACrCC,KAAmB,EACnBC,mBAA0C,EACpC;EACN,KAAK,MAAMC,KAAK,IAAID,mBAAmB,EAAE;IACvC,MAAME,QAAQ,GAAGA,CAAA,KAAY;MAC3B,IAAIH,KAAK,CAACI,OAAO,EAAE;QACjB,IAAAC,4BAAa,EACXL,KAAK,CAACI,OAAO,EACb;UAAE,CAACF,KAAK,CAACI,QAAQ,GAAGJ,KAAK,CAACK;QAAU,CAAC,EACrCP,KAAK,CAACQ,cAAc,CACrB;MACH;IACF,CAAC;IACD,IAAIN,KAAK,CAACO,YAAY,EAAE;MACtB,KAAK,MAAMC,WAAW,IAAIR,KAAK,CAACO,YAAY,EAAE;QAC5CT,KAAK,CAACQ,cAAc,CAACG,QAAQ,CAACC,QAAQ,CAACF,WAAW,EAAEP,QAAQ,CAAC;MAC/D;IACF;IACA,IAAID,KAAK,CAACW,UAAU,EAAE;MACpB,MAAMC,aAAa,GAAG,IAAAC,uBAAgB,EACpCf,KAAK,CAACQ,cAAc,EACpB,OAAO,EACN,MAAKN,KAAK,CAACK,SAAU,GAAE,CACzB;MACD,KAAK,MAAMS,SAAS,IAAId,KAAK,CAACW,UAAU,EAAE;QACxCC,aAAa,CAACF,QAAQ,CAACI,SAAS,EAAEb,QAAQ,CAAC;MAC7C;IACF;IACA,IAAID,KAAK,CAACe,cAAc,EAAE;MACxB,MAAMC,cAAc,GAAG,IAAAC,yBAAiB,EACtCnB,KAAK,CAACQ,cAAc,EACpB,YAAY,EACX,MAAKN,KAAK,CAACK,SAAU,GAAE,CACzB;MACD,KAAK,MAAMS,SAAS,IAAId,KAAK,CAACe,cAAc,EAAE;QAC5CC,cAAc,CAACN,QAAQ,CAACI,SAAS,EAAEb,QAAQ,CAAC;MAC9C;IACF;EACF;AACF"}
@@ -125,7 +125,7 @@ class DataStore {
125
125
  return false;
126
126
  }
127
127
  let value;
128
- if (this.type === "STATE" && asyncHostProperties && dataConf.expose) {
128
+ if (asyncHostProperties && (this.type === "STATE" ? dataConf.expose : this.type === "FORM_STATE")) {
129
129
  const hostProps = await asyncHostProperties;
130
130
  if ((0, _general.hasOwnProperty)(hostProps, dataConf.name)) {
131
131
  value = hostProps[dataConf.name];
@@ -165,7 +165,7 @@ class DataStore {
165
165
  if (dataConf.onChange) {
166
166
  newData.eventTarget.addEventListener(this.changeEventType, (0, _bindListeners.listenerFactory)(dataConf.onChange, runtimeContext));
167
167
  }
168
- if (dataConf.track && this.type !== "FORM_STATE") {
168
+ if (dataConf.track) {
169
169
  const deps = (0, _storyboard.strictCollectMemberUsage)(load ? dataConf.resolve : dataConf.value, this.type);
170
170
  for (const dep of deps) {
171
171
  this.onChange(dep, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"DataStore.js","names":["_general","require","_storyboard","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","constructor","getValue","name","_this$data$get","get","value","updateValue","method","callback","callbackRuntimeContext","item","Error","load","promise","loaded","Promise","resolve","loading","cache","then","val","eventTarget","dispatchEvent","CustomEvent","detail","err","error","handleHttpError","callbackFactory","eventCallbackFactory","isObject","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","length","pending","resolveDataStore","dataConf","push","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","pendingContexts","all","map","ctx","p","waitForAll","pendingResult","asyncCheckIf","expose","hostProps","hasOwnProperty","isLazyResolve","undefined","resolveConf","transform","options","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","listenerFactory","track","deps","strictCollectMemberUsage","dep","computeRealValue","has","set","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type { BrickEventHandlerCallback, ContextConf } from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n\n constructor(type: T, hostBrick?: RuntimeBrick) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (this.type === \"STATE\" && asyncHostProperties && dataConf.expose) {\n const hostProps = await asyncHostProperties;\n if (hasOwnProperty(hostProps, dataConf.name)) {\n value = hostProps[dataConf.name];\n }\n }\n let load: DataStoreItem[\"load\"];\n let isLazyResolve: boolean | undefined = false;\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n isLazyResolve = dataConf.resolve.lazy;\n if (!isLazyResolve) {\n value = await load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if ((!load || isLazyResolve) && dataConf.value !== undefined) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: !isLazyResolve,\n };\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track && this.type !== \"FORM_STATE\") {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n for (const dep of deps) {\n this.onChange(dep, () => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n });\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n return true;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataStore.js","names":["_general","require","_storyboard","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","constructor","getValue","name","_this$data$get","get","value","updateValue","method","callback","callbackRuntimeContext","item","Error","load","promise","loaded","Promise","resolve","loading","cache","then","val","eventTarget","dispatchEvent","CustomEvent","detail","err","error","handleHttpError","callbackFactory","eventCallbackFactory","isObject","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","length","pending","resolveDataStore","dataConf","push","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","pendingContexts","all","map","ctx","p","waitForAll","pendingResult","asyncCheckIf","expose","hostProps","hasOwnProperty","isLazyResolve","undefined","resolveConf","transform","options","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","listenerFactory","track","deps","strictCollectMemberUsage","dep","computeRealValue","has","set","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type { BrickEventHandlerCallback, ContextConf } from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n\n constructor(type: T, hostBrick?: RuntimeBrick) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostProperties &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n const hostProps = await asyncHostProperties;\n if (hasOwnProperty(hostProps, dataConf.name)) {\n value = hostProps[dataConf.name];\n }\n }\n let load: DataStoreItem[\"load\"];\n let isLazyResolve: boolean | undefined = false;\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n isLazyResolve = dataConf.resolve.lazy;\n if (!isLazyResolve) {\n value = await load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if ((!load || isLazyResolve) && dataConf.value !== undefined) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: !isLazyResolve,\n };\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n for (const dep of deps) {\n this.onChange(dep, () => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n });\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n return true;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fulfilStoryboard = fulfilStoryboard;
7
+ var _Runtime = require("./Runtime.js");
8
+ var _registerAppI18n = require("./registerAppI18n.js");
9
+ async function fulfilStoryboard(storyboard) {
10
+ if (storyboard.$$fulfilled) {
11
+ return;
12
+ }
13
+ if (!storyboard.$$fulfilling) {
14
+ storyboard.$$fulfilling = doFulfilStoryboard(storyboard);
15
+ }
16
+ return storyboard.$$fulfilling;
17
+ }
18
+ async function doFulfilStoryboard(storyboard) {
19
+ var _hooks$fulfilStoryboa;
20
+ await (_Runtime.hooks === null || _Runtime.hooks === void 0 ? void 0 : (_hooks$fulfilStoryboa = _Runtime.hooks.fulfilStoryboard) === null || _hooks$fulfilStoryboa === void 0 ? void 0 : _hooks$fulfilStoryboa.call(_Runtime.hooks, storyboard));
21
+ (0, _registerAppI18n.registerAppI18n)(storyboard);
22
+ Object.assign(storyboard, {
23
+ $$fulfilled: true,
24
+ $$fulfilling: null
25
+ });
26
+ }
27
+ //# sourceMappingURL=fulfilStoryboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fulfilStoryboard.js","names":["_Runtime","require","_registerAppI18n","fulfilStoryboard","storyboard","$$fulfilled","$$fulfilling","doFulfilStoryboard","_hooks$fulfilStoryboa","hooks","call","registerAppI18n","Object","assign"],"sources":["../../../src/internal/fulfilStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { hooks } from \"./Runtime.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport async function fulfilStoryboard(storyboard: RuntimeStoryboard) {\n if (storyboard.$$fulfilled) {\n return;\n }\n if (!storyboard.$$fulfilling) {\n storyboard.$$fulfilling = doFulfilStoryboard(storyboard);\n }\n return storyboard.$$fulfilling;\n}\n\nasync function doFulfilStoryboard(storyboard: RuntimeStoryboard) {\n await hooks?.fulfilStoryboard?.(storyboard);\n registerAppI18n(storyboard);\n Object.assign(storyboard, {\n $$fulfilled: true,\n $$fulfilling: null,\n });\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEO,eAAeE,gBAAgBA,CAACC,UAA6B,EAAE;EACpE,IAAIA,UAAU,CAACC,WAAW,EAAE;IAC1B;EACF;EACA,IAAI,CAACD,UAAU,CAACE,YAAY,EAAE;IAC5BF,UAAU,CAACE,YAAY,GAAGC,kBAAkB,CAACH,UAAU,CAAC;EAC1D;EACA,OAAOA,UAAU,CAACE,YAAY;AAChC;AAEA,eAAeC,kBAAkBA,CAACH,UAA6B,EAAE;EAAA,IAAAI,qBAAA;EAC/D,OAAMC,cAAK,aAALA,cAAK,wBAAAD,qBAAA,GAALC,cAAK,CAAEN,gBAAgB,cAAAK,qBAAA,uBAAvBA,qBAAA,CAAAE,IAAA,CAAAD,cAAK,EAAqBL,UAAU,CAAC;EAC3C,IAAAO,gCAAe,EAACP,UAAU,CAAC;EAC3BQ,MAAM,CAACC,MAAM,CAACT,UAAU,EAAE;IACxBC,WAAW,EAAE,IAAI;IACjBC,YAAY,EAAE;EAChB,CAAC,CAAC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n appendI18nNamespace?: string;\n}\n\nexport type AsyncProperties = Promise<Record<string, unknown>>;\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderBrick;\n sibling?: RenderBrick;\n return?: RenderNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostProperties?: AsyncProperties;\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncProperties = Promise<Record<string, unknown>>;\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderBrick;\n sibling?: RenderBrick;\n return?: RenderNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostProperties?: AsyncProperties;\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n"],"mappings":""}
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.initializePlayground = initializePlayground;
7
6
  exports.legacyDoTransform = legacyDoTransform;
8
- exports.loadBricks = void 0;
9
7
  exports.mountUseBrick = mountUseBrick;
10
8
  exports.renderUseBrick = renderUseBrick;
11
9
  exports.unmountUseBrick = unmountUseBrick;
@@ -26,18 +24,19 @@ var _computeRealValue = require("./compute/computeRealValue.js");
26
24
  var _isStrictMode = require("../isStrictMode.js");
27
25
  var _CustomTemplates = require("../CustomTemplates.js");
28
26
  var _registerAppI18n = require("./registerAppI18n.js");
29
- var _Notification = require("../Notification.js");
30
- var _Dialog = require("../Dialog.js");
31
27
  async function renderUseBrick(useBrick, data) {
32
- var _runtimeContext$tplSt, _output$node;
28
+ var _runtimeContext$tplSt, _runtimeContext$formS, _output$node;
33
29
  const tplStateStoreScope = [];
30
+ const formStateStoreScope = [];
34
31
  const runtimeContext = {
35
32
  ...(0, _Runtime._internalApiGetRuntimeContext)(),
36
33
  data,
37
34
  pendingPermissionsPreCheck: [],
38
- tplStateStoreScope
35
+ tplStateStoreScope,
36
+ formStateStoreScope
39
37
  };
40
38
  (_runtimeContext$tplSt = runtimeContext.tplStateStoreMap) !== null && _runtimeContext$tplSt !== void 0 ? _runtimeContext$tplSt : runtimeContext.tplStateStoreMap = new Map();
39
+ (_runtimeContext$formS = runtimeContext.formStateStoreMap) !== null && _runtimeContext$formS !== void 0 ? _runtimeContext$formS : runtimeContext.formStateStoreMap = new Map();
41
40
  const rendererContext = new _RendererContext.RendererContext("fragment");
42
41
  const renderRoot = {
43
42
  tag: _enums.RenderTag.ROOT,
@@ -59,7 +58,7 @@ async function renderUseBrick(useBrick, data) {
59
58
  (0, _loader.flushStableLoadBricks)();
60
59
  await Promise.all([...output.blockingList,
61
60
  // Wait for local tpl state stores belong to current `useBrick` only.
62
- ...tplStateStoreScope.map(store => store.waitForAll()), ...runtimeContext.pendingPermissionsPreCheck]);
61
+ ...[...tplStateStoreScope, ...formStateStoreScope].map(store => store.waitForAll()), ...runtimeContext.pendingPermissionsPreCheck]);
63
62
  if ((_output$node = output.node) !== null && _output$node !== void 0 && _output$node.portal) {
64
63
  throw new Error("The root brick of useBrick cannot be a portal brick");
65
64
  }
@@ -103,12 +102,6 @@ function unmountUseBrick({
103
102
  rendererContext.dispatchOnUnmount();
104
103
  rendererContext.dispose();
105
104
  }
106
- function initializePlayground(data) {
107
- (0, _Runtime._internalApiSetBootstrapData)(data);
108
- // Todo: allow configuration of notification bricks.
109
- (0, _Notification.loadNotificationService)("shoelace.show-notification");
110
- (0, _Dialog.loadDialogService)("shoelace.show-dialog");
111
- }
112
105
  function legacyDoTransform(data, to, options) {
113
106
  if (options) {
114
107
  throw new Error("Legacy doTransform does not support options in v3");
@@ -120,8 +113,6 @@ function legacyDoTransform(data, to, options) {
120
113
  noInject: true
121
114
  });
122
115
  }
123
- const loadBricks = _Runtime._internalApiLoadBricks;
124
- exports.loadBricks = loadBricks;
125
116
  function updateStoryboard(appId, storyboardPatch) {
126
117
  const storyboard = (0, _Runtime._internalApiGetStoryboardInBootstrapData)(appId);
127
118
  Object.assign(storyboard, {
@@ -1 +1 @@
1
- {"version":3,"file":"secret_internals.js","names":["_loader","require","_lodash","_Runtime","_Renderer","_RendererContext","_mount","_enums","_computeRealValue","_isStrictMode","_CustomTemplates","_registerAppI18n","_Notification","_Dialog","renderUseBrick","useBrick","data","_runtimeContext$tplSt","_output$node","tplStateStoreScope","runtimeContext","_internalApiGetRuntimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","rendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","createPortal","transform","strict","isStrictMode","warnAboutStrictMode","output","renderBrick","properties","flushStableLoadBricks","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","element","portalRoot","document","querySelector","createElement","appendChild","mountTree","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","unmountUseBrick","mountResult","unmountTree","remove","dispatchOnUnmount","dispose","initializePlayground","_internalApiSetBootstrapData","loadNotificationService","loadDialogService","legacyDoTransform","to","options","computeRealValue","noInject","loadBricks","_internalApiLoadBricks","exports","updateStoryboard","appId","storyboardPatch","storyboard","_internalApiGetStoryboardInBootstrapData","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","registerAppI18n","updateStoryboardByRoute","newRoute","match","getKey","route","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","customTemplates","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","pick","updateStoryboardBySnippet","snippetData","_snippetData$bricks","snippetId","length","updateSnippetPreviewSettings","previewRouteIndex","findIndex","newPreviewRoute","menu","splice"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BootstrapData,\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n _internalApiLoadBricks,\n _internalApiSetBootstrapData,\n} from \"./Runtime.js\";\nimport { renderBrick } from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\nimport { loadNotificationService } from \"../Notification.js\";\nimport { loadDialogService } from \"../Dialog.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const runtimeContext: RuntimeContext = {\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n tplStateStoreScope,\n };\n\n runtimeContext.tplStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n await Promise.all([\n ...output.blockingList,\n // Wait for local tpl state stores belong to current `useBrick` only.\n ...tplStateStoreScope.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\nexport function initializePlayground(data: Partial<BootstrapData>) {\n _internalApiSetBootstrapData(data);\n // Todo: allow configuration of notification bricks.\n loadNotificationService(\"shoelace.show-notification\");\n loadDialogService(\"shoelace.show-dialog\");\n}\n\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport const loadBricks = _internalApiLoadBricks;\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetData.snippetId}`,\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }]\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"secret_internals.js","names":["_loader","require","_lodash","_Runtime","_Renderer","_RendererContext","_mount","_enums","_computeRealValue","_isStrictMode","_CustomTemplates","_registerAppI18n","renderUseBrick","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_internalApiGetRuntimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","createPortal","transform","strict","isStrictMode","warnAboutStrictMode","output","renderBrick","properties","flushStableLoadBricks","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","element","portalRoot","document","querySelector","createElement","appendChild","mountTree","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","unmountUseBrick","mountResult","unmountTree","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","computeRealValue","noInject","updateStoryboard","appId","storyboardPatch","storyboard","_internalApiGetStoryboardInBootstrapData","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","registerAppI18n","updateStoryboardByRoute","newRoute","match","getKey","route","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","customTemplates","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","pick","updateStoryboardBySnippet","snippetData","_snippetData$bricks","snippetId","length","updateSnippetPreviewSettings","exports","previewRouteIndex","findIndex","newPreviewRoute","menu","splice"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n} from \"./Runtime.js\";\nimport { renderBrick } from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const runtimeContext: RuntimeContext = {\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n tplStateStoreScope,\n formStateStoreScope,\n };\n\n runtimeContext.tplStateStoreMap ??= new Map();\n runtimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n await Promise.all([\n ...output.blockingList,\n // Wait for local tpl state stores belong to current `useBrick` only.\n ...[...tplStateStoreScope, ...formStateStoreScope].map((store) =>\n store.waitForAll()\n ),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetData.snippetId}`,\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }]\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { _internalApiLoadBricks } from "./internal/Runtime.js";
2
1
  var brick;
3
2
  function show(options) {
4
3
  if (brick) {
@@ -22,8 +21,8 @@ function show(options) {
22
21
  }
23
22
  }
24
23
  }
25
- export function loadDialogService(tagName) {
26
- _internalApiLoadBricks([tagName]).then(() => {
24
+ export function loadDialogService(tagName, loader) {
25
+ loader([tagName]).then(() => {
27
26
  brick = document.createElement(tagName);
28
27
  }, error => {
29
28
  // eslint-disable-next-line no-console
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","names":["_internalApiLoadBricks","brick","show","options","resolve","type","confirm","content","Promise","setTimeout","reject","alert","loadDialogService","tagName","then","document","createElement","error","console","Dialog","Object","freeze"],"sources":["../../src/Dialog.ts"],"sourcesContent":["import { _internalApiLoadBricks } from \"./internal/Runtime.js\";\n\nlet brick: {\n resolve(options: DialogOptions): Promise<void>;\n};\n\nfunction show(options: DialogOptions): Promise<void> {\n if (brick) {\n return brick.resolve(options);\n } else {\n if (options.type === \"confirm\") {\n if (confirm(options.content)) {\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, 1)\n );\n } else {\n return new Promise((resolve, reject) =>\n setTimeout(() => {\n reject();\n }, 1)\n );\n }\n } else {\n alert(options.content);\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, 1000)\n );\n }\n }\n}\n\nexport function loadDialogService(tagName: string) {\n _internalApiLoadBricks([tagName]).then(\n () => {\n brick = document.createElement(tagName) as any;\n },\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load dialog service failed:\", error);\n }\n );\n}\n\nexport interface DialogOptions {\n type?: \"success\" | \"error\" | \"warn\" | \"info\" | \"confirm\";\n title?: string | null;\n content: string;\n contentStyle?: object;\n}\n\nexport const Dialog = Object.freeze({\n show,\n});\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,uBAAuB;AAE9D,IAAIC,KAEH;AAED,SAASC,IAAIA,CAACC,OAAsB,EAAiB;EACnD,IAAIF,KAAK,EAAE;IACT,OAAOA,KAAK,CAACG,OAAO,CAACD,OAAO,CAAC;EAC/B,CAAC,MAAM;IACL,IAAIA,OAAO,CAACE,IAAI,KAAK,SAAS,EAAE;MAC9B,IAAIC,OAAO,CAACH,OAAO,CAACI,OAAO,CAAC,EAAE;QAC5B,OAAO,IAAIC,OAAO,CAAEJ,OAAO,IACzBK,UAAU,CAAC,MAAM;UACfL,OAAO,EAAE;QACX,CAAC,EAAE,CAAC,CAAC,CACN;MACH,CAAC,MAAM;QACL,OAAO,IAAII,OAAO,CAAC,CAACJ,OAAO,EAAEM,MAAM,KACjCD,UAAU,CAAC,MAAM;UACfC,MAAM,EAAE;QACV,CAAC,EAAE,CAAC,CAAC,CACN;MACH;IACF,CAAC,MAAM;MACLC,KAAK,CAACR,OAAO,CAACI,OAAO,CAAC;MACtB,OAAO,IAAIC,OAAO,CAAEJ,OAAO,IACzBK,UAAU,CAAC,MAAM;QACfL,OAAO,EAAE;MACX,CAAC,EAAE,IAAI,CAAC,CACT;IACH;EACF;AACF;AAEA,OAAO,SAASQ,iBAAiBA,CAACC,OAAe,EAAE;EACjDb,sBAAsB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,IAAI,CACpC,MAAM;IACJb,KAAK,GAAGc,QAAQ,CAACC,aAAa,CAACH,OAAO,CAAQ;EAChD,CAAC,EACAI,KAAc,IAAK;IAClB;IACAC,OAAO,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;EACrD,CAAC,CACF;AACH;AASA,OAAO,IAAME,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC;EAClCnB;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"Dialog.js","names":["brick","show","options","resolve","type","confirm","content","Promise","setTimeout","reject","alert","loadDialogService","tagName","loader","then","document","createElement","error","console","Dialog","Object","freeze"],"sources":["../../src/Dialog.ts"],"sourcesContent":["let brick: {\n resolve(options: DialogOptions): Promise<void>;\n};\n\nfunction show(options: DialogOptions): Promise<void> {\n if (brick) {\n return brick.resolve(options);\n } else {\n if (options.type === \"confirm\") {\n if (confirm(options.content)) {\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, 1)\n );\n } else {\n return new Promise((resolve, reject) =>\n setTimeout(() => {\n reject();\n }, 1)\n );\n }\n } else {\n alert(options.content);\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, 1000)\n );\n }\n }\n}\n\nexport function loadDialogService(\n tagName: string,\n loader: (bricks: string[]) => Promise<void>\n) {\n loader([tagName]).then(\n () => {\n brick = document.createElement(tagName) as any;\n },\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load dialog service failed:\", error);\n }\n );\n}\n\nexport interface DialogOptions {\n type?: \"success\" | \"error\" | \"warn\" | \"info\" | \"confirm\";\n title?: string | null;\n content: string;\n contentStyle?: object;\n}\n\nexport const Dialog = Object.freeze({\n show,\n});\n"],"mappings":"AAAA,IAAIA,KAEH;AAED,SAASC,IAAIA,CAACC,OAAsB,EAAiB;EACnD,IAAIF,KAAK,EAAE;IACT,OAAOA,KAAK,CAACG,OAAO,CAACD,OAAO,CAAC;EAC/B,CAAC,MAAM;IACL,IAAIA,OAAO,CAACE,IAAI,KAAK,SAAS,EAAE;MAC9B,IAAIC,OAAO,CAACH,OAAO,CAACI,OAAO,CAAC,EAAE;QAC5B,OAAO,IAAIC,OAAO,CAAEJ,OAAO,IACzBK,UAAU,CAAC,MAAM;UACfL,OAAO,EAAE;QACX,CAAC,EAAE,CAAC,CAAC,CACN;MACH,CAAC,MAAM;QACL,OAAO,IAAII,OAAO,CAAC,CAACJ,OAAO,EAAEM,MAAM,KACjCD,UAAU,CAAC,MAAM;UACfC,MAAM,EAAE;QACV,CAAC,EAAE,CAAC,CAAC,CACN;MACH;IACF,CAAC,MAAM;MACLC,KAAK,CAACR,OAAO,CAACI,OAAO,CAAC;MACtB,OAAO,IAAIC,OAAO,CAAEJ,OAAO,IACzBK,UAAU,CAAC,MAAM;QACfL,OAAO,EAAE;MACX,CAAC,EAAE,IAAI,CAAC,CACT;IACH;EACF;AACF;AAEA,OAAO,SAASQ,iBAAiBA,CAC/BC,OAAe,EACfC,MAA2C,EAC3C;EACAA,MAAM,CAAC,CAACD,OAAO,CAAC,CAAC,CAACE,IAAI,CACpB,MAAM;IACJd,KAAK,GAAGe,QAAQ,CAACC,aAAa,CAACJ,OAAO,CAAQ;EAChD,CAAC,EACAK,KAAc,IAAK;IAClB;IACAC,OAAO,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;EACrD,CAAC,CACF;AACH;AASA,OAAO,IAAME,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC;EAClCpB;AACF,CAAC,CAAC"}
@@ -1,4 +1,3 @@
1
- import { _internalApiLoadBricks } from "./internal/Runtime.js";
2
1
  var brick;
3
2
  function show(options) {
4
3
  if (brick) {
@@ -7,8 +6,8 @@ function show(options) {
7
6
  alert(options.message);
8
7
  }
9
8
  }
10
- export function loadNotificationService(tagName) {
11
- _internalApiLoadBricks([tagName]).then(() => {
9
+ export function loadNotificationService(tagName, loader) {
10
+ loader([tagName]).then(() => {
12
11
  brick = document.createElement(tagName);
13
12
  }, error => {
14
13
  // eslint-disable-next-line no-console
@@ -1 +1 @@
1
- {"version":3,"file":"Notification.js","names":["_internalApiLoadBricks","brick","show","options","resolve","alert","message","loadNotificationService","tagName","then","document","createElement","error","console","Notification","Object","freeze"],"sources":["../../src/Notification.ts"],"sourcesContent":["import { _internalApiLoadBricks } from \"./internal/Runtime.js\";\n\nlet brick: {\n resolve(options: NotificationOptions): void;\n};\n\nfunction show(options: NotificationOptions) {\n if (brick) {\n brick.resolve(options);\n } else {\n alert(options.message);\n }\n}\n\nexport function loadNotificationService(tagName: string) {\n _internalApiLoadBricks([tagName]).then(\n () => {\n brick = document.createElement(tagName) as any;\n },\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load notification service failed:\", error);\n }\n );\n}\n\nexport interface NotificationOptions {\n type?: \"success\" | \"error\" | \"warn\" | \"info\";\n message: string;\n}\n\nexport const Notification = Object.freeze({\n show,\n});\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,uBAAuB;AAE9D,IAAIC,KAEH;AAED,SAASC,IAAIA,CAACC,OAA4B,EAAE;EAC1C,IAAIF,KAAK,EAAE;IACTA,KAAK,CAACG,OAAO,CAACD,OAAO,CAAC;EACxB,CAAC,MAAM;IACLE,KAAK,CAACF,OAAO,CAACG,OAAO,CAAC;EACxB;AACF;AAEA,OAAO,SAASC,uBAAuBA,CAACC,OAAe,EAAE;EACvDR,sBAAsB,CAAC,CAACQ,OAAO,CAAC,CAAC,CAACC,IAAI,CACpC,MAAM;IACJR,KAAK,GAAGS,QAAQ,CAACC,aAAa,CAACH,OAAO,CAAQ;EAChD,CAAC,EACAI,KAAc,IAAK;IAClB;IACAC,OAAO,CAACD,KAAK,CAAC,mCAAmC,EAAEA,KAAK,CAAC;EAC3D,CAAC,CACF;AACH;AAOA,OAAO,IAAME,YAAY,GAAGC,MAAM,CAACC,MAAM,CAAC;EACxCd;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"Notification.js","names":["brick","show","options","resolve","alert","message","loadNotificationService","tagName","loader","then","document","createElement","error","console","Notification","Object","freeze"],"sources":["../../src/Notification.ts"],"sourcesContent":["let brick: {\n resolve(options: NotificationOptions): void;\n};\n\nfunction show(options: NotificationOptions) {\n if (brick) {\n brick.resolve(options);\n } else {\n alert(options.message);\n }\n}\n\nexport function loadNotificationService(\n tagName: string,\n loader: (bricks: string[]) => Promise<void>\n) {\n loader([tagName]).then(\n () => {\n brick = document.createElement(tagName) as any;\n },\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load notification service failed:\", error);\n }\n );\n}\n\nexport interface NotificationOptions {\n type?: \"success\" | \"error\" | \"warn\" | \"info\";\n message: string;\n}\n\nexport const Notification = Object.freeze({\n show,\n});\n"],"mappings":"AAAA,IAAIA,KAEH;AAED,SAASC,IAAIA,CAACC,OAA4B,EAAE;EAC1C,IAAIF,KAAK,EAAE;IACTA,KAAK,CAACG,OAAO,CAACD,OAAO,CAAC;EACxB,CAAC,MAAM;IACLE,KAAK,CAACF,OAAO,CAACG,OAAO,CAAC;EACxB;AACF;AAEA,OAAO,SAASC,uBAAuBA,CACrCC,OAAe,EACfC,MAA2C,EAC3C;EACAA,MAAM,CAAC,CAACD,OAAO,CAAC,CAAC,CAACE,IAAI,CACpB,MAAM;IACJT,KAAK,GAAGU,QAAQ,CAACC,aAAa,CAACJ,OAAO,CAAQ;EAChD,CAAC,EACAK,KAAc,IAAK;IAClB;IACAC,OAAO,CAACD,KAAK,CAAC,mCAAmC,EAAEA,KAAK,CAAC;EAC3D,CAAC,CACF;AACH;AAOA,OAAO,IAAME,YAAY,GAAGC,MAAM,CAACC,MAAM,CAAC;EACxCf;AACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createRuntime","getRuntime","__secret_internals","getCssPropertyValue","getCurrentTheme","getCurrentMode","batchSetAppsLocalTheme","applyTheme","checkIfOfComputed","checkIfByTransform","registerWidgetFunctions","registerWidgetI18n","StoryboardFunctionRegistryFactory","matchPath","Notification","Dialog"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.js\";\nexport * from \"./CustomProcessors.js\";\nexport * from \"./CustomTemplates.js\";\nexport * from \"./fetchByProvider.js\";\nexport * from \"./getBasePath.js\";\nexport * from \"./getPageInfo.js\";\nexport * from \"./handleHttpError.js\";\nexport * from \"./history.js\";\nexport * from \"./createRoot.js\";\nexport { createRuntime, getRuntime } from \"./internal/Runtime.js\";\nimport * as __secret_internals from \"./internal/secret_internals.js\";\nexport { __secret_internals };\nexport {\n getCssPropertyValue,\n getCurrentTheme,\n getCurrentMode,\n batchSetAppsLocalTheme,\n applyTheme,\n} from \"./themeAndMode.js\";\nexport {\n checkIfOfComputed,\n checkIfByTransform,\n} from \"./internal/compute/checkIf.js\";\nexport { registerWidgetFunctions } from \"./internal/compute/WidgetFunctions.js\";\nexport { registerWidgetI18n } from \"./internal/compute/WidgetI18n.js\";\nexport { StoryboardFunctionRegistryFactory } from \"./StoryboardFunctionRegistry.js\";\nexport { matchPath } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,uBAAuB;AACrC,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,sBAAsB;AACpC,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,SAASA,aAAa,EAAEC,UAAU,QAAQ,uBAAuB;AACjE,OAAO,KAAKC,kBAAkB,MAAM,gCAAgC;AACpE,SAASA,kBAAkB;AAC3B,SACEC,mBAAmB,EACnBC,eAAe,EACfC,cAAc,EACdC,sBAAsB,EACtBC,UAAU,QACL,mBAAmB;AAC1B,SACEC,iBAAiB,EACjBC,kBAAkB,QACb,+BAA+B;AACtC,SAASC,uBAAuB,QAAQ,uCAAuC;AAC/E,SAASC,kBAAkB,QAAQ,kCAAkC;AACrE,SAASC,iCAAiC,QAAQ,iCAAiC;AACnF,SAASC,SAAS,QAAQ,yBAAyB;AACnD,SAASC,YAAY,QAAkC,mBAAmB;AAC1E,SAASC,MAAM,QAA4B,aAAa"}
1
+ {"version":3,"file":"index.js","names":["createRuntime","getRuntime","__secret_internals","getCssPropertyValue","getCurrentTheme","getCurrentMode","batchSetAppsLocalTheme","applyTheme","checkIfOfComputed","checkIfByTransform","registerWidgetFunctions","registerWidgetI18n","StoryboardFunctionRegistryFactory","matchPath","Notification","Dialog"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.js\";\nexport * from \"./CustomProcessors.js\";\nexport * from \"./CustomTemplates.js\";\nexport * from \"./fetchByProvider.js\";\nexport * from \"./getBasePath.js\";\nexport * from \"./getPageInfo.js\";\nexport * from \"./handleHttpError.js\";\nexport * from \"./history.js\";\nexport * from \"./createRoot.js\";\nexport {\n createRuntime,\n getRuntime,\n type RuntimeOptions,\n type RuntimeHooks,\n} from \"./internal/Runtime.js\";\nimport * as __secret_internals from \"./internal/secret_internals.js\";\nexport { __secret_internals };\nexport {\n getCssPropertyValue,\n getCurrentTheme,\n getCurrentMode,\n batchSetAppsLocalTheme,\n applyTheme,\n} from \"./themeAndMode.js\";\nexport {\n checkIfOfComputed,\n checkIfByTransform,\n} from \"./internal/compute/checkIf.js\";\nexport { registerWidgetFunctions } from \"./internal/compute/WidgetFunctions.js\";\nexport { registerWidgetI18n } from \"./internal/compute/WidgetI18n.js\";\nexport { StoryboardFunctionRegistryFactory } from \"./StoryboardFunctionRegistry.js\";\nexport { matchPath } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,uBAAuB;AACrC,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,sBAAsB;AACpC,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,SACEA,aAAa,EACbC,UAAU,QAGL,uBAAuB;AAC9B,OAAO,KAAKC,kBAAkB,MAAM,gCAAgC;AACpE,SAASA,kBAAkB;AAC3B,SACEC,mBAAmB,EACnBC,eAAe,EACfC,cAAc,EACdC,sBAAsB,EACtBC,UAAU,QACL,mBAAmB;AAC1B,SACEC,iBAAiB,EACjBC,kBAAkB,QACb,+BAA+B;AACtC,SAASC,uBAAuB,QAAQ,uCAAuC;AAC/E,SAASC,kBAAkB,QAAQ,kCAAkC;AACrE,SAASC,iCAAiC,QAAQ,iCAAiC;AACnF,SAASC,SAAS,QAAQ,yBAAyB;AACnD,SAASC,YAAY,QAAkC,mBAAmB;AAC1E,SAASC,MAAM,QAA4B,aAAa"}
@@ -15,8 +15,9 @@ export function expandCustomTemplate(tplTagName, brickConf, hostBrick, asyncHost
15
15
  tplStateStoreId
16
16
  });
17
17
 
18
- // There is a boundary for `forEachItem` between template internals and externals.
18
+ // There is a boundary for `forEachItem` and `FORM_STATE` between template internals and externals.
19
19
  delete runtimeContext.forEachItem;
20
+ delete runtimeContext.formStateStoreId;
20
21
  var tplStateStore = new DataStore("STATE", hostBrick);
21
22
  runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);
22
23
  if (runtimeContext.tplStateStoreScope) {