@next-core/runtime 1.4.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +2 -1
  2. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  3. package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
  4. package/dist/cjs/internal/FormRenderer/constants.js +11 -0
  5. package/dist/cjs/internal/FormRenderer/constants.js.map +1 -0
  6. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +122 -0
  7. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -0
  8. package/dist/cjs/internal/FormRenderer/getDefaultProperties.js +165 -0
  9. package/dist/cjs/internal/FormRenderer/getDefaultProperties.js.map +1 -0
  10. package/dist/cjs/internal/FormRenderer/interfaces.js +6 -0
  11. package/dist/cjs/internal/FormRenderer/interfaces.js.map +1 -0
  12. package/dist/cjs/internal/FormRenderer/utils.js +20 -0
  13. package/dist/cjs/internal/FormRenderer/utils.js.map +1 -0
  14. package/dist/cjs/internal/Renderer.js +38 -9
  15. package/dist/cjs/internal/Renderer.js.map +1 -1
  16. package/dist/cjs/internal/Router.js +3 -2
  17. package/dist/cjs/internal/Router.js.map +1 -1
  18. package/dist/cjs/internal/bindListeners.js +9 -2
  19. package/dist/cjs/internal/bindListeners.js.map +1 -1
  20. package/dist/cjs/internal/compute/evaluate.js +21 -6
  21. package/dist/cjs/internal/compute/evaluate.js.map +1 -1
  22. package/dist/cjs/internal/compute/listenOnTrackingContext.js +7 -9
  23. package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
  24. package/dist/cjs/internal/data/DataStore.js +2 -2
  25. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  26. package/dist/cjs/internal/interfaces.js.map +1 -1
  27. package/dist/cjs/internal/secret_internals.js +6 -3
  28. package/dist/cjs/internal/secret_internals.js.map +1 -1
  29. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +2 -1
  30. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  31. package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
  32. package/dist/esm/internal/FormRenderer/constants.js +3 -0
  33. package/dist/esm/internal/FormRenderer/constants.js.map +1 -0
  34. package/dist/esm/internal/FormRenderer/expandFormRenderer.js +111 -0
  35. package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -0
  36. package/dist/esm/internal/FormRenderer/getDefaultProperties.js +136 -0
  37. package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -0
  38. package/dist/esm/internal/FormRenderer/interfaces.js +2 -0
  39. package/dist/esm/internal/FormRenderer/interfaces.js.map +1 -0
  40. package/dist/esm/internal/FormRenderer/utils.js +15 -0
  41. package/dist/esm/internal/FormRenderer/utils.js.map +1 -0
  42. package/dist/esm/internal/Renderer.js +48 -16
  43. package/dist/esm/internal/Renderer.js.map +1 -1
  44. package/dist/esm/internal/Router.js +3 -2
  45. package/dist/esm/internal/Router.js.map +1 -1
  46. package/dist/esm/internal/bindListeners.js +9 -2
  47. package/dist/esm/internal/bindListeners.js.map +1 -1
  48. package/dist/esm/internal/compute/evaluate.js +22 -9
  49. package/dist/esm/internal/compute/evaluate.js.map +1 -1
  50. package/dist/esm/internal/compute/listenOnTrackingContext.js +7 -9
  51. package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
  52. package/dist/esm/internal/data/DataStore.js +2 -2
  53. package/dist/esm/internal/data/DataStore.js.map +1 -1
  54. package/dist/esm/internal/interfaces.js.map +1 -1
  55. package/dist/esm/internal/secret_internals.js +6 -3
  56. package/dist/esm/internal/secret_internals.js.map +1 -1
  57. package/dist/types/internal/CustomTemplates/expandCustomTemplate.d.ts +1 -1
  58. package/dist/types/internal/FormRenderer/constants.d.ts +7 -0
  59. package/dist/types/internal/FormRenderer/expandFormRenderer.d.ts +3 -0
  60. package/dist/types/internal/FormRenderer/getDefaultProperties.d.ts +2 -0
  61. package/dist/types/internal/FormRenderer/interfaces.d.ts +30 -0
  62. package/dist/types/internal/FormRenderer/utils.d.ts +5 -0
  63. package/dist/types/internal/Renderer.d.ts +2 -3
  64. package/dist/types/internal/interfaces.d.ts +6 -0
  65. package/package.json +2 -2
@@ -31,6 +31,7 @@ var _WidgetI18n = require("./WidgetI18n.js");
31
31
  var _images = require("./images.js");
32
32
  var _checkInstalledApps = require("../checkInstalledApps.js");
33
33
  var _isStrictMode = require("../../isStrictMode.js");
34
+ var _utils2 = require("../FormRenderer/utils.js");
34
35
  const symbolForRaw = Symbol.for("pre.evaluated.raw");
35
36
  const symbolForContext = Symbol.for("pre.evaluated.context");
36
37
  function isPreEvaluated(raw) {
@@ -75,12 +76,7 @@ runtimeContext, options = {}, isAsync) {
75
76
  // If the `raw` is not a string, it must be a pre-evaluated object.
76
77
  // Then fulfil the context, and restore the original `raw`.
77
78
 
78
- const {
79
- pendingPermissionsPreCheck: _1,
80
- tplStateStoreMap: _2,
81
- tplStateStoreScope: _3,
82
- ...passByRuntimeContext
83
- } = runtimeContext;
79
+ const passByRuntimeContext = (0, _lodash.omit)(runtimeContext, ["pendingPermissionsPreCheck", "tplStateStoreMap", "tplStateStoreScope", "formStateStoreMap", "formStateStoreScope"]);
84
80
  runtimeContext = {
85
81
  ...raw[symbolForContext],
86
82
  ...passByRuntimeContext
@@ -158,6 +154,11 @@ runtimeContext, options = {}, isAsync) {
158
154
  if (attemptToVisitGlobals.has("STATE") || !strict && attemptToVisitGlobals.has("TPL")) {
159
155
  tplStateStore = (0, _utils.getTplStateStore)(runtimeContext, "STATE", `: "${raw}"`);
160
156
  }
157
+ let usedFormStates;
158
+ let formStateStore;
159
+ if (attemptToVisitGlobals.has("FORM_STATE")) {
160
+ formStateStore = (0, _utils2.getFormStateStore)(runtimeContext, "FORM_STATE", `: "${raw}"`);
161
+ }
161
162
  const devHook = (0, _devtools.getDevHook)();
162
163
  if (isAsync || devHook) {
163
164
  if (attemptToVisitGlobals.has("CTX")) {
@@ -175,6 +176,10 @@ runtimeContext, options = {}, isAsync) {
175
176
  }
176
177
  isAsync && blockingList.push(tplStateStore.waitFor(usedStates));
177
178
  }
179
+ if (formStateStore) {
180
+ usedFormStates = (0, _storyboard.strictCollectMemberUsage)(raw, "FORM_STATE");
181
+ isAsync && blockingList.push(formStateStore.waitFor(usedFormStates));
182
+ }
178
183
  if (attemptToVisitGlobals.has("PROCESSORS")) {
179
184
  usedProcessors = (0, _storyboard.strictCollectMemberUsage)(raw, "PROCESSORS", 2);
180
185
  isAsync && blockingList.push((0, _loader.loadProcessorsImperatively)(usedProcessors, (0, _Runtime.getBrickPackages)()));
@@ -247,6 +252,16 @@ runtimeContext, options = {}, isAsync) {
247
252
  case "FLAGS":
248
253
  globalVariables[variableName] = (0, _proxyFactories.getReadOnlyProxy)(flags);
249
254
  break;
255
+ case "FORM_STATE":
256
+ globalVariables[variableName] = (0, _proxyFactories.getDynamicReadOnlyProxy)({
257
+ get(target, key) {
258
+ return formStateStore.getValue(key);
259
+ },
260
+ ownKeys() {
261
+ return Array.from(usedFormStates);
262
+ }
263
+ });
264
+ break;
250
265
  case "HASH":
251
266
  globalVariables[variableName] = location.hash;
252
267
  break;
@@ -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":";;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAMA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AACA,IAAAO,oBAAA,GAAAP,OAAA;AAIA,IAAAQ,kBAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAT,OAAA;AAIA,IAAAU,SAAA,GAAAV,OAAA;AACA,IAAAW,WAAA,GAAAX,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AACA,IAAAa,QAAA,GAAAb,OAAA;AAEA,IAAAc,MAAA,GAAAd,OAAA;AACA,IAAAe,gBAAA,GAAAf,OAAA;AACA,IAAAgB,uBAAA,GAAAhB,OAAA;AAKA,IAAAiB,cAAA,GAAAjB,OAAA;AACA,IAAAkB,WAAA,GAAAlB,OAAA;AACA,IAAAmB,OAAA,GAAAnB,OAAA;AACA,IAAAoB,mBAAA,GAAApB,OAAA;AACA,IAAAqB,aAAA,GAAArB,OAAA;AACA,IAAAsB,OAAA,GAAAtB,OAAA;AAEA,MAAMuB,YAAY,GAAGC,MAAM,CAACC,GAAG,CAAC,mBAAmB,CAAC;AACpD,MAAMC,gBAAgB,GAAGF,MAAM,CAACC,GAAG,CAAC,uBAAuB,CAAC;AAarD,SAASE,cAAcA,CAACC,GAAY,EAAuB;EAChE,OAAO,CAAC,EAAEA,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAoBL,YAAY,CAAC;AAChD;AAEO,SAASM,kBAAkBA,CAACC,GAAiB,EAAU;EAC5D,OAAOA,GAAG,CAACP,YAAY,CAAC;AAC1B;AAEO,SAASQ,4BAA4BA,CAC1CH,GAA0B,EACjB;EACT,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAO,IAAAI,qCAA+B,EAACJ,GAAG,CAAC;EAC7C;EACA,OAAO,IAAAI,qCAA+B,EAACJ,GAAG,CAACL,YAAY,CAAC,CAAC;AAC3D;AAEA,MAAMU,uBAAuB,GAAG,IAAIC,OAAO,CAAmB,CAC5DC,WAAW,EACXC,SAAS,EACTC,cAAc,CACf,CAAC;AAEK,SAASC,uBAAuBA,CAACC,KAAU,EAAoB;EACpE,OAAON,uBAAuB,CAACO,GAAG,CAACD,KAAK,CAACE,WAAW,CAAC,GACjDF,KAAK,CAACE,WAAW,GACjBL,SAAS;AACf;AAEO,eAAeM,aAAaA,CACjCd,GAA0B;AAAE;AAC5Be,cAA8B,EAC9BC,OAAyB,EACP;EAClB,MAAM;IAAEC,YAAY;IAAEC;EAAI,CAAC,GAAGC,gBAAgB,CAC5CnB,GAAG,EACHe,cAAc,EACdC,OAAO,EACP,IAAI,CACL;EACD,MAAMI,OAAO,CAACC,GAAG,CAACJ,YAAY,CAAC;EAC/B,OAAOC,GAAG,EAAE;AACd;AAEO,SAASI,QAAQA,CACtBtB,GAA0B;AAAE;AAC5Be,cAA8B,EAC9BC,OAAyB,EACP;EAClB,MAAM;IAAEE;EAAI,CAAC,GAAGC,gBAAgB,CAACnB,GAAG,EAAEe,cAAc,EAAEC,OAAO,EAAE,KAAK,CAAC;EACrE,OAAOE,GAAG,EAAE;AACd;AAEA,SAASC,gBAAgBA,CACvBnB,GAA0B;AAAE;AAC5Be,cAA8B,EAC9BC,OAAwB,GAAG,CAAC,CAAC,EAC7BO,OAAiB,EAIjB;EACA,MAAMN,YAA8C,GAAG,EAAE;EACzD,IAAI,OAAOjB,GAAG,KAAK,QAAQ,EAAE;IAC3B;IACA;;IAEA,MAAMwB,oBAAoB,GAAG,IAAAC,YAAI,EAACV,cAAc,EAAE,CAChD,4BAA4B,EAC5B,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;IAEFA,cAAc,GAAG;MACf,GAAGf,GAAG,CAACF,gBAAgB,CAAC;MACxB,GAAG0B;IACL,CAAC;IACDxB,GAAG,GAAGA,GAAG,CAACL,YAAY,CAAC;EACzB;;EAEA;EACA,MAAM+B,SAA0B,GAAG;IACjCC,QAAQ,EAAE,IAAIC,GAAG;EACnB,CAAC;EACD,MAAMC,WAA4B,GAAG;IACnCF,QAAQ,EAAE,IAAIC,GAAG;EACnB,CAAC;;EAED;EACA,IAAIE,SAA4B;EAChC,IAAI;IACFA,SAAS,GAAG,IAAAC,iBAAW,EAAC/B,GAAG,EAAE;MAC3BgC,UAAU,EAAE,IAAI;MAChBC,KAAK,EAAE;QACLC,iBAAiBA,CAACC,IAAI,EAAEC,MAAM,EAAE;UAC9B,IAAAC,8CAAsB,EAACX,SAAS,EAAES,IAAI,EAAEC,MAAM,CAAE;UAChD,IAAAE,oDAA4B,EAACT,WAAW,EAAEM,IAAI,EAAEC,MAAM,CAAE;QAC1D;MACF;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOzB,KAAU,EAAE;IACnB,MAAM4B,OAAO,GAAI,GAAE5B,KAAK,CAAC4B,OAAQ,SAAQvC,GAAI,GAAE;IAC/C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAMwC,gBAAgB,GAAG9B,uBAAuB,CAACC,KAAK,CAAC;IACvD,MAAM,IAAI6B,gBAAgB,CAACD,OAAO,CAAC;IACnC;EACF;;EAEA,IAAIb,SAAS,CAACe,iBAAiB,EAAE;IAC/B,MAAM,IAAIC,KAAK,CACZ,kFAAiF1C,GAAI,GAAE,CACzF;EACH;EAEA,IAAI6B,WAAW,CAACY,iBAAiB,EAAE;IACjC,MAAM,IAAIC,KAAK,CACZ,yFAAwF1C,GAAI,GAAE,CAChG;EACH;EAEA,MAAM2C,eAAwC,GAAG,CAAC,CAAC;EACnD,MAAM;IAAEC;EAAsB,CAAC,GAAGd,SAAS;;EAE3C;EACA;EACA;EACA,IACEd,OAAO,CAAC6B,IAAI,IACXD,qBAAqB,CAAChC,GAAG,CAAC,OAAO,CAAC,IACjC,CAAC,IAAAkC,uBAAc,EAAC/B,cAAc,EAAE,OAAO,CAAE,IAC1C6B,qBAAqB,CAAChC,GAAG,CAAC,MAAM,CAAC,IAChC,CAAC,IAAAkC,uBAAc,EAAC/B,cAAc,EAAE,MAAM,CAAE,EAC1C;IACA,OAAO;MACLE,YAAY;MACZC,GAAGA,CAAA,EAAG;QACJ,OAAO6B,MAAM,CAACC,IAAI,CAACjC,cAAc,CAAC,CAACkC,MAAM,GAAG,CAAC,GACxC;UACC,CAACtD,YAAY,GAAGK,GAAG;UACnB,CAACF,gBAAgB,GAAGiB;QACtB,CAAC,GACDf,GAAG;MACT;IACF,CAAC;EACH;EAEA,IAAIkD,OAAoB;EACxB,IAAIC,cAA2B;EAC/B,IAAIC,UAAuB;EAC3B,IAAIC,aAA6C;EACjD,MAAMC,MAAM,GAAG,IAAAC,0BAAY,EAACxC,cAAc,CAAC;;EAE3C;EACA,IACE6B,qBAAqB,CAAChC,GAAG,CAAC,OAAO,CAAC,IACjC,CAAC0C,MAAM,IAAIV,qBAAqB,CAAChC,GAAG,CAAC,KAAK,CAAE,EAC7C;IACAyC,aAAa,GAAG,IAAAG,uBAAgB,EAACzC,cAAc,EAAE,OAAO,EAAG,MAAKf,GAAI,GAAE,CAAC;EACzE;EAEA,IAAIyD,cAA2B;EAC/B,IAAIC,cAAmD;EACvD,IAAId,qBAAqB,CAAChC,GAAG,CAAC,YAAY,CAAC,EAAE;IAC3C8C,cAAc,GAAG,IAAAC,yBAAiB,EAChC5C,cAAc,EACd,YAAY,EACX,MAAKf,GAAI,GAAE,CACb;EACH;EAEA,MAAM4D,OAAO,GAAG,IAAAC,oBAAU,GAAE;EAC5B,IAAItC,OAAO,IAAIqC,OAAO,EAAE;IACtB,IAAIhB,qBAAqB,CAAChC,GAAG,CAAC,KAAK,CAAC,EAAE;MACpCsC,OAAO,GAAG,IAAAY,oCAAwB,EAAC9D,GAAG,EAAE,KAAK,CAAC;MAC9CuB,OAAO,IAAIN,YAAY,CAAC8C,IAAI,CAAChD,cAAc,CAACiD,QAAQ,CAACC,OAAO,CAACf,OAAO,CAAC,CAAC;IACxE;IAEA,IAAIG,aAAa,EAAE;MACjBD,UAAU,GAAG,IAAAU,oCAAwB,EAAC9D,GAAG,EAAE,OAAO,CAAC;MACnD;MACA,IAAI,CAACsD,MAAM,EAAE;QACX,MAAMY,QAAQ,GAAG,IAAAJ,oCAAwB,EAAC9D,GAAG,EAAE,KAAK,CAAC;QACrD,KAAK,MAAMmE,GAAG,IAAID,QAAQ,EAAE;UAC1Bd,UAAU,CAACgB,GAAG,CAACD,GAAG,CAAC;QACrB;MACF;MACA5C,OAAO,IAAIN,YAAY,CAAC8C,IAAI,CAACV,aAAa,CAACY,OAAO,CAACb,UAAU,CAAC,CAAC;IACjE;IAEA,IAAIM,cAAc,EAAE;MAClBD,cAAc,GAAG,IAAAK,oCAAwB,EAAC9D,GAAG,EAAE,YAAY,CAAC;MAC5DuB,OAAO,IAAIN,YAAY,CAAC8C,IAAI,CAACL,cAAc,CAACO,OAAO,CAACR,cAAc,CAAC,CAAC;IACtE;IAEA,IAAIb,qBAAqB,CAAChC,GAAG,CAAC,YAAY,CAAC,EAAE;MAC3CuC,cAAc,GAAG,IAAAW,oCAAwB,EAAC9D,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;MAC/DuB,OAAO,IACLN,YAAY,CAAC8C,IAAI,CACf,IAAAM,kCAA0B,EAAClB,cAAc,EAAE,IAAAmB,yBAAgB,GAAE,CAAC,CAC/D;IACL;EACF;EAEA,IAAI/C,OAAO,EAAE;IACX,IAAIgD,yBAAyB,GAAG3B,qBAAqB,CAAChC,GAAG,CAAC,aAAa,CAAC;IACxE;IACA,IAAI,CAAC2D,yBAAyB,IAAI3B,qBAAqB,CAAChC,GAAG,CAAC,IAAI,CAAC,EAAE;MACjE,MAAM4D,aAAa,GAAG,CAAC,GAAG,IAAAV,oCAAwB,EAAC9D,GAAG,EAAE,IAAI,CAAC,CAAC;MAC9DuE,yBAAyB,GAAG,IAAAE,0CAAqB,EAACD,aAAa,CAAC;IAClE;IAEA,IAAID,yBAAyB,EAAE;MAC7BtD,YAAY,CAAC8C,IAAI,CAAC,GAAGhD,cAAc,CAAC2D,0BAA0B,CAAC;IACjE;IAEA,IAAIhD,SAAS,CAACC,QAAQ,CAACgD,IAAI,GAAG,CAAC,EAAE;MAC/B;MACA,MAAMC,WAAW,GAAG,CAAC,GAAGlD,SAAS,CAACC,QAAQ,CAAC;MAC3CV,YAAY,CAAC8C,IAAI,CACf3C,OAAO,CAACC,GAAG,CACTuD,WAAW,CAACC,GAAG,CAAEC,MAAM,IAAK,IAAAC,4BAAa,EAACD,MAAM,EAAE/D,cAAc,CAAC,CAAC,CACnE,CACF;IACH;IAEA,IAAIc,WAAW,CAACF,QAAQ,CAACgD,IAAI,GAAG,CAAC,EAAE;MACjC;MACA1D,YAAY,CAAC8C,IAAI,CAAC,IAAAiB,uCAAmB,EAAC,CAAC,GAAGnD,WAAW,CAACF,QAAQ,CAAC,CAAC,CAAC;IACnE;EACF;EAEA,OAAO;IACLV,YAAY;IACZC,GAAGA,CAAA,EAAG;MAAA,IAAA+D,qBAAA,EAAAC,aAAA;MACJ,MAAM;QACJC,GAAG,EAAEC,UAAU;QACfC,QAAQ;QACRC,KAAK;QACLC,KAAK;QACLC,KAAK;QACLC,GAAG;QACHzB,QAAQ;QACR0B,IAAI;QACJC;MACF,CAAC,GAAG5E,cAAc;MAClB,MAAMoE,GAAG,IAAAF,qBAAA,GAAGlE,cAAc,CAAC6E,WAAW,cAAAX,qBAAA,cAAAA,qBAAA,GAAIG,UAAU;MAEpD,KAAK,MAAMS,YAAY,IAAIjD,qBAAqB,EAAE;QAChD,QAAQiD,YAAY;UAClB;UACA,KAAK,QAAQ;YACXlD,eAAe,CAACkD,YAAY,CAAC,GAAGR,QAAQ,CAACS,IAAI,GACzCT,QAAQ,CAACS,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC,GAC1B,IAAI;YACR;UACF,KAAK,KAAK;YACRpD,eAAe,CAACkD,YAAY,CAAC,GAAG;cAC9B,GAAG,IAAAG,iBAAS,EAACb,GAAG,CAAC;cACjBc,OAAO,EAAEC;YACX,CAAC;YACD;UACF,KAAK,KAAK;YACRvD,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAM,uCAAuB,EAAC;cACtDC,GAAGA,CAACC,MAAM,EAAEC,GAAG,EAAE;gBACf,OAAOtC,QAAQ,CAACuC,QAAQ,CAACD,GAAG,CAAW;cACzC,CAAC;cACDE,OAAOA,CAAA,EAAG;gBACR,OAAOC,KAAK,CAACC,IAAI,CAACxD,OAAO,CAAC;cAC5B;YACF,CAAC,CAAC;YACF;UACF,KAAK,MAAM;YACTP,eAAe,CAACkD,YAAY,CAAC,GAAGH,IAAI;YACpC;UACF,KAAK,OAAO;YACV/C,eAAe,CAACkD,YAAY,CAAC,GAAGF,KAAK;YACrC;UACF,KAAK,OAAO;YACVhD,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAc,gCAAgB,EAACnB,KAAK,CAAC;YACvD;UACF,KAAK,YAAY;YACf7C,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAM,uCAAuB,EAAC;cACtDC,GAAGA,CAACC,MAAM,EAAEC,GAAG,EAAE;gBACf,OAAO5C,cAAc,CAAE6C,QAAQ,CAACD,GAAG,CAAW;cAChD,CAAC;cACDE,OAAOA,CAAA,EAAG;gBACR,OAAOC,KAAK,CAACC,IAAI,CAACjD,cAAc,CAAC;cACnC;YACF,CAAC,CAAC;YACF;UACF,KAAK,MAAM;YACTd,eAAe,CAACkD,YAAY,CAAC,GAAGR,QAAQ,CAACS,IAAI;YAC7C;UACF,KAAK,gBAAgB;YACnBnD,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAc,gCAAgB,EAAC;cAC/C/F,GAAG,EAAEgG;YACP,CAAC,CAAC;YACF;UACF,KAAK,MAAM;YACT,IAAI,CAAC,IAAA9D,uBAAc,EAAC/B,cAAc,EAAE,aAAa,CAAC,EAAE;cAClD;cACA8F,OAAO,CAAClG,KAAK,CACV,wEAAuEX,GAAI,GAAE,CAC/E;YACH,CAAC,MAAM;cACL2C,eAAe,CAACkD,YAAY,CAAC,GAAG9E,cAAc,CAAC+F,WAAW;YAC5D;YACA;UACF,KAAK,eAAe;YAClBnE,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAc,gCAAgB,EAAC;cAC/CI,OAAO,EAAE,IAAAC,8BAAc,EAAC,OAAO;YACjC,CAAC,CAAC;YACF;UACF,KAAK,OAAO;YACVrE,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAc,gCAAgB,EAAC,IAAAM,oBAAQ,GAAE,CAAC;YAC5D;UACF,KAAK,MAAM;YACTtE,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAqB,mBAAU,GAAE,CAACC,eAAe,EAAE;YAC9D;UACF,KAAK,QAAQ;YACXxE,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAIuB,eAAe,CAAC9B,KAAK,CAAC;YAC1D;UACF,KAAK,MAAM;YACT3C,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAc,gCAAgB,GAAAzB,aAAA,GAC9CK,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE8B,MAAM,cAAAnC,aAAA,cAAAA,aAAA,GAAI,CAAC,CAAC,CACpB;YACD;UACF,KAAK,WAAW;YACdvC,eAAe,CAACkD,YAAY,CAAC,GAAGR,QAAQ,CAACiC,QAAQ;YACjD;UACF,KAAK,YAAY;YACf3E,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAM,uCAAuB,EAAC;cACtDC,GAAGA,CAACC,MAAM,EAAEC,GAAG,EAAE;gBACf,MAAMiB,GAAG,GAAGC,kCAAgB,CAACpB,GAAG,CAACE,GAAG,CAAW;gBAC/C,IAAI,CAACiB,GAAG,EAAE;kBACR,MAAM,IAAI7E,KAAK,CACZ,eACC4D,GACD,qEAAoE,CACtE;gBACH;gBACA,OAAO,IAAAH,uCAAuB,EAAC;kBAC7BC,GAAGA,CAACqB,CAAC,EAAEC,CAAC,EAAE;oBACR,OAAOH,GAAG,CAACnB,GAAG,CAACsB,CAAC,CAAW;kBAC7B,CAAC;kBACDlB,OAAOA,CAAA,EAAG;oBACR,OAAOC,KAAK,CAACC,IAAI,CAACa,GAAG,CAACvE,IAAI,EAAE,CAAC;kBAC/B;gBACF,CAAC,CAAC;cACJ,CAAC;cACDwD,OAAOA,CAAA,EAAG;gBACR,OAAOC,KAAK,CAACC,IAAI,CAACvD,cAAc,CAAC;cACnC;YACF,CAAC,CAAC;YACF;UACF,KAAK,OAAO;YACVR,eAAe,CAACkD,YAAY,CAAC,GAAG9C,MAAM,CAAC4E,WAAW,CAChDlB,KAAK,CAACC,IAAI,CAACpB,KAAK,CAACtC,IAAI,EAAE,CAAC,CAAC6B,GAAG,CAAEyB,GAAG,IAAK,CAACA,GAAG,EAAEhB,KAAK,CAACc,GAAG,CAACE,GAAG,CAAC,CAAC,CAAC,CAC7D;YACD;UACF,KAAK,aAAa;YAChB3D,eAAe,CAACkD,YAAY,CAAC,GAAG9C,MAAM,CAAC4E,WAAW,CAChDlB,KAAK,CAACC,IAAI,CAACpB,KAAK,CAACtC,IAAI,EAAE,CAAC,CAAC6B,GAAG,CAAEyB,GAAG,IAAK,CAACA,GAAG,EAAEhB,KAAK,CAACsC,MAAM,CAACtB,GAAG,CAAC,CAAC,CAAC,CAChE;YACD;YACA;UACF,KAAK,iBAAiB;YACpB3D,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAc,gCAAgB,EAAC;cAC/CI,OAAO,EAAE,IAAAC,8BAAc,EAAC,SAAS;YACnC,CAAC,CAAC;YACF;UACF;UACA,KAAK,KAAK;YACR,IAAAa,iCAAmB,EACjBvE,MAAM,EACN,2BAA2B,EAC1B,2BAA0BtD,GAAI,GAAE,CAClC;YACD,IAAIsD,MAAM,EAAE;cACV;YACF;UACF;UACA,KAAK,OAAO;YACVX,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAM,uCAAuB,EAAC;cACtDC,GAAGA,CAACC,MAAM,EAAEC,GAAG,EAAE;gBACf,OAAOjD,aAAa,CAAEkD,QAAQ,CAACD,GAAG,CAAW;cAC/C,CAAC;cACDE,OAAOA,CAAA,EAAG;gBACR,OAAOC,KAAK,CAACC,IAAI,CAACtD,UAAU,CAAC;cAC/B;YACF,CAAC,CAAC;YACF;UACF,KAAK,KAAK;YACRT,eAAe,CAACkD,YAAY,CAAC,GAAG,IAAAc,gCAAgB,EAAClB,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,CAAC,CAAC,CAAC;YAC3D;UACF,KAAK,eAAe;YAClB9C,eAAe,CAACkD,YAAY,CAAC,GAAGiC,gCAAe;YAC/C;UACF,KAAK,gBAAgB;YACnBnF,eAAe,CAACkD,YAAY,CAAC,GAAGkC,2BAAmB;YACnD;UACF,KAAK,iBAAiB;YACpBpF,eAAe,CAACkD,YAAY,CAAC,GAAGmC,6BAAiB;YACjD;QAAM;MAEZ;MAEAjF,MAAM,CAACkF,MAAM,CACXtF,eAAe,EACf,IAAAuF,oCAAiB,EAACpG,SAAS,CAACc,qBAAqB,EAAE;QACjDuF,mBAAmB,EAAnBA,wCAAmB;QACnBhD,GAAG,EAAEpE,cAAc,CAACoE,GAAG;QACvBiD,mBAAmB,EAAErH,cAAc,CAACqH;MACtC,CAAC,CAAC,CACH;MAED,IAAI;QACF,MAAMC,MAAM,GAAG,IAAAC,UAAI,EAACxG,SAAS,CAACyG,UAAU,EAAEzG,SAAS,CAAC0G,MAAM,EAAE;UAC1D7F,eAAe,EAAE,IAAA8F,cAAM,EACrB3G,SAAS,CAACc,qBAAqB,EAC/BD,eAAe;QAEnB,CAAC,CAAC;QACF;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,OAAO0F,MAAM;MACf,CAAC,CAAC,OAAO1H,KAAU,EAAE;QACnB,MAAM4B,OAAO,GAAI,GAAE5B,KAAK,CAAC4B,OAAQ,SAAQvC,GAAI,GAAE;QAC/C;QACA;QACA;QACA;QACA;QACA;QACA;QACA,MAAMwC,gBAAgB,GAAG9B,uBAAuB,CAACC,KAAK,CAAC;QACvD,MAAM,IAAI6B,gBAAgB,CAACD,OAAO,CAAC;QACnC;MACF;IACF;EACF,CAAC;AACH"}
@@ -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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"}
@@ -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":""}
@@ -29,15 +29,18 @@ var _registerAppI18n = require("./registerAppI18n.js");
29
29
  var _Notification = require("../Notification.js");
30
30
  var _Dialog = require("../Dialog.js");
31
31
  async function renderUseBrick(useBrick, data) {
32
- var _runtimeContext$tplSt, _output$node;
32
+ var _runtimeContext$tplSt, _runtimeContext$formS, _output$node;
33
33
  const tplStateStoreScope = [];
34
+ const formStateStoreScope = [];
34
35
  const runtimeContext = {
35
36
  ...(0, _Runtime._internalApiGetRuntimeContext)(),
36
37
  data,
37
38
  pendingPermissionsPreCheck: [],
38
- tplStateStoreScope
39
+ tplStateStoreScope,
40
+ formStateStoreScope
39
41
  };
40
42
  (_runtimeContext$tplSt = runtimeContext.tplStateStoreMap) !== null && _runtimeContext$tplSt !== void 0 ? _runtimeContext$tplSt : runtimeContext.tplStateStoreMap = new Map();
43
+ (_runtimeContext$formS = runtimeContext.formStateStoreMap) !== null && _runtimeContext$formS !== void 0 ? _runtimeContext$formS : runtimeContext.formStateStoreMap = new Map();
41
44
  const rendererContext = new _RendererContext.RendererContext("fragment");
42
45
  const renderRoot = {
43
46
  tag: _enums.RenderTag.ROOT,
@@ -59,7 +62,7 @@ async function renderUseBrick(useBrick, data) {
59
62
  (0, _loader.flushStableLoadBricks)();
60
63
  await Promise.all([...output.blockingList,
61
64
  // Wait for local tpl state stores belong to current `useBrick` only.
62
- ...tplStateStoreScope.map(store => store.waitForAll()), ...runtimeContext.pendingPermissionsPreCheck]);
65
+ ...[...tplStateStoreScope, ...formStateStoreScope].map(store => store.waitForAll()), ...runtimeContext.pendingPermissionsPreCheck]);
63
66
  if ((_output$node = output.node) !== null && _output$node !== void 0 && _output$node.portal) {
64
67
  throw new Error("The root brick of useBrick cannot be a portal brick");
65
68
  }
@@ -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","_Notification","_Dialog","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","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 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 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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"}
@@ -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) {
@@ -1 +1 @@
1
- {"version":3,"file":"expandCustomTemplate.js","names":["uniqueId","customTemplates","DataStore","setupTemplateProxy","setupUseBrickInTemplate","childrenToSlots","collectWidgetContract","expandCustomTemplate","tplTagName","brickConf","hostBrick","asyncHostProperties","tplStateStoreId","runtimeContext","_objectSpread","forEachItem","tplStateStore","tplStateStoreMap","set","tplStateStoreScope","push","bricks","proxy","state","contracts","get","define","slots","originalExternalSlots","children","externalChildren","restBrickConf","_objectWithoutProperties","_excluded","newBrickConf","brick","tplHostMetadata","internalBricksByRef","Map","reversedProxies","properties","from","to","Object","entries","proxies","ref","hostContext","externalSlots","type","map","item","expandBrickInTemplate","brickConfInTemplate","if","slotsInTemplate","childrenInTemplate","restBrickConfInTemplate","_excluded2","transpiledSlots","fromEntries","_ref","_slotConf$bricks","slotName","slotConf"],"sources":["../../../../src/internal/CustomTemplates/expandCustomTemplate.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n SlotsConfInTemplate,\n SlotsConfOfBricks,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { uniqueId } from \"lodash\";\nimport { customTemplates } from \"../../CustomTemplates.js\";\nimport { DataStore } from \"../data/DataStore.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./constants.js\";\nimport { setupTemplateProxy } from \"./setupTemplateProxy.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n TemplateHostBrick,\n TemplateHostContext,\n} from \"../interfaces.js\";\nimport { setupUseBrickInTemplate } from \"./setupUseBrickInTemplate.js\";\nimport { childrenToSlots } from \"../Renderer.js\";\nimport { collectWidgetContract } from \"../data/CollectContracts.js\";\n\nexport function expandCustomTemplate<T extends BrickConf | UseSingleBrickConf>(\n tplTagName: string,\n brickConf: T,\n hostBrick: RuntimeBrick,\n asyncHostProperties: AsyncProperties | undefined\n): T {\n const tplStateStoreId = uniqueId(\"tpl-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n tplStateStoreId,\n };\n\n // There is a boundary for `forEachItem` between template internals and externals.\n delete runtimeContext.forEachItem;\n\n const tplStateStore = new DataStore(\"STATE\", hostBrick);\n runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);\n if (runtimeContext.tplStateStoreScope) {\n runtimeContext.tplStateStoreScope.push(tplStateStore);\n }\n\n const { bricks, proxy, state, contracts } = customTemplates.get(tplTagName)!;\n collectWidgetContract(contracts);\n tplStateStore.define(state, runtimeContext, asyncHostProperties);\n\n const {\n slots: originalExternalSlots,\n children: externalChildren,\n ...restBrickConf\n } = brickConf;\n\n const newBrickConf = {\n ...restBrickConf,\n brick: tplTagName,\n } as T;\n\n hostBrick.tplHostMetadata = {\n internalBricksByRef: new Map(),\n tplStateStoreId,\n proxy,\n };\n\n // Reversed proxies are used for expand storyboard before rendering page.\n const reversedProxies: TemplateHostContext[\"reversedProxies\"] = {\n properties: new Map(),\n slots: new Map(),\n // mergeBases: new Map(),\n };\n\n if (proxy?.properties) {\n for (const [from, to] of Object.entries(proxy.properties)) {\n let proxies = reversedProxies.properties.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.properties.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n if (proxy?.slots) {\n for (const [from, to] of Object.entries(proxy.slots)) {\n let proxies = reversedProxies.slots.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.slots.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n const hostContext: TemplateHostContext = {\n reversedProxies,\n asyncHostProperties,\n externalSlots: childrenToSlots(externalChildren, originalExternalSlots) as\n | SlotsConfOfBricks\n | undefined,\n tplStateStoreId,\n hostBrick: hostBrick as TemplateHostBrick,\n };\n\n newBrickConf.slots = {\n \"\": {\n type: \"bricks\",\n bricks: bricks.map((item) => expandBrickInTemplate(item, hostContext)),\n },\n };\n\n return newBrickConf;\n}\n\nfunction expandBrickInTemplate(\n brickConfInTemplate: BrickConfInTemplate,\n hostContext: TemplateHostContext\n): RuntimeBrickConfWithTplSymbols {\n // Ignore `if: null` to make `looseCheckIf` working.\n if (brickConfInTemplate.if === null) {\n delete brickConfInTemplate.if;\n }\n const {\n properties,\n slots: slotsInTemplate,\n children: childrenInTemplate,\n ...restBrickConfInTemplate\n } = brickConfInTemplate;\n\n const transpiledSlots = childrenToSlots(\n childrenInTemplate,\n slotsInTemplate\n ) as SlotsConfInTemplate | undefined;\n\n const slots: SlotsConfOfBricks = Object.fromEntries(\n Object.entries(transpiledSlots ?? {}).map(([slotName, slotConf]) => [\n slotName,\n {\n type: \"bricks\",\n bricks: (slotConf.bricks ?? []).map((item) =>\n expandBrickInTemplate(item, hostContext)\n ),\n },\n ])\n );\n\n return {\n ...restBrickConfInTemplate,\n properties: setupUseBrickInTemplate(properties, hostContext),\n slots,\n ...setupTemplateProxy(hostContext, restBrickConfInTemplate.ref, slots),\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"expandCustomTemplate.js","names":["uniqueId","customTemplates","DataStore","setupTemplateProxy","setupUseBrickInTemplate","childrenToSlots","collectWidgetContract","expandCustomTemplate","tplTagName","brickConf","hostBrick","asyncHostProperties","tplStateStoreId","runtimeContext","_objectSpread","forEachItem","formStateStoreId","tplStateStore","tplStateStoreMap","set","tplStateStoreScope","push","bricks","proxy","state","contracts","get","define","slots","originalExternalSlots","children","externalChildren","restBrickConf","_objectWithoutProperties","_excluded","newBrickConf","brick","tplHostMetadata","internalBricksByRef","Map","reversedProxies","properties","from","to","Object","entries","proxies","ref","hostContext","externalSlots","type","map","item","expandBrickInTemplate","brickConfInTemplate","if","slotsInTemplate","childrenInTemplate","restBrickConfInTemplate","_excluded2","transpiledSlots","fromEntries","_ref","_slotConf$bricks","slotName","slotConf"],"sources":["../../../../src/internal/CustomTemplates/expandCustomTemplate.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n SlotsConfInTemplate,\n SlotsConfOfBricks,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { uniqueId } from \"lodash\";\nimport { customTemplates } from \"../../CustomTemplates.js\";\nimport { DataStore } from \"../data/DataStore.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./constants.js\";\nimport { setupTemplateProxy } from \"./setupTemplateProxy.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n TemplateHostBrick,\n TemplateHostContext,\n} from \"../interfaces.js\";\nimport { setupUseBrickInTemplate } from \"./setupUseBrickInTemplate.js\";\nimport { childrenToSlots } from \"../Renderer.js\";\nimport { collectWidgetContract } from \"../data/CollectContracts.js\";\n\nexport function expandCustomTemplate<T extends BrickConf | UseSingleBrickConf>(\n tplTagName: string,\n brickConf: T,\n hostBrick: RuntimeBrick,\n asyncHostProperties: AsyncProperties\n): T {\n const tplStateStoreId = uniqueId(\"tpl-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n tplStateStoreId,\n };\n\n // There is a boundary for `forEachItem` and `FORM_STATE` between template internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.formStateStoreId;\n\n const tplStateStore = new DataStore(\"STATE\", hostBrick);\n runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);\n if (runtimeContext.tplStateStoreScope) {\n runtimeContext.tplStateStoreScope.push(tplStateStore);\n }\n\n const { bricks, proxy, state, contracts } = customTemplates.get(tplTagName)!;\n collectWidgetContract(contracts);\n tplStateStore.define(state, runtimeContext, asyncHostProperties);\n\n const {\n slots: originalExternalSlots,\n children: externalChildren,\n ...restBrickConf\n } = brickConf;\n\n const newBrickConf = {\n ...restBrickConf,\n brick: tplTagName,\n } as T;\n\n hostBrick.tplHostMetadata = {\n internalBricksByRef: new Map(),\n tplStateStoreId,\n proxy,\n };\n\n // Reversed proxies are used for expand storyboard before rendering page.\n const reversedProxies: TemplateHostContext[\"reversedProxies\"] = {\n properties: new Map(),\n slots: new Map(),\n // mergeBases: new Map(),\n };\n\n if (proxy?.properties) {\n for (const [from, to] of Object.entries(proxy.properties)) {\n let proxies = reversedProxies.properties.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.properties.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n if (proxy?.slots) {\n for (const [from, to] of Object.entries(proxy.slots)) {\n let proxies = reversedProxies.slots.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.slots.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n const hostContext: TemplateHostContext = {\n reversedProxies,\n asyncHostProperties,\n externalSlots: childrenToSlots(externalChildren, originalExternalSlots) as\n | SlotsConfOfBricks\n | undefined,\n tplStateStoreId,\n hostBrick: hostBrick as TemplateHostBrick,\n };\n\n newBrickConf.slots = {\n \"\": {\n type: \"bricks\",\n bricks: bricks.map((item) => expandBrickInTemplate(item, hostContext)),\n },\n };\n\n return newBrickConf;\n}\n\nfunction expandBrickInTemplate(\n brickConfInTemplate: BrickConfInTemplate,\n hostContext: TemplateHostContext\n): RuntimeBrickConfWithTplSymbols {\n // Ignore `if: null` to make `looseCheckIf` working.\n if (brickConfInTemplate.if === null) {\n delete brickConfInTemplate.if;\n }\n const {\n properties,\n slots: slotsInTemplate,\n children: childrenInTemplate,\n ...restBrickConfInTemplate\n } = brickConfInTemplate;\n\n const transpiledSlots = childrenToSlots(\n childrenInTemplate,\n slotsInTemplate\n ) as SlotsConfInTemplate | undefined;\n\n const slots: SlotsConfOfBricks = Object.fromEntries(\n Object.entries(transpiledSlots ?? {}).map(([slotName, slotConf]) => [\n slotName,\n {\n type: \"bricks\",\n bricks: (slotConf.bricks ?? []).map((item) =>\n expandBrickInTemplate(item, hostContext)\n ),\n },\n ])\n );\n\n return {\n ...restBrickConfInTemplate,\n properties: setupUseBrickInTemplate(properties, hostContext),\n slots,\n ...setupTemplateProxy(hostContext, restBrickConfInTemplate.ref, slots),\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["customTemplates","getTplStateStore","_ref","using","extraInfo","tplStateStoreId","tplStateStoreMap","Error","concat","store","get","getTplHostElement","runtimeContext","hostElement","hostBrick","element","getTagNameOfCustomTemplate","brick","appId","includes","startsWith","tagName"],"sources":["../../../../src/internal/CustomTemplates/utils.ts"],"sourcesContent":["import type { DataStore } from \"../data/DataStore.js\";\nimport type { RuntimeBrickElement, RuntimeContext } from \"../interfaces.js\";\nimport { customTemplates } from \"../../CustomTemplates.js\";\n\ntype MinimalTplStateStoreContext = Pick<\n RuntimeContext,\n \"tplStateStoreId\" | \"tplStateStoreMap\"\n>;\n\nexport function getTplStateStore(\n { tplStateStoreId, tplStateStoreMap }: MinimalTplStateStoreContext,\n using: string,\n extraInfo?: string\n): DataStore<\"STATE\"> {\n if (!tplStateStoreId) {\n throw new Error(\n `Using \"${using}\" outside of a custom template${extraInfo ?? \"\"}`\n );\n }\n const store = tplStateStoreMap.get(tplStateStoreId);\n if (!store) {\n throw new Error(\n `Template state store is not found when using \"${using}\"${\n extraInfo ?? \"\"\n }.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n return store!;\n}\n\nexport function getTplHostElement(\n runtimeContext: MinimalTplStateStoreContext,\n using: string,\n extraInfo?: string\n): RuntimeBrickElement {\n const store = getTplStateStore(runtimeContext, using, extraInfo);\n const hostElement = store.hostBrick!.element;\n if (!hostElement) {\n throw new Error(\n `Template host element is gone when using \"${using}\"${\n extraInfo ?? \"\"\n }.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n return hostElement!;\n}\n\nexport function getTagNameOfCustomTemplate(\n brick: string,\n appId?: string\n): false | string {\n // When a template is registered by an app, it's namespace maybe missed.\n if (!brick.includes(\".\") && brick.startsWith(\"tpl-\") && appId) {\n const tagName = `${appId}.${brick}`;\n if (customTemplates.get(tagName)) {\n return tagName;\n }\n }\n if (customTemplates.get(brick)) {\n return brick;\n }\n return false;\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ,0BAA0B;AAO1D,OAAO,SAASC,gBAAgBA,CAAAC,IAAA,EAE9BC,KAAa,EACbC,SAAkB,EACE;EAAA,IAHpB;IAAEC,eAAe;IAAEC;EAA8C,CAAC,GAAAJ,IAAA;EAIlE,IAAI,CAACG,eAAe,EAAE;IACpB,MAAM,IAAIE,KAAK,YAAAC,MAAA,CACHL,KAAK,qCAAAK,MAAA,CAAiCJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,EAChE;EACH;EACA,IAAMK,KAAK,GAAGH,gBAAgB,CAACI,GAAG,CAACL,eAAe,CAAC;EACnD,IAAI,CAACI,KAAK,EAAE;IACV,MAAM,IAAIF,KAAK,mDAAAC,MAAA,CACoCL,KAAK,QAAAK,MAAA,CACpDJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,uDAElB;EACH;EACA,OAAOK,KAAK;AACd;AAEA,OAAO,SAASE,iBAAiBA,CAC/BC,cAA2C,EAC3CT,KAAa,EACbC,SAAkB,EACG;EACrB,IAAMK,KAAK,GAAGR,gBAAgB,CAACW,cAAc,EAAET,KAAK,EAAEC,SAAS,CAAC;EAChE,IAAMS,WAAW,GAAGJ,KAAK,CAACK,SAAS,CAAEC,OAAO;EAC5C,IAAI,CAACF,WAAW,EAAE;IAChB,MAAM,IAAIN,KAAK,+CAAAC,MAAA,CACgCL,KAAK,QAAAK,MAAA,CAChDJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,uDAElB;EACH;EACA,OAAOS,WAAW;AACpB;AAEA,OAAO,SAASG,0BAA0BA,CACxCC,KAAa,EACbC,KAAc,EACE;EAChB;EACA,IAAI,CAACD,KAAK,CAACE,QAAQ,CAAC,GAAG,CAAC,IAAIF,KAAK,CAACG,UAAU,CAAC,MAAM,CAAC,IAAIF,KAAK,EAAE;IAC7D,IAAMG,OAAO,MAAAb,MAAA,CAAMU,KAAK,OAAAV,MAAA,CAAIS,KAAK,CAAE;IACnC,IAAIjB,eAAe,CAACU,GAAG,CAACW,OAAO,CAAC,EAAE;MAChC,OAAOA,OAAO;IAChB;EACF;EACA,IAAIrB,eAAe,CAACU,GAAG,CAACO,KAAK,CAAC,EAAE;IAC9B,OAAOA,KAAK;EACd;EACA,OAAO,KAAK;AACd"}
1
+ {"version":3,"file":"utils.js","names":["customTemplates","getTplStateStore","_ref","using","extraInfo","tplStateStoreId","tplStateStoreMap","Error","concat","store","get","getTplHostElement","runtimeContext","hostElement","hostBrick","element","getTagNameOfCustomTemplate","brick","appId","includes","startsWith","tagName"],"sources":["../../../../src/internal/CustomTemplates/utils.ts"],"sourcesContent":["import type { DataStore } from \"../data/DataStore.js\";\nimport type { RuntimeBrickElement, RuntimeContext } from \"../interfaces.js\";\nimport { customTemplates } from \"../../CustomTemplates.js\";\n\ntype MinimalTplStateStoreContext = Pick<\n RuntimeContext,\n \"tplStateStoreId\" | \"tplStateStoreMap\"\n>;\n\nexport function getTplStateStore(\n { tplStateStoreId, tplStateStoreMap }: MinimalTplStateStoreContext,\n using: string,\n extraInfo?: string\n): DataStore<\"STATE\"> {\n if (!tplStateStoreId) {\n throw new Error(\n `Using \"${using}\" outside of a custom template${extraInfo ?? \"\"}`\n );\n }\n const store = tplStateStoreMap.get(tplStateStoreId);\n if (!store) {\n throw new Error(\n `Template state store is not found when using \"${using}\"${\n extraInfo ?? \"\"\n }.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n return store;\n}\n\nexport function getTplHostElement(\n runtimeContext: MinimalTplStateStoreContext,\n using: string,\n extraInfo?: string\n): RuntimeBrickElement {\n const store = getTplStateStore(runtimeContext, using, extraInfo);\n const hostElement = store.hostBrick!.element;\n if (!hostElement) {\n throw new Error(\n `Template host element is gone when using \"${using}\"${\n extraInfo ?? \"\"\n }.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n return hostElement;\n}\n\nexport function getTagNameOfCustomTemplate(\n brick: string,\n appId?: string\n): false | string {\n // When a template is registered by an app, it's namespace maybe missed.\n if (!brick.includes(\".\") && brick.startsWith(\"tpl-\") && appId) {\n const tagName = `${appId}.${brick}`;\n if (customTemplates.get(tagName)) {\n return tagName;\n }\n }\n if (customTemplates.get(brick)) {\n return brick;\n }\n return false;\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ,0BAA0B;AAO1D,OAAO,SAASC,gBAAgBA,CAAAC,IAAA,EAE9BC,KAAa,EACbC,SAAkB,EACE;EAAA,IAHpB;IAAEC,eAAe;IAAEC;EAA8C,CAAC,GAAAJ,IAAA;EAIlE,IAAI,CAACG,eAAe,EAAE;IACpB,MAAM,IAAIE,KAAK,YAAAC,MAAA,CACHL,KAAK,qCAAAK,MAAA,CAAiCJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,EAChE;EACH;EACA,IAAMK,KAAK,GAAGH,gBAAgB,CAACI,GAAG,CAACL,eAAe,CAAC;EACnD,IAAI,CAACI,KAAK,EAAE;IACV,MAAM,IAAIF,KAAK,mDAAAC,MAAA,CACoCL,KAAK,QAAAK,MAAA,CACpDJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,uDAElB;EACH;EACA,OAAOK,KAAK;AACd;AAEA,OAAO,SAASE,iBAAiBA,CAC/BC,cAA2C,EAC3CT,KAAa,EACbC,SAAkB,EACG;EACrB,IAAMK,KAAK,GAAGR,gBAAgB,CAACW,cAAc,EAAET,KAAK,EAAEC,SAAS,CAAC;EAChE,IAAMS,WAAW,GAAGJ,KAAK,CAACK,SAAS,CAAEC,OAAO;EAC5C,IAAI,CAACF,WAAW,EAAE;IAChB,MAAM,IAAIN,KAAK,+CAAAC,MAAA,CACgCL,KAAK,QAAAK,MAAA,CAChDJ,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,uDAElB;EACH;EACA,OAAOS,WAAW;AACpB;AAEA,OAAO,SAASG,0BAA0BA,CACxCC,KAAa,EACbC,KAAc,EACE;EAChB;EACA,IAAI,CAACD,KAAK,CAACE,QAAQ,CAAC,GAAG,CAAC,IAAIF,KAAK,CAACG,UAAU,CAAC,MAAM,CAAC,IAAIF,KAAK,EAAE;IAC7D,IAAMG,OAAO,MAAAb,MAAA,CAAMU,KAAK,OAAAV,MAAA,CAAIS,KAAK,CAAE;IACnC,IAAIjB,eAAe,CAACU,GAAG,CAACW,OAAO,CAAC,EAAE;MAChC,OAAOA,OAAO;IAChB;EACF;EACA,IAAIrB,eAAe,CAACU,GAAG,CAACO,KAAK,CAAC,EAAE;IAC9B,OAAOA,KAAK;EACd;EACA,OAAO,KAAK;AACd"}
@@ -0,0 +1,3 @@
1
+ export var FORM_RENDERER = "form-renderer.form-renderer";
2
+ export var symbolForFormStateStoreId = Symbol.for("form.stateStoreId");
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["FORM_RENDERER","symbolForFormStateStoreId","Symbol","for"],"sources":["../../../../src/internal/FormRenderer/constants.ts"],"sourcesContent":["import type { BrickConf } from \"@next-core/types\";\n\nexport const FORM_RENDERER = \"form-renderer.form-renderer\";\nexport const symbolForFormStateStoreId = Symbol.for(\"form.stateStoreId\");\n\nexport type RuntimeBrickConfWithFormSymbols = BrickConf &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface RuntimeBrickConfOfFormSymbols {\n [symbolForFormStateStoreId]?: string;\n}\n"],"mappings":"AAEA,OAAO,IAAMA,aAAa,GAAG,6BAA6B;AAC1D,OAAO,IAAMC,yBAAyB,GAAGC,MAAM,CAACC,GAAG,CAAC,mBAAmB,CAAC"}