@next-core/runtime 1.67.0 → 1.68.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 (38) hide show
  1. package/dist/cjs/CustomTemplates.js +11 -4
  2. package/dist/cjs/CustomTemplates.js.map +1 -1
  3. package/dist/cjs/StoryboardFunctionRegistry.js.map +1 -1
  4. package/dist/cjs/createRoot.js +4 -1
  5. package/dist/cjs/createRoot.js.map +1 -1
  6. package/dist/cjs/index.js +7 -11
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +2 -1
  9. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  10. package/dist/cjs/internal/CustomTemplates/utils.js +12 -3
  11. package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
  12. package/dist/cjs/internal/IsolatedTemplates.js +23 -0
  13. package/dist/cjs/internal/IsolatedTemplates.js.map +1 -0
  14. package/dist/cjs/internal/Renderer.js +2 -2
  15. package/dist/cjs/internal/Renderer.js.map +1 -1
  16. package/dist/cjs/internal/compute/IsolatedFunctions.js.map +1 -1
  17. package/dist/esm/CustomTemplates.js +11 -5
  18. package/dist/esm/CustomTemplates.js.map +1 -1
  19. package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
  20. package/dist/esm/createRoot.js +4 -1
  21. package/dist/esm/createRoot.js.map +1 -1
  22. package/dist/esm/index.js +1 -1
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +2 -1
  25. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  26. package/dist/esm/internal/CustomTemplates/utils.js +12 -3
  27. package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
  28. package/dist/esm/internal/IsolatedTemplates.js +16 -0
  29. package/dist/esm/internal/IsolatedTemplates.js.map +1 -0
  30. package/dist/esm/internal/Renderer.js +2 -2
  31. package/dist/esm/internal/Renderer.js.map +1 -1
  32. package/dist/esm/internal/compute/IsolatedFunctions.js.map +1 -1
  33. package/dist/types/CustomTemplates.d.ts +3 -2
  34. package/dist/types/index.d.ts +1 -1
  35. package/dist/types/internal/CustomTemplates/utils.d.ts +1 -1
  36. package/dist/types/internal/IsolatedTemplates.d.ts +4 -0
  37. package/dist/types/internal/compute/IsolatedFunctions.d.ts +2 -2
  38. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"StoryboardFunctionRegistry.js","names":["cook","precookFunction","__dev_only_clearGlobalExecutionContextStack","__dev_only_getGlobalExecutionContextStack","supply","collectMemberUsageInFunction","hasOwnProperty","getGeneralGlobals","StoryboardFunctionRegistryFactory","widgetId","widgetVersion","isolatedRoot","collectCoverage","debuggerOverrides","arguments","length","undefined","registeredFunctions","Map","overrides","storyboardFunctions","Proxy","Object","freeze","get","_target","key","getStoryboardFunction","currentApp","registerStoryboardFunctions","functions","app","clear","Array","isArray","fn","_fn$perm","deps","delete","name","hasPermissionsCheck","perm","has","set","source","typescript","transformed","getGlobalVariables","globals","isStoryboardFunction","processed","cooked","collector","createCollector","globalVariables","Function","map","precooked","hooks","beforeVisit","cacheKey","attemptToVisitGlobals","function","rules","noVar","LodashWithStaticFields","_","ArrayConstructor","ObjectWithStaticFields","beforeEvaluate","beforeCall","beforeBranch","debug","updateStoryboardFunction","data","newFn","checkPermissionsUsage","functionNames","checkedFunctions","Set","add","some","clearGlobalExecutionContextStack","getGlobalExecutionContextStack"],"sources":["../../src/StoryboardFunctionRegistry.ts"],"sourcesContent":["import type {\n MicroApp,\n StoryboardFunction,\n TransformedFunction,\n} from \"@next-core/types\";\nimport {\n cook,\n precookFunction,\n EstreeNode,\n __dev_only_clearGlobalExecutionContextStack,\n __dev_only_getGlobalExecutionContextStack,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport { collectMemberUsageInFunction } from \"@next-core/utils/storyboard\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport type _ from \"lodash\";\nimport { getGeneralGlobals } from \"./internal/compute/getGeneralGlobals.js\";\n\n/** @internal */\nexport type ReadonlyStoryboardFunctions = Readonly<Record<string, Function>>;\n\n/** @internal */\nexport type StoryboardFunctionPatch = Pick<\n StoryboardFunction,\n \"source\" | \"typescript\" | \"transformed\"\n>;\n\n/** @internal */\nexport interface StoryboardFunctionRegistry {\n /** A readonly proxy for accessing cooked storyboard functions. */\n storyboardFunctions: ReadonlyStoryboardFunctions;\n\n /** Register storyboard functions. */\n registerStoryboardFunctions(\n functions: StoryboardFunction[] | undefined,\n app?: PartialMicroApp\n ): void;\n\n /** Update a storyboard function during debugging. */\n updateStoryboardFunction(name: string, data: StoryboardFunctionPatch): void;\n\n checkPermissionsUsage(functionNames: string[]): boolean;\n\n clearGlobalExecutionContextStack(): void;\n getGlobalExecutionContextStack(): ReturnType<\n typeof __dev_only_getGlobalExecutionContextStack\n >;\n}\n\n/** @internal */\nexport interface RuntimeStoryboardFunction {\n source: string;\n typescript?: boolean;\n processed?: boolean;\n cooked?: Function;\n deps: Set<string> | string[];\n hasPermissionsCheck: boolean;\n transformed?: TransformedFunction;\n}\n\n/** @internal */\nexport interface FunctionCoverageCollector {\n beforeVisit(node: EstreeNode): void;\n beforeEvaluate(node: EstreeNode): void;\n beforeCall(node: EstreeNode): void;\n beforeBranch(node: EstreeNode, branch: string): void;\n}\n\n/** @internal */\nexport interface FunctionCoverageSettings {\n createCollector(name: string): FunctionCoverageCollector;\n}\n\n/** @internal */\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\" | \"config\">;\n\n/** @internal */\nexport function StoryboardFunctionRegistryFactory({\n widgetId,\n widgetVersion,\n isolatedRoot,\n collectCoverage,\n debuggerOverrides,\n}: {\n widgetId?: string;\n widgetVersion?: string;\n isolatedRoot?: symbol;\n collectCoverage?: FunctionCoverageSettings;\n debuggerOverrides?: (ctx: {\n precookFunction: typeof precookFunction;\n cook: typeof cook;\n supply: typeof supply;\n }) => {\n LodashWithStaticFields?: Partial<typeof _>;\n ArrayConstructor?: typeof Array;\n ObjectWithStaticFields?: Partial<typeof Object>;\n };\n} = {}): StoryboardFunctionRegistry {\n const registeredFunctions = new Map<string, RuntimeStoryboardFunction>();\n\n const overrides = debuggerOverrides?.({\n precookFunction,\n cook,\n supply,\n });\n\n // Use `Proxy` with a frozen target, to make a readonly function registry.\n const storyboardFunctions = new Proxy(Object.freeze({}), {\n get(_target, key) {\n return getStoryboardFunction(key as string);\n },\n }) as ReadonlyStoryboardFunctions;\n\n let currentApp: PartialMicroApp | undefined;\n\n function registerStoryboardFunctions(\n functions: StoryboardFunction[],\n app?: PartialMicroApp\n ): void {\n if (app) {\n currentApp = app;\n }\n registeredFunctions.clear();\n if (Array.isArray(functions)) {\n for (const fn of functions) {\n let deps: Set<string> | string[] | undefined = fn.deps;\n if (deps == null) {\n deps = collectMemberUsageInFunction(fn, \"FN\", !!collectCoverage);\n (deps as Set<string>).delete(fn.name);\n }\n const hasPermissionsCheck =\n fn.perm ??\n collectMemberUsageInFunction(\n fn,\n \"PERMISSIONS\",\n !!collectCoverage\n ).has(\"check\");\n registeredFunctions.set(fn.name, {\n source: fn.source,\n typescript: fn.typescript,\n transformed: fn.transformed,\n deps,\n hasPermissionsCheck,\n });\n }\n }\n }\n\n function getGlobalVariables(globals: Set<string> | string[]) {\n return supply(\n globals,\n getGeneralGlobals(globals, {\n collectCoverage,\n widgetId,\n widgetVersion,\n isolatedRoot,\n app: currentApp,\n storyboardFunctions,\n isStoryboardFunction: true,\n }),\n !!collectCoverage\n );\n }\n\n function getStoryboardFunction(name: string): Function | undefined {\n const fn = registeredFunctions.get(name);\n if (!fn) {\n return undefined;\n }\n if (fn.processed) {\n return fn.cooked;\n }\n let collector: FunctionCoverageCollector | undefined;\n if (collectCoverage) {\n collector = collectCoverage.createCollector(name);\n }\n\n // Do not use transformed functions when debugging.\n const transformed = !overrides && !collector && fn.transformed;\n if (transformed) {\n const globalVariables = getGlobalVariables(transformed.globals);\n // Spread globals as params to prevent accessing forbidden globals.\n // NOTE: in native mode, forbidden globals are declared as `undefined`,\n // thus accessing them will not throw a ReferenceError.\n fn.cooked = new Function(\n ...transformed.globals,\n `\"use strict\";return (${transformed.source})`\n )(\n ...transformed.globals.map((key) =>\n hasOwnProperty(globalVariables, key)\n ? globalVariables[key]\n : undefined\n )\n );\n } else {\n const precooked = precookFunction(fn.source, {\n typescript: fn.typescript,\n hooks: collector && {\n beforeVisit: collector.beforeVisit,\n },\n cacheKey: fn,\n });\n const globalVariables = getGlobalVariables(\n precooked.attemptToVisitGlobals\n );\n fn.cooked = cook(precooked.function, fn.source, {\n rules: {\n noVar: true,\n },\n globalVariables: overrides\n ? {\n ...globalVariables,\n ...(overrides?.LodashWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"_\")\n ? {\n _: {\n ...(globalVariables._ as typeof _),\n ...overrides.LodashWithStaticFields,\n },\n }\n : null),\n ...(overrides?.ArrayConstructor &&\n precooked.attemptToVisitGlobals.has(\"Array\")\n ? {\n Array: overrides.ArrayConstructor,\n }\n : null),\n ...(overrides?.ObjectWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"Object\")\n ? {\n Object: {\n ...(globalVariables.Object as typeof Object),\n ...overrides.ObjectWithStaticFields,\n },\n }\n : null),\n }\n : globalVariables,\n ArrayConstructor: overrides?.ArrayConstructor,\n hooks: collector && {\n beforeEvaluate: collector.beforeEvaluate,\n beforeCall: collector.beforeCall,\n beforeBranch: collector.beforeBranch,\n },\n debug: !!debuggerOverrides,\n }) as Function;\n }\n fn.processed = true;\n return fn.cooked;\n }\n\n return {\n storyboardFunctions,\n registerStoryboardFunctions,\n updateStoryboardFunction(\n name: string,\n data: StoryboardFunctionPatch\n ): void {\n const newFn = {\n ...data,\n name,\n };\n const deps = collectMemberUsageInFunction(newFn, \"FN\", true);\n const hasPermissionsCheck = collectMemberUsageInFunction(\n newFn,\n \"PERMISSIONS\",\n true\n ).has(\"check\");\n registeredFunctions.set(name, {\n source: data.source,\n typescript: data.typescript,\n transformed: data.transformed,\n deps,\n hasPermissionsCheck,\n });\n },\n /**\n * Check whether listed functions attempt to call `PERMISSIONS.check()`,\n * includes in nested `FN.*()` calls.\n */\n checkPermissionsUsage(functionNames) {\n const checkedFunctions = new Set<string>();\n const hasPermissionsCheck = (name: string): boolean => {\n if (!checkedFunctions.has(name)) {\n checkedFunctions.add(name);\n const fn = registeredFunctions.get(name);\n return (\n !!fn &&\n (fn.hasPermissionsCheck || [...fn.deps].some(hasPermissionsCheck))\n );\n }\n return false;\n };\n return functionNames.some(hasPermissionsCheck);\n },\n clearGlobalExecutionContextStack() {\n __dev_only_clearGlobalExecutionContextStack();\n },\n getGlobalExecutionContextStack() {\n return __dev_only_getGlobalExecutionContextStack();\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"StoryboardFunctionRegistry.js","names":["cook","precookFunction","__dev_only_clearGlobalExecutionContextStack","__dev_only_getGlobalExecutionContextStack","supply","collectMemberUsageInFunction","hasOwnProperty","getGeneralGlobals","StoryboardFunctionRegistryFactory","widgetId","widgetVersion","isolatedRoot","collectCoverage","debuggerOverrides","arguments","length","undefined","registeredFunctions","Map","overrides","storyboardFunctions","Proxy","Object","freeze","get","_target","key","getStoryboardFunction","currentApp","registerStoryboardFunctions","functions","app","clear","Array","isArray","fn","_fn$perm","deps","delete","name","hasPermissionsCheck","perm","has","set","source","typescript","transformed","getGlobalVariables","globals","isStoryboardFunction","processed","cooked","collector","createCollector","globalVariables","Function","map","precooked","hooks","beforeVisit","cacheKey","attemptToVisitGlobals","function","rules","noVar","LodashWithStaticFields","_","ArrayConstructor","ObjectWithStaticFields","beforeEvaluate","beforeCall","beforeBranch","debug","updateStoryboardFunction","data","newFn","checkPermissionsUsage","functionNames","checkedFunctions","Set","add","some","clearGlobalExecutionContextStack","getGlobalExecutionContextStack"],"sources":["../../src/StoryboardFunctionRegistry.ts"],"sourcesContent":["import type {\n MicroApp,\n StoryboardFunction,\n TransformedFunction,\n} from \"@next-core/types\";\nimport {\n cook,\n precookFunction,\n EstreeNode,\n __dev_only_clearGlobalExecutionContextStack,\n __dev_only_getGlobalExecutionContextStack,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport { collectMemberUsageInFunction } from \"@next-core/utils/storyboard\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport type _ from \"lodash\";\nimport { getGeneralGlobals } from \"./internal/compute/getGeneralGlobals.js\";\n\n/** @internal */\nexport type ReadonlyStoryboardFunctions = Readonly<Record<string, Function>>;\n\n/** @internal */\nexport type StoryboardFunctionPatch = Pick<\n StoryboardFunction,\n \"source\" | \"typescript\" | \"transformed\"\n>;\n\n/** @internal */\nexport interface StoryboardFunctionRegistry {\n /** A readonly proxy for accessing cooked storyboard functions. */\n storyboardFunctions: ReadonlyStoryboardFunctions;\n\n /** Register storyboard functions. */\n registerStoryboardFunctions(\n functions: StoryboardFunction[] | undefined,\n app?: PartialMicroApp\n ): void;\n\n /** Update a storyboard function during debugging. */\n updateStoryboardFunction(name: string, data: StoryboardFunctionPatch): void;\n\n checkPermissionsUsage(functionNames: string[]): boolean;\n\n clearGlobalExecutionContextStack(): void;\n getGlobalExecutionContextStack(): ReturnType<\n typeof __dev_only_getGlobalExecutionContextStack\n >;\n}\n\n/** @internal */\nexport interface RuntimeStoryboardFunction {\n source: string;\n typescript?: boolean;\n processed?: boolean;\n cooked?: Function;\n deps: Set<string> | string[];\n hasPermissionsCheck: boolean;\n transformed?: TransformedFunction;\n}\n\n/** @internal */\nexport interface FunctionCoverageCollector {\n beforeVisit(node: EstreeNode): void;\n beforeEvaluate(node: EstreeNode): void;\n beforeCall(node: EstreeNode): void;\n beforeBranch(node: EstreeNode, branch: string): void;\n}\n\n/** @internal */\nexport interface FunctionCoverageSettings {\n createCollector(name: string): FunctionCoverageCollector;\n}\n\n/** @internal */\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\" | \"config\">;\n\n/** @internal */\nexport function StoryboardFunctionRegistryFactory({\n widgetId,\n widgetVersion,\n isolatedRoot,\n collectCoverage,\n debuggerOverrides,\n}: {\n widgetId?: string;\n widgetVersion?: string;\n isolatedRoot?: symbol;\n collectCoverage?: FunctionCoverageSettings;\n debuggerOverrides?: (ctx: {\n precookFunction: typeof precookFunction;\n cook: typeof cook;\n supply: typeof supply;\n }) => {\n LodashWithStaticFields?: Partial<typeof _>;\n ArrayConstructor?: typeof Array;\n ObjectWithStaticFields?: Partial<typeof Object>;\n };\n} = {}): StoryboardFunctionRegistry {\n const registeredFunctions = new Map<string, RuntimeStoryboardFunction>();\n\n const overrides = debuggerOverrides?.({\n precookFunction,\n cook,\n supply,\n });\n\n // Use `Proxy` with a frozen target, to make a readonly function registry.\n const storyboardFunctions = new Proxy(Object.freeze({}), {\n get(_target, key) {\n return getStoryboardFunction(key as string);\n },\n }) as ReadonlyStoryboardFunctions;\n\n let currentApp: PartialMicroApp | undefined;\n\n function registerStoryboardFunctions(\n functions: StoryboardFunction[] | undefined,\n app?: PartialMicroApp\n ): void {\n if (app) {\n currentApp = app;\n }\n registeredFunctions.clear();\n if (Array.isArray(functions)) {\n for (const fn of functions) {\n let deps: Set<string> | string[] | undefined = fn.deps;\n if (deps == null) {\n deps = collectMemberUsageInFunction(fn, \"FN\", !!collectCoverage);\n (deps as Set<string>).delete(fn.name);\n }\n const hasPermissionsCheck =\n fn.perm ??\n collectMemberUsageInFunction(\n fn,\n \"PERMISSIONS\",\n !!collectCoverage\n ).has(\"check\");\n registeredFunctions.set(fn.name, {\n source: fn.source,\n typescript: fn.typescript,\n transformed: fn.transformed,\n deps,\n hasPermissionsCheck,\n });\n }\n }\n }\n\n function getGlobalVariables(globals: Set<string> | string[]) {\n return supply(\n globals,\n getGeneralGlobals(globals, {\n collectCoverage,\n widgetId,\n widgetVersion,\n isolatedRoot,\n app: currentApp,\n storyboardFunctions,\n isStoryboardFunction: true,\n }),\n !!collectCoverage\n );\n }\n\n function getStoryboardFunction(name: string): Function | undefined {\n const fn = registeredFunctions.get(name);\n if (!fn) {\n return undefined;\n }\n if (fn.processed) {\n return fn.cooked;\n }\n let collector: FunctionCoverageCollector | undefined;\n if (collectCoverage) {\n collector = collectCoverage.createCollector(name);\n }\n\n // Do not use transformed functions when debugging.\n const transformed = !overrides && !collector && fn.transformed;\n if (transformed) {\n const globalVariables = getGlobalVariables(transformed.globals);\n // Spread globals as params to prevent accessing forbidden globals.\n // NOTE: in native mode, forbidden globals are declared as `undefined`,\n // thus accessing them will not throw a ReferenceError.\n fn.cooked = new Function(\n ...transformed.globals,\n `\"use strict\";return (${transformed.source})`\n )(\n ...transformed.globals.map((key) =>\n hasOwnProperty(globalVariables, key)\n ? globalVariables[key]\n : undefined\n )\n );\n } else {\n const precooked = precookFunction(fn.source, {\n typescript: fn.typescript,\n hooks: collector && {\n beforeVisit: collector.beforeVisit,\n },\n cacheKey: fn,\n });\n const globalVariables = getGlobalVariables(\n precooked.attemptToVisitGlobals\n );\n fn.cooked = cook(precooked.function, fn.source, {\n rules: {\n noVar: true,\n },\n globalVariables: overrides\n ? {\n ...globalVariables,\n ...(overrides?.LodashWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"_\")\n ? {\n _: {\n ...(globalVariables._ as typeof _),\n ...overrides.LodashWithStaticFields,\n },\n }\n : null),\n ...(overrides?.ArrayConstructor &&\n precooked.attemptToVisitGlobals.has(\"Array\")\n ? {\n Array: overrides.ArrayConstructor,\n }\n : null),\n ...(overrides?.ObjectWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"Object\")\n ? {\n Object: {\n ...(globalVariables.Object as typeof Object),\n ...overrides.ObjectWithStaticFields,\n },\n }\n : null),\n }\n : globalVariables,\n ArrayConstructor: overrides?.ArrayConstructor,\n hooks: collector && {\n beforeEvaluate: collector.beforeEvaluate,\n beforeCall: collector.beforeCall,\n beforeBranch: collector.beforeBranch,\n },\n debug: !!debuggerOverrides,\n }) as Function;\n }\n fn.processed = true;\n return fn.cooked;\n }\n\n return {\n storyboardFunctions,\n registerStoryboardFunctions,\n updateStoryboardFunction(\n name: string,\n data: StoryboardFunctionPatch\n ): void {\n const newFn = {\n ...data,\n name,\n };\n const deps = collectMemberUsageInFunction(newFn, \"FN\", true);\n const hasPermissionsCheck = collectMemberUsageInFunction(\n newFn,\n \"PERMISSIONS\",\n true\n ).has(\"check\");\n registeredFunctions.set(name, {\n source: data.source,\n typescript: data.typescript,\n transformed: data.transformed,\n deps,\n hasPermissionsCheck,\n });\n },\n /**\n * Check whether listed functions attempt to call `PERMISSIONS.check()`,\n * includes in nested `FN.*()` calls.\n */\n checkPermissionsUsage(functionNames) {\n const checkedFunctions = new Set<string>();\n const hasPermissionsCheck = (name: string): boolean => {\n if (!checkedFunctions.has(name)) {\n checkedFunctions.add(name);\n const fn = registeredFunctions.get(name);\n return (\n !!fn &&\n (fn.hasPermissionsCheck || [...fn.deps].some(hasPermissionsCheck))\n );\n }\n return false;\n };\n return functionNames.some(hasPermissionsCheck);\n },\n clearGlobalExecutionContextStack() {\n __dev_only_clearGlobalExecutionContextStack();\n },\n getGlobalExecutionContextStack() {\n return __dev_only_getGlobalExecutionContextStack();\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,7 @@ import { registerCustomTemplates } from "./internal/registerCustomTemplates.js";
13
13
  import { setUIVersion } from "./setUIVersion.js";
14
14
  import { ErrorNode } from "./internal/ErrorNode.js";
15
15
  import { isolatedFunctionRegistry, registerIsolatedFunctions } from "./internal/compute/IsolatedFunctions.js";
16
+ import { isolatedTemplateRegistryMap, registerIsolatedTemplates } from "./internal/IsolatedTemplates.js";
16
17
  export function unstable_createRoot(container) {
17
18
  let {
18
19
  portal: _portal,
@@ -124,7 +125,8 @@ export function unstable_createRoot(container) {
124
125
  // Register functions.
125
126
  registerStoryboardFunctions(functions, app);
126
127
  } else {
127
- registerIsolatedFunctions(isolatedRoot, functions !== null && functions !== void 0 ? functions : []);
128
+ registerIsolatedTemplates(isolatedRoot, templates);
129
+ registerIsolatedFunctions(isolatedRoot, functions);
128
130
  }
129
131
  runtimeContext.ctxStore.define(context, runtimeContext);
130
132
  let failed = false;
@@ -180,6 +182,7 @@ export function unstable_createRoot(container) {
180
182
  unmounted = true;
181
183
  if (isolatedRoot) {
182
184
  isolatedFunctionRegistry.delete(isolatedRoot);
185
+ isolatedTemplateRegistryMap.delete(isolatedRoot);
183
186
  }
184
187
  unmountTree(container);
185
188
  if (portal) {
@@ -1 +1 @@
1
- {"version":3,"file":"createRoot.js","names":["i18n","replaceUseChildren","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","isolatedFunctionRegistry","registerIsolatedFunctions","unstable_createRoot","container","portal","_portal","scope","unknownBricks","supportsUseChildren","unsafe_penetrate","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","isolatedRoot","Symbol","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","template","Array","isArray","previousRendererContext","renderId","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","ROOT","_clearI18nBundles","changeLanguage","id","homepage","demoStoryboard","meta","customTemplates","define","failed","output","stores","error","node","blockingList","child","dispatchOnUnmount","dispose","dispatchBeforePageLoad","window","scrollTo","store","mountAsyncData","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","delete","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { replaceUseChildren } from \"@next-core/utils/storyboard\";\nimport { uniqueId } from \"lodash\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderBricks,\n} from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\nimport { setUIVersion } from \"./setUIVersion.js\";\nimport { ErrorNode } from \"./internal/ErrorNode.js\";\nimport {\n isolatedFunctionRegistry,\n registerIsolatedFunctions,\n} from \"./internal/compute/IsolatedFunctions.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n\n /**\n * Whether the root supports `useChildren`.\n */\n supportsUseChildren?: boolean;\n\n /**\n * Set unsafe_penetrate to true to allow accessing global variables\n * from an isolated root.\n *\n * It is unsafe, use it at your own risk.\n */\n unsafe_penetrate?: boolean;\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n uiVersion?: string;\n language?: string;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n url?: string;\n app?: MicroApp;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement | DocumentFragment,\n {\n portal: _portal,\n scope = \"fragment\",\n unknownBricks,\n supportsUseChildren,\n unsafe_penetrate,\n }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n const isolatedRoot = scope === \"page\" ? undefined : Symbol(\"IsolatedRoot\");\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n uiVersion,\n language,\n context,\n functions,\n templates,\n i18n: i18nData,\n url,\n app,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n if (supportsUseChildren) {\n replaceUseChildren(bricks);\n\n for (const template of templates ?? []) {\n if (Array.isArray(template.bricks)) {\n replaceUseChildren(template.bricks);\n }\n }\n }\n\n const previousRendererContext = rendererContext;\n const renderId = uniqueId(\"render-id-\");\n rendererContext = new RendererContext(scope, { unknownBricks, renderId });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n isolatedRoot,\n unsafe_penetrate,\n } as Partial<RuntimeContext> as RuntimeContext;\n\n if (url) {\n const urlObj = new URL(url);\n runtimeContext.query = urlObj.searchParams;\n runtimeContext.location = {\n pathname: urlObj.pathname,\n search: urlObj.search,\n hash: urlObj.hash,\n state: undefined,\n };\n }\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n setUIVersion(uiVersion);\n if (language) {\n await i18n.changeLanguage(language);\n }\n\n app ??= {\n id: \"demo\",\n homepage: \"/demo\",\n } as MicroApp;\n runtimeContext.app = app;\n const demoStoryboard = {\n app,\n meta: {\n i18n: i18nData,\n customTemplates: templates,\n },\n } as Storyboard;\n\n // Register i18n.\n clearI18nBundles?.();\n clearI18nBundles = registerAppI18n(demoStoryboard);\n\n // Register custom templates.\n registerCustomTemplates(demoStoryboard);\n\n // Register functions.\n registerStoryboardFunctions(functions, app);\n } else {\n registerIsolatedFunctions(isolatedRoot!, functions ?? []);\n }\n\n runtimeContext.ctxStore.define(context, runtimeContext);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext,\n [],\n {}\n );\n\n stores = getDataStores(runtimeContext);\n await postAsyncRender(output, runtimeContext, stores);\n } catch (error) {\n failed = true;\n output = {\n node: await ErrorNode(error, renderRoot, scope === \"page\"),\n blockingList: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispatchOnUnmount();\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n if (isolatedRoot) {\n isolatedFunctionRegistry.delete(isolatedRoot);\n }\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n // Only remove the portal from its parent when it's dynamic created.\n if (!_portal) {\n portal.remove();\n }\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"createRoot.js","names":["i18n","replaceUseChildren","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","isolatedFunctionRegistry","registerIsolatedFunctions","isolatedTemplateRegistryMap","registerIsolatedTemplates","unstable_createRoot","container","portal","_portal","scope","unknownBricks","supportsUseChildren","unsafe_penetrate","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","isolatedRoot","Symbol","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","template","Array","isArray","previousRendererContext","renderId","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","ROOT","_clearI18nBundles","changeLanguage","id","homepage","demoStoryboard","meta","customTemplates","define","failed","output","stores","error","node","blockingList","child","dispatchOnUnmount","dispose","dispatchBeforePageLoad","window","scrollTo","store","mountAsyncData","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","delete","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { replaceUseChildren } from \"@next-core/utils/storyboard\";\nimport { uniqueId } from \"lodash\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderBricks,\n} from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\nimport { setUIVersion } from \"./setUIVersion.js\";\nimport { ErrorNode } from \"./internal/ErrorNode.js\";\nimport {\n isolatedFunctionRegistry,\n registerIsolatedFunctions,\n} from \"./internal/compute/IsolatedFunctions.js\";\nimport {\n isolatedTemplateRegistryMap,\n registerIsolatedTemplates,\n} from \"./internal/IsolatedTemplates.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n\n /**\n * Whether the root supports `useChildren`.\n */\n supportsUseChildren?: boolean;\n\n /**\n * Set unsafe_penetrate to true to allow accessing global variables\n * from an isolated root.\n *\n * It is unsafe, use it at your own risk.\n */\n unsafe_penetrate?: boolean;\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n uiVersion?: string;\n language?: string;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n url?: string;\n app?: MicroApp;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement | DocumentFragment,\n {\n portal: _portal,\n scope = \"fragment\",\n unknownBricks,\n supportsUseChildren,\n unsafe_penetrate,\n }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n const isolatedRoot = scope === \"page\" ? undefined : Symbol(\"IsolatedRoot\");\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n uiVersion,\n language,\n context,\n functions,\n templates,\n i18n: i18nData,\n url,\n app,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n if (supportsUseChildren) {\n replaceUseChildren(bricks);\n\n for (const template of templates ?? []) {\n if (Array.isArray(template.bricks)) {\n replaceUseChildren(template.bricks);\n }\n }\n }\n\n const previousRendererContext = rendererContext;\n const renderId = uniqueId(\"render-id-\");\n rendererContext = new RendererContext(scope, { unknownBricks, renderId });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n isolatedRoot,\n unsafe_penetrate,\n } as Partial<RuntimeContext> as RuntimeContext;\n\n if (url) {\n const urlObj = new URL(url);\n runtimeContext.query = urlObj.searchParams;\n runtimeContext.location = {\n pathname: urlObj.pathname,\n search: urlObj.search,\n hash: urlObj.hash,\n state: undefined,\n };\n }\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n setUIVersion(uiVersion);\n if (language) {\n await i18n.changeLanguage(language);\n }\n\n app ??= {\n id: \"demo\",\n homepage: \"/demo\",\n } as MicroApp;\n runtimeContext.app = app;\n const demoStoryboard = {\n app,\n meta: {\n i18n: i18nData,\n customTemplates: templates,\n },\n } as Storyboard;\n\n // Register i18n.\n clearI18nBundles?.();\n clearI18nBundles = registerAppI18n(demoStoryboard);\n\n // Register custom templates.\n registerCustomTemplates(demoStoryboard);\n\n // Register functions.\n registerStoryboardFunctions(functions, app);\n } else {\n registerIsolatedTemplates(isolatedRoot!, templates);\n registerIsolatedFunctions(isolatedRoot!, functions);\n }\n\n runtimeContext.ctxStore.define(context, runtimeContext);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext,\n [],\n {}\n );\n\n stores = getDataStores(runtimeContext);\n await postAsyncRender(output, runtimeContext, stores);\n } catch (error) {\n failed = true;\n output = {\n node: await ErrorNode(error, renderRoot, scope === \"page\"),\n blockingList: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispatchOnUnmount();\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n if (isolatedRoot) {\n isolatedFunctionRegistry.delete(isolatedRoot);\n isolatedTemplateRegistryMap.delete(isolatedRoot);\n }\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n // Only remove the portal from its parent when it's dynamic created.\n if (!_portal) {\n portal.remove();\n }\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from "./auth.js";
2
2
  export * from "./CustomEditors.js";
3
3
  export * from "./CustomProcessors.js";
4
- export * from "./CustomTemplates.js";
4
+ export { customTemplates } from "./CustomTemplates.js";
5
5
  export * from "./fetchByProvider.js";
6
6
  export * from "./getBasePath.js";
7
7
  export * from "./getPageInfo.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createRuntime","getRuntime","__secret_internals","__test_only","getCssPropertyValue","getCurrentTheme","getCurrentMode","getThemeVariant","batchSetAppsLocalTheme","applyTheme","checkIfOfComputed","checkIfByTransform","registerWidgetFunctions","registerWidgetI18n","StoryboardFunctionRegistryFactory","matchPath","Notification","Dialog","setUIVersion"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.js\";\nexport * from \"./CustomEditors.js\";\nexport * from \"./CustomProcessors.js\";\nexport * from \"./CustomTemplates.js\";\nexport * from \"./fetchByProvider.js\";\nexport * from \"./getBasePath.js\";\nexport * from \"./getPageInfo.js\";\nexport * from \"./handleHttpError.js\";\nexport * from \"./history.js\";\nexport * from \"./createRoot.js\";\nexport * from \"./getRealValue.js\";\nexport {\n createRuntime,\n getRuntime,\n type RuntimeOptions,\n type RuntimeHooks,\n type RuntimeHooksMenuHelpers,\n type ImagesFactory,\n type PageViewInfo,\n} from \"./internal/Runtime.js\";\nimport * as __secret_internals from \"./internal/secret_internals.js\";\nexport { __secret_internals };\nexport { __test_only } from \"./internal/test_only.js\";\nexport {\n getCssPropertyValue,\n getCurrentTheme,\n getCurrentMode,\n getThemeVariant,\n batchSetAppsLocalTheme,\n applyTheme,\n} from \"./themeAndMode.js\";\nexport {\n checkIfOfComputed,\n checkIfByTransform,\n} from \"./internal/compute/checkIf.js\";\nexport { registerWidgetFunctions } from \"./internal/compute/WidgetFunctions.js\";\nexport { registerWidgetI18n } from \"./internal/compute/WidgetI18n.js\";\nexport { StoryboardFunctionRegistryFactory } from \"./StoryboardFunctionRegistry.js\";\nexport { matchPath, type MatchOptions } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\nexport * from \"./getV2RuntimeFromDll.js\";\nexport { setUIVersion } from \"./setUIVersion.js\";\nexport * from \"./ModalStack.js\";\nexport * from \"./isNetworkError.js\";\nexport * from \"./shouldReloadForError.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,oBAAoB;AAClC,cAAc,uBAAuB;AACrC,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,sBAAsB;AACpC,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,mBAAmB;AACjC,SACEA,aAAa,EACbC,UAAU,QAML,uBAAuB;AAC9B,OAAO,KAAKC,kBAAkB,MAAM,gCAAgC;AACpE,SAASA,kBAAkB;AAC3B,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SACEC,mBAAmB,EACnBC,eAAe,EACfC,cAAc,EACdC,eAAe,EACfC,sBAAsB,EACtBC,UAAU,QACL,mBAAmB;AAC1B,SACEC,iBAAiB,EACjBC,kBAAkB,QACb,+BAA+B;AACtC,SAASC,uBAAuB,QAAQ,uCAAuC;AAC/E,SAASC,kBAAkB,QAAQ,kCAAkC;AACrE,SAASC,iCAAiC,QAAQ,iCAAiC;AACnF,SAASC,SAAS,QAA2B,yBAAyB;AACtE,SAASC,YAAY,QAAkC,mBAAmB;AAC1E,SAASC,MAAM,QAA4B,aAAa;AACxD,cAAc,0BAA0B;AACxC,SAASC,YAAY,QAAQ,mBAAmB;AAChD,cAAc,iBAAiB;AAC/B,cAAc,qBAAqB;AACnC,cAAc,2BAA2B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["customTemplates","createRuntime","getRuntime","__secret_internals","__test_only","getCssPropertyValue","getCurrentTheme","getCurrentMode","getThemeVariant","batchSetAppsLocalTheme","applyTheme","checkIfOfComputed","checkIfByTransform","registerWidgetFunctions","registerWidgetI18n","StoryboardFunctionRegistryFactory","matchPath","Notification","Dialog","setUIVersion"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.js\";\nexport * from \"./CustomEditors.js\";\nexport * from \"./CustomProcessors.js\";\nexport { customTemplates } from \"./CustomTemplates.js\";\nexport * from \"./fetchByProvider.js\";\nexport * from \"./getBasePath.js\";\nexport * from \"./getPageInfo.js\";\nexport * from \"./handleHttpError.js\";\nexport * from \"./history.js\";\nexport * from \"./createRoot.js\";\nexport * from \"./getRealValue.js\";\nexport {\n createRuntime,\n getRuntime,\n type RuntimeOptions,\n type RuntimeHooks,\n type RuntimeHooksMenuHelpers,\n type ImagesFactory,\n type PageViewInfo,\n} from \"./internal/Runtime.js\";\nimport * as __secret_internals from \"./internal/secret_internals.js\";\nexport { __secret_internals };\nexport { __test_only } from \"./internal/test_only.js\";\nexport {\n getCssPropertyValue,\n getCurrentTheme,\n getCurrentMode,\n getThemeVariant,\n batchSetAppsLocalTheme,\n applyTheme,\n} from \"./themeAndMode.js\";\nexport {\n checkIfOfComputed,\n checkIfByTransform,\n} from \"./internal/compute/checkIf.js\";\nexport { registerWidgetFunctions } from \"./internal/compute/WidgetFunctions.js\";\nexport { registerWidgetI18n } from \"./internal/compute/WidgetI18n.js\";\nexport { StoryboardFunctionRegistryFactory } from \"./StoryboardFunctionRegistry.js\";\nexport { matchPath, type MatchOptions } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\nexport * from \"./getV2RuntimeFromDll.js\";\nexport { setUIVersion } from \"./setUIVersion.js\";\nexport * from \"./ModalStack.js\";\nexport * from \"./isNetworkError.js\";\nexport * from \"./shouldReloadForError.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,oBAAoB;AAClC,cAAc,uBAAuB;AACrC,SAASA,eAAe,QAAQ,sBAAsB;AACtD,cAAc,sBAAsB;AACpC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,sBAAsB;AACpC,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,mBAAmB;AACjC,SACEC,aAAa,EACbC,UAAU,QAML,uBAAuB;AAC9B,OAAO,KAAKC,kBAAkB,MAAM,gCAAgC;AACpE,SAASA,kBAAkB;AAC3B,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SACEC,mBAAmB,EACnBC,eAAe,EACfC,cAAc,EACdC,eAAe,EACfC,sBAAsB,EACtBC,UAAU,QACL,mBAAmB;AAC1B,SACEC,iBAAiB,EACjBC,kBAAkB,QACb,+BAA+B;AACtC,SAASC,uBAAuB,QAAQ,uCAAuC;AAC/E,SAASC,kBAAkB,QAAQ,kCAAkC;AACrE,SAASC,iCAAiC,QAAQ,iCAAiC;AACnF,SAASC,SAAS,QAA2B,yBAAyB;AACtE,SAASC,YAAY,QAAkC,mBAAmB;AAC1E,SAASC,MAAM,QAA4B,aAAa;AACxD,cAAc,0BAA0B;AACxC,SAASC,YAAY,QAAQ,mBAAmB;AAChD,cAAc,iBAAiB;AAC/B,cAAc,qBAAqB;AACnC,cAAc,2BAA2B","ignoreList":[]}
@@ -6,6 +6,7 @@ import { setupUseBrickInTemplate } from "./setupUseBrickInTemplate.js";
6
6
  import { childrenToSlots } from "../Renderer.js";
7
7
  import { hooks } from "../Runtime.js";
8
8
  import { replaceSlotWithSlottedBricks } from "./replaceSlotWithSlottedBricks.js";
9
+ import { isolatedTemplateRegistryMap } from "../IsolatedTemplates.js";
9
10
  export function expandCustomTemplate(tplTagName, brickConf, hostBrick, asyncHostPropertyEntries, rendererContext) {
10
11
  var _hooks$flowApi;
11
12
  const tplStateStoreId = uniqueId("tpl-state-");
@@ -29,7 +30,7 @@ export function expandCustomTemplate(tplTagName, brickConf, hostBrick, asyncHost
29
30
  proxy,
30
31
  state,
31
32
  contracts
32
- } = customTemplates.get(tplTagName);
33
+ } = hostBrick.runtimeContext.isolatedRoot ? isolatedTemplateRegistryMap.get(hostBrick.runtimeContext.isolatedRoot).get(tplTagName) : customTemplates.get(tplTagName);
33
34
  hooks === null || hooks === void 0 || (_hooks$flowApi = hooks.flowApi) === null || _hooks$flowApi === void 0 || _hooks$flowApi.collectWidgetContract(contracts);
34
35
  tplStateStore.define(state, runtimeContext, asyncHostPropertyEntries);
35
36
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"expandCustomTemplate.js","names":["uniqueId","customTemplates","DataStore","setupTemplateProxy","setupUseBrickInTemplate","childrenToSlots","hooks","replaceSlotWithSlottedBricks","expandCustomTemplate","tplTagName","brickConf","hostBrick","asyncHostPropertyEntries","rendererContext","_hooks$flowApi","tplStateStoreId","runtimeContext","forEachItem","forEachIndex","forEachSize","formStateStoreId","tplStateStore","tplStateStoreMap","set","tplStateStoreScope","push","bricks","proxy","state","contracts","get","flowApi","collectWidgetContract","define","slots","originalExternalSlots","children","externalChildren","restBrickConf","newBrickConf","brick","tplHostMetadata","internalBricksByRef","Map","reversedProxies","properties","from","to","Object","entries","proxies","ref","hostContext","externalSlots","usedSlots","Set","type","flatMap","item","expandBrickInTemplate","brickConfInTemplate","markSlotted","if","slotsInTemplate","childrenInTemplate","restBrickConfInTemplate","transpiledSlots","slotted","markChild","fromEntries","map","_ref","_slotConf$bricks","slotName","slotConf"],"sources":["../../../../src/internal/CustomTemplates/expandCustomTemplate.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n SlotConfOfBricks,\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 { setupTemplateProxy } from \"./setupTemplateProxy.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n TemplateHostBrick,\n TemplateHostContext,\n} from \"../interfaces.js\";\nimport { setupUseBrickInTemplate } from \"./setupUseBrickInTemplate.js\";\nimport { childrenToSlots } from \"../Renderer.js\";\nimport { hooks } from \"../Runtime.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { replaceSlotWithSlottedBricks } from \"./replaceSlotWithSlottedBricks.js\";\n\nexport function expandCustomTemplate<T extends BrickConf | UseSingleBrickConf>(\n tplTagName: string,\n brickConf: T,\n hostBrick: RuntimeBrick,\n asyncHostPropertyEntries: AsyncPropertyEntry[],\n rendererContext: RendererContext\n): T {\n const tplStateStoreId = uniqueId(\"tpl-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n tplStateStoreId,\n };\n\n // There is a boundary for `forEach*` and `FORM_STATE` between template internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.forEachIndex;\n delete runtimeContext.forEachSize;\n delete runtimeContext.formStateStoreId;\n\n const tplStateStore = new DataStore(\n \"STATE\",\n hostBrick,\n rendererContext,\n tplStateStoreId\n );\n runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);\n if (runtimeContext.tplStateStoreScope) {\n runtimeContext.tplStateStoreScope.push(tplStateStore);\n }\n\n const { bricks, proxy, state, contracts } = customTemplates.get(tplTagName)!;\n hooks?.flowApi?.collectWidgetContract(contracts);\n tplStateStore.define(state, runtimeContext, asyncHostPropertyEntries);\n\n const {\n slots: originalExternalSlots,\n children: externalChildren,\n ...restBrickConf\n } = brickConf;\n\n const newBrickConf = {\n ...restBrickConf,\n brick: tplTagName,\n } as T;\n\n hostBrick.tplHostMetadata = {\n internalBricksByRef: new Map(),\n tplStateStoreId,\n proxy,\n };\n\n // Reversed proxies are used for expand storyboard before rendering page.\n const reversedProxies: TemplateHostContext[\"reversedProxies\"] = {\n properties: new Map(),\n slots: new Map(),\n // mergeBases: new Map(),\n };\n\n if (proxy?.properties) {\n for (const [from, to] of Object.entries(proxy.properties)) {\n let proxies = reversedProxies.properties.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.properties.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n if (proxy?.slots) {\n for (const [from, to] of Object.entries(proxy.slots)) {\n let proxies = reversedProxies.slots.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.slots.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n const hostContext: TemplateHostContext = {\n reversedProxies,\n asyncHostPropertyEntries,\n externalSlots: childrenToSlots(externalChildren, originalExternalSlots) as\n | SlotsConfOfBricks\n | undefined,\n tplStateStoreId,\n hostBrick: hostBrick as TemplateHostBrick,\n usedSlots: new Set(),\n };\n\n newBrickConf.slots = {\n \"\": {\n type: \"bricks\",\n bricks: bricks.flatMap((item) =>\n expandBrickInTemplate(item, hostContext)\n ),\n },\n };\n\n return newBrickConf;\n}\n\nfunction expandBrickInTemplate(\n brickConfInTemplate: BrickConf,\n hostContext: TemplateHostContext,\n markSlotted?: () => void\n): BrickConf | BrickConf[] {\n // Ignore `if: null` to make `looseCheckIf` working.\n if (brickConfInTemplate.if === null) {\n delete brickConfInTemplate.if;\n }\n\n if (brickConfInTemplate.brick === \"slot\") {\n markSlotted?.();\n return replaceSlotWithSlottedBricks(\n brickConfInTemplate,\n hostContext,\n expandBrickInTemplate\n );\n }\n\n const {\n properties,\n slots: slotsInTemplate,\n children: childrenInTemplate,\n ...restBrickConfInTemplate\n } = brickConfInTemplate as BrickConfInTemplate;\n\n const transpiledSlots = childrenToSlots(\n childrenInTemplate,\n slotsInTemplate\n ) as SlotsConfInTemplate | undefined;\n\n let slotted = false;\n const markChild = () => {\n slotted = true;\n };\n const slots = Object.fromEntries<SlotConfOfBricks>(\n Object.entries(transpiledSlots ?? {}).map(([slotName, slotConf]) => [\n slotName,\n {\n type: \"bricks\",\n bricks: (slotConf.bricks ?? []).flatMap((item) =>\n expandBrickInTemplate(item, hostContext, markChild)\n ),\n },\n ])\n );\n\n return {\n ...restBrickConfInTemplate,\n properties: setupUseBrickInTemplate(properties, hostContext),\n slots,\n ...setupTemplateProxy(\n hostContext,\n restBrickConfInTemplate.ref,\n slots,\n slotted\n ),\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"expandCustomTemplate.js","names":["uniqueId","customTemplates","DataStore","setupTemplateProxy","setupUseBrickInTemplate","childrenToSlots","hooks","replaceSlotWithSlottedBricks","isolatedTemplateRegistryMap","expandCustomTemplate","tplTagName","brickConf","hostBrick","asyncHostPropertyEntries","rendererContext","_hooks$flowApi","tplStateStoreId","runtimeContext","forEachItem","forEachIndex","forEachSize","formStateStoreId","tplStateStore","tplStateStoreMap","set","tplStateStoreScope","push","bricks","proxy","state","contracts","isolatedRoot","get","flowApi","collectWidgetContract","define","slots","originalExternalSlots","children","externalChildren","restBrickConf","newBrickConf","brick","tplHostMetadata","internalBricksByRef","Map","reversedProxies","properties","from","to","Object","entries","proxies","ref","hostContext","externalSlots","usedSlots","Set","type","flatMap","item","expandBrickInTemplate","brickConfInTemplate","markSlotted","if","slotsInTemplate","childrenInTemplate","restBrickConfInTemplate","transpiledSlots","slotted","markChild","fromEntries","map","_ref","_slotConf$bricks","slotName","slotConf"],"sources":["../../../../src/internal/CustomTemplates/expandCustomTemplate.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n SlotConfOfBricks,\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 { setupTemplateProxy } from \"./setupTemplateProxy.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n TemplateHostBrick,\n TemplateHostContext,\n} from \"../interfaces.js\";\nimport { setupUseBrickInTemplate } from \"./setupUseBrickInTemplate.js\";\nimport { childrenToSlots } from \"../Renderer.js\";\nimport { hooks } from \"../Runtime.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { replaceSlotWithSlottedBricks } from \"./replaceSlotWithSlottedBricks.js\";\nimport { isolatedTemplateRegistryMap } from \"../IsolatedTemplates.js\";\n\nexport function expandCustomTemplate<T extends BrickConf | UseSingleBrickConf>(\n tplTagName: string,\n brickConf: T,\n hostBrick: RuntimeBrick,\n asyncHostPropertyEntries: AsyncPropertyEntry[],\n rendererContext: RendererContext\n): T {\n const tplStateStoreId = uniqueId(\"tpl-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n tplStateStoreId,\n };\n\n // There is a boundary for `forEach*` and `FORM_STATE` between template internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.forEachIndex;\n delete runtimeContext.forEachSize;\n delete runtimeContext.formStateStoreId;\n\n const tplStateStore = new DataStore(\n \"STATE\",\n hostBrick,\n rendererContext,\n tplStateStoreId\n );\n runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);\n if (runtimeContext.tplStateStoreScope) {\n runtimeContext.tplStateStoreScope.push(tplStateStore);\n }\n\n const { bricks, proxy, state, contracts } = hostBrick.runtimeContext\n .isolatedRoot\n ? isolatedTemplateRegistryMap\n .get(hostBrick.runtimeContext.isolatedRoot)!\n .get(tplTagName)!\n : customTemplates.get(tplTagName)!;\n hooks?.flowApi?.collectWidgetContract(contracts);\n tplStateStore.define(state, runtimeContext, asyncHostPropertyEntries);\n\n const {\n slots: originalExternalSlots,\n children: externalChildren,\n ...restBrickConf\n } = brickConf;\n\n const newBrickConf = {\n ...restBrickConf,\n brick: tplTagName,\n } as T;\n\n hostBrick.tplHostMetadata = {\n internalBricksByRef: new Map(),\n tplStateStoreId,\n proxy,\n };\n\n // Reversed proxies are used for expand storyboard before rendering page.\n const reversedProxies: TemplateHostContext[\"reversedProxies\"] = {\n properties: new Map(),\n slots: new Map(),\n // mergeBases: new Map(),\n };\n\n if (proxy?.properties) {\n for (const [from, to] of Object.entries(proxy.properties)) {\n let proxies = reversedProxies.properties.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.properties.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n if (proxy?.slots) {\n for (const [from, to] of Object.entries(proxy.slots)) {\n let proxies = reversedProxies.slots.get(to.ref);\n if (!proxies) {\n proxies = [];\n reversedProxies.slots.set(to.ref, proxies);\n }\n proxies.push({\n from,\n to,\n });\n }\n }\n\n const hostContext: TemplateHostContext = {\n reversedProxies,\n asyncHostPropertyEntries,\n externalSlots: childrenToSlots(externalChildren, originalExternalSlots) as\n | SlotsConfOfBricks\n | undefined,\n tplStateStoreId,\n hostBrick: hostBrick as TemplateHostBrick,\n usedSlots: new Set(),\n };\n\n newBrickConf.slots = {\n \"\": {\n type: \"bricks\",\n bricks: bricks.flatMap((item) =>\n expandBrickInTemplate(item, hostContext)\n ),\n },\n };\n\n return newBrickConf;\n}\n\nfunction expandBrickInTemplate(\n brickConfInTemplate: BrickConf,\n hostContext: TemplateHostContext,\n markSlotted?: () => void\n): BrickConf | BrickConf[] {\n // Ignore `if: null` to make `looseCheckIf` working.\n if (brickConfInTemplate.if === null) {\n delete brickConfInTemplate.if;\n }\n\n if (brickConfInTemplate.brick === \"slot\") {\n markSlotted?.();\n return replaceSlotWithSlottedBricks(\n brickConfInTemplate,\n hostContext,\n expandBrickInTemplate\n );\n }\n\n const {\n properties,\n slots: slotsInTemplate,\n children: childrenInTemplate,\n ...restBrickConfInTemplate\n } = brickConfInTemplate as BrickConfInTemplate;\n\n const transpiledSlots = childrenToSlots(\n childrenInTemplate,\n slotsInTemplate\n ) as SlotsConfInTemplate | undefined;\n\n let slotted = false;\n const markChild = () => {\n slotted = true;\n };\n const slots = Object.fromEntries<SlotConfOfBricks>(\n Object.entries(transpiledSlots ?? {}).map(([slotName, slotConf]) => [\n slotName,\n {\n type: \"bricks\",\n bricks: (slotConf.bricks ?? []).flatMap((item) =>\n expandBrickInTemplate(item, hostContext, markChild)\n ),\n },\n ])\n );\n\n return {\n ...restBrickConfInTemplate,\n properties: setupUseBrickInTemplate(properties, hostContext),\n slots,\n ...setupTemplateProxy(\n hostContext,\n restBrickConfInTemplate.ref,\n slots,\n slotted\n ),\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import { customTemplates } from "../../CustomTemplates.js";
2
+ import { isolatedTemplateRegistryMap } from "../IsolatedTemplates.js";
2
3
  export function getTplStateStore(_ref, using, extraInfo) {
3
4
  let {
4
5
  tplStateStoreId,
@@ -21,10 +22,18 @@ export function getTplHostElement(runtimeContext, using, extraInfo) {
21
22
  }
22
23
  return hostElement;
23
24
  }
24
- export function getTagNameOfCustomTemplate(brick, appId) {
25
+ export function getTagNameOfCustomTemplate(brick, runtimeContext) {
26
+ if (runtimeContext.isolatedRoot) {
27
+ const registry = isolatedTemplateRegistryMap.get(runtimeContext.isolatedRoot);
28
+ if (registry !== null && registry !== void 0 && registry.get(brick)) {
29
+ return brick;
30
+ }
31
+ return false;
32
+ }
33
+
25
34
  // When a template is registered by an app, it's namespace maybe missed.
26
- if (!brick.includes(".") && brick.startsWith("tpl-") && appId) {
27
- const tagName = `${appId}.${brick}`;
35
+ if (!brick.includes(".") && brick.startsWith("tpl-") && runtimeContext.app) {
36
+ const tagName = `${runtimeContext.app.id}.${brick}`;
28
37
  if (customTemplates.get(tagName)) {
29
38
  return tagName;
30
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["customTemplates","getTplStateStore","_ref","using","extraInfo","tplStateStoreId","tplStateStoreMap","Error","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,CACb,UAAUJ,KAAK,iCAAiCC,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,EACjE,CAAC;EACH;EACA,MAAMI,KAAK,GAAGF,gBAAgB,CAACG,GAAG,CAACJ,eAAe,CAAC;EACnD,IAAI,CAACG,KAAK,EAAE;IACV,MAAM,IAAID,KAAK,CACb,iDAAiDJ,KAAK,IACpDC,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,mDAEnB,CAAC;EACH;EACA,OAAOI,KAAK;AACd;AAEA,OAAO,SAASE,iBAAiBA,CAC/BC,cAA2C,EAC3CR,KAAa,EACbC,SAAkB,EACG;EACrB,MAAMI,KAAK,GAAGP,gBAAgB,CAACU,cAAc,EAAER,KAAK,EAAEC,SAAS,CAAC;EAChE,MAAMQ,WAAW,GAAGJ,KAAK,CAACK,SAAS,CAAEC,OAAO;EAC5C,IAAI,CAACF,WAAW,EAAE;IAChB,MAAM,IAAIL,KAAK,CACb,6CAA6CJ,KAAK,IAChDC,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,mDAEnB,CAAC;EACH;EACA,OAAOQ,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,MAAMG,OAAO,GAAG,GAAGH,KAAK,IAAID,KAAK,EAAE;IACnC,IAAIhB,eAAe,CAACS,GAAG,CAACW,OAAO,CAAC,EAAE;MAChC,OAAOA,OAAO;IAChB;EACF;EACA,IAAIpB,eAAe,CAACS,GAAG,CAACO,KAAK,CAAC,EAAE;IAC9B,OAAOA,KAAK;EACd;EACA,OAAO,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["customTemplates","isolatedTemplateRegistryMap","getTplStateStore","_ref","using","extraInfo","tplStateStoreId","tplStateStoreMap","Error","store","get","getTplHostElement","runtimeContext","hostElement","hostBrick","element","getTagNameOfCustomTemplate","brick","isolatedRoot","registry","includes","startsWith","app","tagName","id"],"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\";\nimport { isolatedTemplateRegistryMap } from \"../IsolatedTemplates.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 runtimeContext: Pick<RuntimeContext, \"app\" | \"isolatedRoot\">\n): false | string {\n if (runtimeContext.isolatedRoot) {\n const registry = isolatedTemplateRegistryMap.get(\n runtimeContext.isolatedRoot\n );\n if (registry?.get(brick)) {\n return brick;\n }\n return false;\n }\n\n // When a template is registered by an app, it's namespace maybe missed.\n if (!brick.includes(\".\") && brick.startsWith(\"tpl-\") && runtimeContext.app) {\n const tagName = `${runtimeContext.app.id}.${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;AAC1D,SAASC,2BAA2B,QAAQ,yBAAyB;AAOrE,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,CACb,UAAUJ,KAAK,iCAAiCC,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,EACjE,CAAC;EACH;EACA,MAAMI,KAAK,GAAGF,gBAAgB,CAACG,GAAG,CAACJ,eAAe,CAAC;EACnD,IAAI,CAACG,KAAK,EAAE;IACV,MAAM,IAAID,KAAK,CACb,iDAAiDJ,KAAK,IACpDC,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,mDAEnB,CAAC;EACH;EACA,OAAOI,KAAK;AACd;AAEA,OAAO,SAASE,iBAAiBA,CAC/BC,cAA2C,EAC3CR,KAAa,EACbC,SAAkB,EACG;EACrB,MAAMI,KAAK,GAAGP,gBAAgB,CAACU,cAAc,EAAER,KAAK,EAAEC,SAAS,CAAC;EAChE,MAAMQ,WAAW,GAAGJ,KAAK,CAACK,SAAS,CAAEC,OAAO;EAC5C,IAAI,CAACF,WAAW,EAAE;IAChB,MAAM,IAAIL,KAAK,CACb,6CAA6CJ,KAAK,IAChDC,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,mDAEnB,CAAC;EACH;EACA,OAAOQ,WAAW;AACpB;AAEA,OAAO,SAASG,0BAA0BA,CACxCC,KAAa,EACbL,cAA4D,EAC5C;EAChB,IAAIA,cAAc,CAACM,YAAY,EAAE;IAC/B,MAAMC,QAAQ,GAAGlB,2BAA2B,CAACS,GAAG,CAC9CE,cAAc,CAACM,YACjB,CAAC;IACD,IAAIC,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAET,GAAG,CAACO,KAAK,CAAC,EAAE;MACxB,OAAOA,KAAK;IACd;IACA,OAAO,KAAK;EACd;;EAEA;EACA,IAAI,CAACA,KAAK,CAACG,QAAQ,CAAC,GAAG,CAAC,IAAIH,KAAK,CAACI,UAAU,CAAC,MAAM,CAAC,IAAIT,cAAc,CAACU,GAAG,EAAE;IAC1E,MAAMC,OAAO,GAAG,GAAGX,cAAc,CAACU,GAAG,CAACE,EAAE,IAAIP,KAAK,EAAE;IACnD,IAAIjB,eAAe,CAACU,GAAG,CAACa,OAAO,CAAC,EAAE;MAChC,OAAOA,OAAO;IAChB;EACF;EACA,IAAIvB,eAAe,CAACU,GAAG,CAACO,KAAK,CAAC,EAAE;IAC9B,OAAOA,KAAK;EACd;EACA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ import { CustomTemplateRegistry } from "../CustomTemplates.js";
2
+ export const isolatedTemplateRegistryMap = new Map();
3
+ export function registerIsolatedTemplates(isolatedRoot, templates) {
4
+ let registry = isolatedTemplateRegistryMap.get(isolatedRoot);
5
+ if (!registry) {
6
+ registry = new CustomTemplateRegistry(true);
7
+ isolatedTemplateRegistryMap.set(isolatedRoot, registry);
8
+ }
9
+ registry.clearIsolatedRegistry();
10
+ if (Array.isArray(templates)) {
11
+ for (const tpl of templates) {
12
+ registry.define(tpl.name, tpl);
13
+ }
14
+ }
15
+ }
16
+ //# sourceMappingURL=IsolatedTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsolatedTemplates.js","names":["CustomTemplateRegistry","isolatedTemplateRegistryMap","Map","registerIsolatedTemplates","isolatedRoot","templates","registry","get","set","clearIsolatedRegistry","Array","isArray","tpl","define","name"],"sources":["../../../src/internal/IsolatedTemplates.ts"],"sourcesContent":["import type { CustomTemplate } from \"@next-core/types\";\nimport { CustomTemplateRegistry } from \"../CustomTemplates.js\";\n\nexport const isolatedTemplateRegistryMap = new Map<\n symbol,\n CustomTemplateRegistry\n>();\n\nexport function registerIsolatedTemplates(\n isolatedRoot: symbol,\n templates: CustomTemplate[] | undefined\n) {\n let registry = isolatedTemplateRegistryMap.get(isolatedRoot);\n if (!registry) {\n registry = new CustomTemplateRegistry(true);\n isolatedTemplateRegistryMap.set(isolatedRoot, registry);\n }\n registry.clearIsolatedRegistry();\n if (Array.isArray(templates)) {\n for (const tpl of templates) {\n registry.define(tpl.name, tpl);\n }\n }\n}\n"],"mappings":"AACA,SAASA,sBAAsB,QAAQ,uBAAuB;AAE9D,OAAO,MAAMC,2BAA2B,GAAG,IAAIC,GAAG,CAGhD,CAAC;AAEH,OAAO,SAASC,yBAAyBA,CACvCC,YAAoB,EACpBC,SAAuC,EACvC;EACA,IAAIC,QAAQ,GAAGL,2BAA2B,CAACM,GAAG,CAACH,YAAY,CAAC;EAC5D,IAAI,CAACE,QAAQ,EAAE;IACbA,QAAQ,GAAG,IAAIN,sBAAsB,CAAC,IAAI,CAAC;IAC3CC,2BAA2B,CAACO,GAAG,CAACJ,YAAY,EAAEE,QAAQ,CAAC;EACzD;EACAA,QAAQ,CAACG,qBAAqB,CAAC,CAAC;EAChC,IAAIC,KAAK,CAACC,OAAO,CAACN,SAAS,CAAC,EAAE;IAC5B,KAAK,MAAMO,GAAG,IAAIP,SAAS,EAAE;MAC3BC,QAAQ,CAACO,MAAM,CAACD,GAAG,CAACE,IAAI,EAAEF,GAAG,CAAC;IAChC;EACF;AACF","ignoreList":[]}
@@ -139,7 +139,7 @@ export async function renderBrick(returnNode, brickConf, _runtimeContext, render
139
139
  }
140
140
  }
141
141
  async function legacyRenderBrick(returnNode, brickConf, _runtimeContext, rendererContext, parentRoutes, menuRequestReturnNode, slotId, tplStack, initialTracker) {
142
- var _hooks$checkPermissio2, _runtimeContext$app;
142
+ var _hooks$checkPermissio2;
143
143
  const output = getEmptyRenderOutput();
144
144
  if (!brickConf.brick) {
145
145
  if (brickConf.template) {
@@ -409,7 +409,7 @@ async function legacyRenderBrick(returnNode, brickConf, _runtimeContext, rendere
409
409
  if (/\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {
410
410
  await catchLoad(loadBricksImperatively([brickName], getBrickPackages()), "brick", brickName, rendererContext.unknownBricks);
411
411
  }
412
- const tplTagName = getTagNameOfCustomTemplate(brickName, (_runtimeContext$app = runtimeContext.app) === null || _runtimeContext$app === void 0 ? void 0 : _runtimeContext$app.id);
412
+ const tplTagName = getTagNameOfCustomTemplate(brickName, runtimeContext);
413
413
  if (tplTagName) {
414
414
  var _tplStack$get;
415
415
  const tplCount = (_tplStack$get = tplStack.get(tplTagName)) !== null && _tplStack$get !== void 0 ? _tplStack$get : 0;