@next-core/runtime 1.59.3-alpha.0 → 1.59.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/getV2RuntimeFromDll.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +0 -1
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/compute/WidgetFunctions.js +0 -1
- package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +5 -1
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/esm/createRoot.js +2 -2
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/getV2RuntimeFromDll.js.map +1 -1
- package/dist/esm/internal/Renderer.js +1 -3
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/Runtime.js +2 -2
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/compute/WidgetFunctions.js +0 -1
- package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +5 -1
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/esm/themeAndMode.js +1 -2
- package/dist/esm/themeAndMode.js.map +1 -1
- package/dist/types/getV2RuntimeFromDll.d.ts +1 -0
- package/dist/types/tsdoc-metadata.json +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRoot.js","names":["i18n","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","unstable_createRoot","container","portal","_portal","scope","unknownBricks","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","previousRendererContext","renderId","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","ROOT","_app","_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","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 { 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\";\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\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 { portal: _portal, scope = \"fragment\", unknownBricks }: 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\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 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 } 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 }\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 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","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","unstable_createRoot","container","portal","_portal","scope","unknownBricks","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","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","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 { 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\";\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\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 { portal: _portal, scope = \"fragment\", unknownBricks }: 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\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 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 } 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 }\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 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getV2RuntimeFromDll.js","names":["getV2RuntimeFromDll","_window$BRICK_NEXT_VE","dll","window","BRICK_NEXT_VERSIONS","startsWith"],"sources":["../../src/getV2RuntimeFromDll.ts"],"sourcesContent":["import type {\n CustomTemplateConstructor,\n MetaI18n,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport type { NextHistory } from \"./history.js\";\nimport type { IfContainer } from \"./internal/compute/checkIf.js\";\n\ninterface DLL {\n (moduleId: \"tYg3\"): Kit;\n}\n\ninterface Kit {\n getRuntime(): {\n registerCustomTemplate(\n tagName: string,\n constructor: CustomTemplateConstructor\n ): void;\n registerCustomProcessor(\n processorFullName: string,\n processorFunc: Function\n ): void;\n registerWidgetFunctions(\n widgetId: string,\n functions: StoryboardFunction[],\n widgetVersion?: string\n ): void;\n registerWidgetI18n(widgetId: string, i18nData: MetaI18n): void;\n };\n getHistory(): NextHistory;\n looseCheckIfByTransform(ifContainer: IfContainer, data: unknown): boolean;\n SingleBrickAsComponentFactory: any;\n BrickAsComponentFactory: any;\n authenticate: any;\n getAuth: any;\n isLoggedIn: any;\n logout: any;\n}\n\nexport function getV2RuntimeFromDll() {\n const { dll } = window as { dll?: DLL };\n if (\n dll &&\n window.BRICK_NEXT_VERSIONS?.[\"brick-container\"]?.startsWith(\"2.\")\n ) {\n return dll(\"tYg3\");\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getV2RuntimeFromDll.js","names":["getV2RuntimeFromDll","_window$BRICK_NEXT_VE","dll","window","BRICK_NEXT_VERSIONS","startsWith"],"sources":["../../src/getV2RuntimeFromDll.ts"],"sourcesContent":["import type {\n CustomTemplateConstructor,\n MetaI18n,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport type { NextHistory } from \"./history.js\";\nimport type { IfContainer } from \"./internal/compute/checkIf.js\";\n\ninterface DLL {\n (moduleId: \"tYg3\"): Kit;\n}\n\ninterface Kit {\n getRuntime(): {\n registerCustomTemplate(\n tagName: string,\n constructor: CustomTemplateConstructor\n ): void;\n registerCustomProcessor(\n processorFullName: string,\n processorFunc: Function\n ): void;\n registerWidgetFunctions(\n widgetId: string,\n functions: StoryboardFunction[],\n widgetVersion?: string\n ): void;\n registerWidgetI18n(widgetId: string, i18nData: MetaI18n): void;\n };\n getHistory(): NextHistory;\n looseCheckIfByTransform(ifContainer: IfContainer, data: unknown): boolean;\n doTransform(data: unknown, to: unknown, options?: unknown): unknown;\n SingleBrickAsComponentFactory: any;\n BrickAsComponentFactory: any;\n authenticate: any;\n getAuth: any;\n isLoggedIn: any;\n logout: any;\n}\n\nexport function getV2RuntimeFromDll() {\n const { dll } = window as { dll?: DLL };\n if (\n dll &&\n window.BRICK_NEXT_VERSIONS?.[\"brick-container\"]?.startsWith(\"2.\")\n ) {\n return dll(\"tYg3\");\n }\n}\n"],"mappings":"AAwCA,OAAO,SAASA,mBAAmBA,CAAA,EAAG;EAAA,IAAAC,qBAAA;EACpC,MAAM;IAAEC;EAAI,CAAC,GAAGC,MAAuB;EACvC,IACED,GAAG,KAAAD,qBAAA,GACHE,MAAM,CAACC,mBAAmB,cAAAH,qBAAA,gBAAAA,qBAAA,GAA1BA,qBAAA,CAA6B,iBAAiB,CAAC,cAAAA,qBAAA,eAA/CA,qBAAA,CAAiDI,UAAU,CAAC,IAAI,CAAC,EACjE;IACA,OAAOH,GAAG,CAAC,MAAM,CAAC;EACpB;AACF","ignoreList":[]}
|
|
@@ -426,7 +426,6 @@ async function legacyRenderBrick(returnNode, brickConf, _runtimeContext, rendere
|
|
|
426
426
|
formData = await asyncComputeRealValue(formData, runtimeContext);
|
|
427
427
|
}
|
|
428
428
|
} else {
|
|
429
|
-
var _confProps;
|
|
430
429
|
if (runtimeContext.inUseBrick) {
|
|
431
430
|
// Keep v2 behavior for `useBrick`: treat `transform` as `properties`.
|
|
432
431
|
const transform = brickConf.transform;
|
|
@@ -440,7 +439,7 @@ async function legacyRenderBrick(returnNode, brickConf, _runtimeContext, rendere
|
|
|
440
439
|
}
|
|
441
440
|
}
|
|
442
441
|
}
|
|
443
|
-
|
|
442
|
+
confProps !== null && confProps !== void 0 ? confProps : confProps = brickConf.properties;
|
|
444
443
|
}
|
|
445
444
|
const trackingContextList = [];
|
|
446
445
|
const asyncPropertyEntries = asyncComputeRealPropertyEntries(confProps, runtimeContext, trackingContextList);
|
|
@@ -697,7 +696,6 @@ function loadMenu(menuConf, runtimeContext) {
|
|
|
697
696
|
return asyncComputeRealValue(menuConf, runtimeContext);
|
|
698
697
|
}
|
|
699
698
|
function mergeRenderOutput(output, newOutput) {
|
|
700
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
701
699
|
const {
|
|
702
700
|
blockingList,
|
|
703
701
|
node,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","isEqual","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","trackAfterInitial","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTPlExternalForEachSize","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","registerFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","setupRootRuntimeContext","setMatchedRoute","ErrorNode","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","menuRequestReturnNode","slotId","isIncremental","initialTracker","matched","output","getEmptyRenderOutput","menuRequestNode","return","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","iid","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","request","memoizeMenuRequestNode","usedProcessors","size","catchLoad","join","unknownBricks","newOutput","renderBricks","bricks","mergeRenderOutput","appendMenuRequestNode","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","arguments","length","legacyRenderBrick","errorBoundary","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","forEachSize","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","contextNames","stateNames","tracking","lowerLevelRenderControlNode","tracker","trackDataSource","_slots$slot","computedDataSource","propValue","slot","String","childrenToSlots","children","renderForEach","renderControlNode","_ref","_ref2","_ref2$node","tplStateStoreScope","formStateStoreScope","changedAfterInitial","disposes","listener","rerenderCount","rawOutput","uninitialized","scopedStores","postAsyncRender","dispose","tag","PLACEHOLDER","controlledOutput","onMount","onUnmount","lifeCycle","_runtimeBrick$dispose","renderId","currentRenderId","scopedRuntimeContext","createScopedRuntimeContext","reControlledOutput","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","leading","trailing","runtimeBrick","BRICK","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","formData","confProps","_brickConf$properties","_brickConf$properties2","properties","compute","_confProps","inUseBrick","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","events","portal","ref","loadProperties","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","routeSlotFromIndexToSlotId","entries","_ref3","childSlotId","slotConf","parentRoute","incrementalSubRoutes","performIncrementalRender","location","prevLocation","homepage","pathname","every","prevMatch","newMatch","params","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequestNodes","result","reCatch","childrenOutput","has","mergeSiblingRenderMenuRequest","child","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","sl","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n RouteConfOfBricks,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce, isEqual } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n trackAfterInitial,\n type InitialTracker,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTPlExternalForEachSize,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderReturnNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { registerFormRenderer } from \"./FormRenderer/registerFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport type { MatchResult } from \"./matchPath.js\";\nimport { setupRootRuntimeContext } from \"./setupRootRuntimeContext.js\";\nimport { setMatchedRoute } from \"./routeMatchedMap.js\";\nimport { ErrorNode } from \"./ErrorNode.js\";\n\nexport interface RenderOutput {\n node?: RenderChildNode;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n path?: string;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequestNode?: MenuRequestNode;\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderReturnNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n isIncremental?: boolean,\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n const menuRequestNode: MenuRequestNode = (output.menuRequestNode = {\n return: menuRequestReturnNode,\n });\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n output.path = matched.match.path;\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n\n if (route.iid) {\n setMatchedRoute(route.iid, matched.match);\n }\n\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n menuRequestNode.request = menuRequest;\n }\n\n if (!isIncremental) {\n rendererContext.memoizeMenuRequestNode(routes, menuRequestNode);\n }\n\n const usedProcessors = strictCollectMemberUsage(\n route.context,\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n let newOutput: RenderOutput;\n if (route.type === \"routes\") {\n newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId,\n undefined,\n initialTracker\n );\n } else {\n newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId,\n undefined,\n undefined,\n initialTracker\n );\n }\n\n mergeRenderOutput(output, newOutput);\n appendMenuRequestNode(menuRequestNode, newOutput.menuRequestNode);\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderReturnNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[],\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n setupRootRuntimeContext(bricks, runtimeContext, true);\n const output = getEmptyRenderOutput();\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack),\n initialTracker\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>(),\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n try {\n return await legacyRenderBrick(\n returnNode,\n brickConf,\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath,\n tplStack,\n initialTracker\n );\n } catch (error) {\n if (brickConf.errorBoundary) {\n // eslint-disable-next-line no-console\n console.error(\"Error caught by error boundary:\", error);\n return {\n node: await ErrorNode(error, returnNode),\n blockingList: [],\n };\n } else {\n throw error;\n }\n }\n}\n\nasync function legacyRenderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId: string | undefined,\n keyPath: number[],\n tplStack: Map<string, number>,\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: brickConf[symbol as typeof symbolForTplStateStoreId],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath,\n tplStack,\n initialTracker\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEach*` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n runtimeContext.forEachSize = brickConf[symbolForTPlExternalForEachSize];\n }\n\n const strict = isStrictMode(runtimeContext);\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n const { contextNames, stateNames } = getTracks(dataSource);\n const tracking = !!(contextNames || stateNames);\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext,\n tracker: InitialTracker,\n trackDataSource: boolean\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n if (trackDataSource) {\n trackAfterInitial(\n runtimeContext,\n [{ contextNames, stateNames, propValue: dataSource }],\n tracker\n );\n }\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return getEmptyRenderOutput();\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return getEmptyRenderOutput();\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n keyPath,\n tracker\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n keyPath,\n tracker\n );\n }\n }\n };\n\n type RenderControlNodeOptions =\n | {\n type: \"initial\";\n runtimeContext: RuntimeContext;\n tplStateStoreScope?: undefined;\n formStateStoreScope?: undefined;\n }\n | {\n type: \"rerender\";\n runtimeContext: RuntimeContext;\n tplStateStoreScope: DataStore<\"STATE\">[];\n formStateStoreScope: DataStore<\"FORM_STATE\">[];\n };\n\n const renderControlNode = async ({\n type,\n runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n }: RenderControlNodeOptions) => {\n let changedAfterInitial = false;\n const tracker: InitialTracker = {\n disposes: [],\n listener: () => {\n changedAfterInitial = true;\n },\n };\n let rerenderCount = 0;\n let rawOutput: RenderOutput;\n let uninitialized = true;\n\n // When perform an incremental sub-route render, for control nodes,\n // context maybe changed just after their data source being computed,\n // as well as props of their children bricks being computed, and before\n // bricks being mounted. Thus these changes may not take any effects.\n // So we need to track the context changes after the initial render,\n // and perform re-renders for these control nodes if necessary.\n while (uninitialized || changedAfterInitial) {\n changedAfterInitial = false;\n rawOutput = await lowerLevelRenderControlNode(\n runtimeContext,\n tracker,\n uninitialized && type === \"initial\"\n );\n\n // Changes may happen during `postAsyncRender`.\n if (!changedAfterInitial && type === \"rerender\") {\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(rawOutput, runtimeContext, [\n runtimeContext.ctxStore,\n ...scopedStores,\n ]);\n }\n\n tracker.disposes.forEach((dispose) => dispose());\n tracker.disposes.length = 0;\n uninitialized = false;\n // istanbul ignore next\n if (++rerenderCount > 10) {\n throw new Error(\n `Maximum rerender stack overflowed (iid: ${brickConf.iid})`\n );\n }\n }\n\n rawOutput!.node ??= {\n tag: RenderTag.PLACEHOLDER,\n return: returnNode,\n tracking,\n };\n return rawOutput!;\n };\n\n const controlledOutput = await renderControlNode({\n type: \"initial\",\n runtimeContext,\n });\n\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n if (tracking) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput = await renderControlNode({\n type: \"rerender\",\n runtimeContext: scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n });\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n reControlledOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of [...tplStateStoreScope, ...formStateStoreScope]) {\n store.mountAsyncData();\n }\n }\n };\n // Enable leading invocation, to keep tracking orders.\n const debouncedListener = debounce(listener, 0, {\n leading: true,\n trailing: true,\n });\n const runtimeBrick =\n returnNode.tag === RenderTag.BRICK ? returnNode : null;\n const disposes = runtimeBrick ? (runtimeBrick.disposes ??= []) : [];\n if (contextNames) {\n for (const contextName of contextNames) {\n disposes.push(\n runtimeContext.ctxStore.onChange(contextName, debouncedListener)\n );\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n disposes.push(tplStateStore.onChange(contextName, debouncedListener));\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n registerFormRenderer();\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n\n if (brickConf.properties?.compute) {\n formData = await asyncComputeRealValue(formData, runtimeContext);\n }\n } else {\n if (runtimeContext.inUseBrick) {\n // Keep v2 behavior for `useBrick`: treat `transform` as `properties`.\n const transform = (brickConf as { transform?: Record<string, unknown> })\n .transform;\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n brickConf\n );\n\n if (!strict) {\n confProps = {\n ...brickConf.properties,\n ...transform,\n };\n }\n }\n }\n confProps ??= brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n // Note: properties here has already been initialized.\n trackAfterInitial(runtimeContext, trackingContextList, initialTracker);\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n delete childRuntimeContext.forEachSize;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotFromIndexToSlotId = new Map<number, string>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n tplStack,\n undefined,\n initialTracker\n );\n }\n\n const parentRoute = parentRoutes[parentRoutes.length - 1] as\n | RouteConfOfBricks\n | undefined;\n if (parentRoute?.incrementalSubRoutes) {\n routeSlotFromIndexToSlotId.set(index, childSlotId);\n rendererContext.performIncrementalRender(\n slotConf,\n parentRoutes,\n async (location, prevLocation) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) => {\n let prevMatch: MatchResult | null;\n let newMatch: MatchResult | null;\n return (\n (prevMatch = matchRoute(\n route,\n homepage,\n prevLocation.pathname\n )) &&\n (newMatch = matchRoute(route, homepage, pathname)) &&\n (route !== parentRoute ||\n isEqual(prevMatch.params, newMatch.params))\n );\n })\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n true\n );\n\n // Do not ignore incremental rendering even if all sub-routes are missed.\n // Since parent route is matched.\n if (incrementalOutput.route) {\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n await postAsyncRender(\n incrementalOutput,\n scopedRuntimeContext,\n [scopedRuntimeContext.ctxStore, ...scopedStores]\n );\n }\n\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = await rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n // Even if all sub-routes missed, treat the incremental rendering as performed.\n return true;\n }\n );\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n undefined,\n initialTracker\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequestNode: undefined,\n };\n rendered.forEach((item, index) => {\n if (routeSlotFromIndexToSlotId.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n routeSlotFromIndexToSlotId.get(index),\n [],\n item.node,\n brick\n );\n }\n mergeRenderOutput(childrenOutput, item);\n mergeSiblingRenderMenuRequest(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n\n appendMenuRequestNode(\n menuRequestReturnNode,\n (output.menuRequestNode = childrenOutput.menuRequestNode)\n );\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderReturnNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[],\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const size = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n forEachSize: size,\n },\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath.concat(i * size + j),\n tplStack && new Map(tplStack),\n initialTracker\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequestNode, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nfunction mergeSiblingRenderMenuRequest(\n output: RenderOutput,\n newOutput: RenderOutput\n) {\n const menuRequestNode = newOutput.menuRequestNode;\n if (menuRequestNode) {\n if (output.menuRequestNode) {\n let last = output.menuRequestNode;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n output.menuRequestNode = menuRequestNode;\n }\n }\n}\n\nfunction appendMenuRequestNode(\n menuRequestReturnNode: MenuRequestNode,\n menuRequestNode: MenuRequestNode | undefined\n) {\n if (!menuRequestNode) {\n return;\n }\n if (menuRequestReturnNode.child) {\n let last = menuRequestReturnNode.child;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n menuRequestReturnNode.child = menuRequestNode;\n }\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return { blockingList: [] };\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const { slot: sl, ...child } of children) {\n const slot = sl ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load %s \"%s\" failed:`, type, name, e);\n })\n : promise;\n}\n"],"mappings":"AAWA,SACEA,uBAAuB,EACvBC,qBAAqB,EACrBC,sBAAsB,EACtBC,0BAA0B,EAC1BC,UAAU,EACVC,SAAS,QACJ,mBAAmB;AAC1B,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,wBAAwB,QAAQ,6BAA6B;AACtE,SAASC,QAAQ,EAAEC,OAAO,QAAQ,QAAQ;AAC1C,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SACEC,+BAA+B,EAC/BC,wBAAwB,QACnB,oCAAoC;AAC3C,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,qBAAqB,QAAQ,+BAA+B;AACrE,SAEEC,uBAAuB,EACvBC,iBAAiB,QAEZ,sCAAsC;AAE7C,SAASC,UAAU,EAAEC,WAAW,QAAQ,kBAAkB;AAC1D,SACEC,mCAAmC,EACnCC,gCAAgC,EAChCC,+BAA+B,EAC/BC,+BAA+B,EAC/BC,wBAAwB,QACnB,gCAAgC;AACvC,SAASC,oBAAoB,QAAQ,2CAA2C;AAShF,SACEC,0BAA0B,EAC1BC,gBAAgB,QACX,4BAA4B;AACnC,SAASC,eAAe,QAAQ,uBAAuB;AAEvD,SAASC,gBAAgB,EAAEC,KAAK,QAAQ,cAAc;AACtD,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,SAAS,QAAQ,wBAAwB;AAClD,SAASC,YAAY,EAAEC,mBAAmB,QAAQ,oBAAoB;AACtE,SACEC,aAAa,EAEbC,yBAAyB,QACpB,6BAA6B;AACpC,SAASC,kBAAkB,QAAQ,sCAAsC;AACzE,SAASC,oBAAoB,QAAQ,wCAAwC;AAC7E,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,kBAAkB,QAAQ,uBAAuB;AAE1D,SAASC,aAAa,QAAQ,sBAAsB;AAEpD,SAASC,eAAe,QAAQ,oBAAoB;AAEpD,SAASC,uBAAuB,QAAQ,8BAA8B;AACtE,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,SAAS,QAAQ,gBAAgB;AAgB1C,OAAO,eAAeC,YAAYA,CAChCC,UAA4B,EAC5BC,MAAmB,EACnBC,eAA+B,EAC/BC,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAAe,EACfC,aAAuB,EACvBC,cAA+B,EACR;EACvB,MAAMC,OAAO,GAAG,MAAMrC,WAAW,CAAC6B,MAAM,EAAEC,eAAe,CAAC;EAC1D,MAAMQ,MAAM,GAAGC,oBAAoB,CAAC,CAAC;EACrC,MAAMC,eAAgC,GAAIF,MAAM,CAACE,eAAe,GAAG;IACjEC,MAAM,EAAER;EACV,CAAE;EACF,QAAQI,OAAO;IACb,KAAK,QAAQ;MACX;IACF,KAAK,iBAAiB;MACpBC,MAAM,CAACI,eAAe,GAAG,IAAI;MAC7B;IACF;MAAS;QAAA,IAAAC,qBAAA;QACP,MAAMC,KAAK,GAAIN,MAAM,CAACM,KAAK,GAAGP,OAAO,CAACO,KAAM;QAC5CN,MAAM,CAACO,IAAI,GAAGR,OAAO,CAACS,KAAK,CAACD,IAAI;QAChC,MAAME,cAAc,GAAG;UACrB,GAAGjB,eAAe;UAClBgB,KAAK,EAAET,OAAO,CAACS;QACjB,CAAC;QAED,IAAIF,KAAK,CAACI,GAAG,EAAE;UACbvB,eAAe,CAACmB,KAAK,CAACI,GAAG,EAAEX,OAAO,CAACS,KAAK,CAAC;QAC3C;QAEA,IAAIX,aAAa,EAAE;UACjBY,cAAc,CAACE,QAAQ,CAACC,mBAAmB,CAACrB,MAAM,CAAC;QACrD;QACA,MAAMsB,SAAS,GAAGnB,YAAY,CAACoB,MAAM,CAACR,KAAK,CAAC;QAC5CG,cAAc,CAACE,QAAQ,CAACI,MAAM,CAC5BT,KAAK,CAACU,OAAO,EACbP,cAAc,EACdQ,SAAS,EACTJ,SACF,CAAC;QACDJ,cAAc,CAACS,0BAA0B,CAACC,IAAI,CAC5C9C,KAAK,aAALA,KAAK,gBAAAgC,qBAAA,GAALhC,KAAK,CAAE+C,gBAAgB,cAAAf,qBAAA,uBAAvBA,qBAAA,CAAyBgB,kCAAkC,CACzDf,KAAK,EACJgB,KAAK,IAAKhE,qBAAqB,CAACgE,KAAK,EAAEb,cAAc,CACxD,CACF,CAAC;;QAED;QACA;QACA,MAAM;UAAEc;QAAc,CAAC,GAAGjB,KAAqC;QAC/D,IAAIkB,KAAK,CAACC,OAAO,CAACF,aAAa,CAAC,EAAE;UAChCvB,MAAM,CAAC0B,YAAY,CAACP,IAAI,CACtB1E,sBAAsB,CAAC8E,aAAa,EAAEnD,gBAAgB,CAAC,CAAC,CAC1D,CAAC;QACH;QAEA,IAAIkC,KAAK,CAACqB,IAAI,KAAK,UAAU,EAAE;UAC7B,IAAIC,UAAmB;UACvB,IAAI,OAAOtB,KAAK,CAACuB,QAAQ,KAAK,QAAQ,EAAE;YACtCD,UAAU,GAAG,MAAMtE,qBAAqB,CACtCgD,KAAK,CAACuB,QAAQ,EACdpB,cACF,CAAC;UACH,CAAC,MAAM;YACL,MAAMqB,QAAQ,GAAI,MAAMzE,WAAW,CACjC;cACE0E,SAAS,EAAE,UAAU;cACrB,GAAGzB,KAAK,CAACuB;YACX,CAAC,EACDpB,cACF,CAA4B;YAC5BmB,UAAU,GAAGE,QAAQ,CAACD,QAAQ;UAChC;UACA,IAAI,OAAOD,UAAU,KAAK,QAAQ,EAAE;YAClC;YACAI,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAEL,UAAU,CAAC;YACxD,MAAM,IAAIM,KAAK,CACb,uCAAuC,OAAON,UAAU,EAC1D,CAAC;UACH;UACA5B,MAAM,CAAC6B,QAAQ,GAAG;YAAEtB,IAAI,EAAEqB;UAAW,CAAC;QACxC,CAAC,MAAM;UACL,MAAMO,WAAW,GAAGC,QAAQ,CAAC9B,KAAK,CAAC+B,IAAI,EAAE5B,cAAc,CAAC;UACxD,IAAI0B,WAAW,EAAE;YACfjC,eAAe,CAACoC,OAAO,GAAGH,WAAW;UACvC;UAEA,IAAI,CAACtC,aAAa,EAAE;YAClBJ,eAAe,CAAC8C,sBAAsB,CAAChD,MAAM,EAAEW,eAAe,CAAC;UACjE;UAEA,MAAMsC,cAAc,GAAGzF,wBAAwB,CAC7CuD,KAAK,CAACU,OAAO,EACb,YAAY,EACZ,CACF,CAAC;UACD,IAAIwB,cAAc,CAACC,IAAI,GAAG,CAAC,EAAE;YAC3BzC,MAAM,CAAC0B,YAAY,CAACP,IAAI,CACtBuB,SAAS,CACPhG,0BAA0B,CAAC8F,cAAc,EAAEpE,gBAAgB,CAAC,CAAC,CAAC,EAC9D,YAAY,EACZ,CAAC,GAAGoE,cAAc,CAAC,CAACG,IAAI,CAAC,IAAI,CAAC,EAC9BlD,eAAe,CAACmD,aAClB,CACF,CAAC;UACH;UAEA,IAAIC,SAAuB;UAC3B,IAAIvC,KAAK,CAACqB,IAAI,KAAK,QAAQ,EAAE;YAC3BkB,SAAS,GAAG,MAAMxD,YAAY,CAC5BC,UAAU,EACVgB,KAAK,CAACf,MAAM,EACZkB,cAAc,EACdhB,eAAe,EACfoB,SAAS,EACTX,eAAe,EACfN,MAAM,EACNqB,SAAS,EACTnB,cACF,CAAC;UACH,CAAC,MAAM;YACL+C,SAAS,GAAG,MAAMC,YAAY,CAC5BxD,UAAU,EACVgB,KAAK,CAACyC,MAAM,EACZtC,cAAc,EACdhB,eAAe,EACfoB,SAAS,EACTX,eAAe,EACfN,MAAM,EACNqB,SAAS,EACTA,SAAS,EACTnB,cACF,CAAC;UACH;UAEAkD,iBAAiB,CAAChD,MAAM,EAAE6C,SAAS,CAAC;UACpCI,qBAAqB,CAAC/C,eAAe,EAAE2C,SAAS,CAAC3C,eAAe,CAAC;QACnE;MACF;EACF;EAEA,OAAOF,MAAM;AACf;AAEA,OAAO,eAAe8C,YAAYA,CAChCxD,UAA4B,EAC5ByD,MAAmB,EACnBtC,cAA8B,EAC9BhB,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAAe,EACfsD,QAA8B,EAC9BC,OAAkB,EAClBrD,cAA+B,EACR;EACvBZ,uBAAuB,CAAC6D,MAAM,EAAEtC,cAAc,EAAE,IAAI,CAAC;EACrD,MAAMT,MAAM,GAAGC,oBAAoB,CAAC,CAAC;EACrC,MAAMmD,KAAK,GAAGD,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,EAAE;EAC3B;EACA,MAAME,QAAQ,GAAG,MAAMC,OAAO,CAACC,GAAG,CAChCR,MAAM,CAACS,GAAG,CAAC,CAACC,SAAS,EAAEC,KAAK,KAC1BC,WAAW,CACTrE,UAAU,EACVmE,SAAS,EACThD,cAAc,EACdhB,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNwD,KAAK,CAACtC,MAAM,CAAC4C,KAAK,CAAC,EACnBR,QAAQ,IAAI,IAAIU,GAAG,CAACV,QAAQ,CAAC,EAC7BpD,cACF,CACF,CACF,CAAC;EAEDuD,QAAQ,CAACQ,OAAO,CAAC,CAACC,IAAI,EAAEJ,KAAK,KAAK;IAChC,IAAII,IAAI,CAACC,mBAAmB,EAAE;MAC5B;MACAtE,eAAe,CAACuE,OAAO,CACrBpE,MAAM,EACNwD,KAAK,CAACtC,MAAM,CAAC4C,KAAK,CAAC,EACnBI,IAAI,CAACG,IAAI,EACT3E,UACF,CAAC;IACH;IACA0D,iBAAiB,CAAChD,MAAM,EAAE8D,IAAI,CAAC;EACjC,CAAC,CAAC;EAEF,OAAO9D,MAAM;AACf;AAEA,OAAO,eAAe2D,WAAWA,CAC/BrE,UAA4B,EAC5BmE,SAAsC,EACtCjE,eAA+B,EAC/BC,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAAe,EAIQ;EAAA,IAHvBuD,OAAiB,GAAAe,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,EAAE;EAAA,IACtBhB,QAAQ,GAAAgB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,IAAIN,GAAG,CAAiB,CAAC;EAAA,IACpC9D,cAA+B,GAAAoE,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAjD,SAAA;EAE/B,IAAI;IACF,OAAO,MAAMmD,iBAAiB,CAC5B9E,UAAU,EACVmE,SAAS,EACTjE,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNuD,OAAO,EACPD,QAAQ,EACRpD,cACF,CAAC;EACH,CAAC,CAAC,OAAOmC,KAAK,EAAE;IACd,IAAIwB,SAAS,CAACY,aAAa,EAAE;MAC3B;MACArC,OAAO,CAACC,KAAK,CAAC,iCAAiC,EAAEA,KAAK,CAAC;MACvD,OAAO;QACLgC,IAAI,EAAE,MAAM7E,SAAS,CAAC6C,KAAK,EAAE3C,UAAU,CAAC;QACxCoC,YAAY,EAAE;MAChB,CAAC;IACH,CAAC,MAAM;MACL,MAAMO,KAAK;IACb;EACF;AACF;AAEA,eAAemC,iBAAiBA,CAC9B9E,UAA4B,EAC5BmE,SAAsC,EACtCjE,eAA+B,EAC/BC,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAA0B,EAC1BuD,OAAiB,EACjBD,QAA6B,EAC7BpD,cAA+B,EACR;EAAA,IAAAwE,sBAAA,EAAAC,mBAAA;EACvB,MAAMvE,MAAM,GAAGC,oBAAoB,CAAC,CAAC;EAErC,IAAI,CAACwD,SAAS,CAACe,KAAK,EAAE;IACpB,IAAKf,SAAS,CAA2BgB,QAAQ,EAAE;MACjD;MACAzC,OAAO,CAACC,KAAK,CAAC,qCAAqC,EAAEwB,SAAS,CAAC;IACjE,CAAC,MAAM;MACL;MACAzB,OAAO,CAACC,KAAK,CAAC,gBAAgB,EAAEwB,SAAS,CAAC;IAC5C;IACA,OAAOzD,MAAM;EACf;;EAEA;EACA;EACA,MAAM;IAAE0E,EAAE,EAAEC,OAAO;IAAEC,mBAAmB;IAAE,GAAGC;EAAc,CAAC,GAAGpB,SAAS;EACxE,IAAIqB,qBAAqB,CAACH,OAAO,CAAC,EAAE;IAClC,OAAOhB,WAAW,CAChBrE,UAAU,EACV;MACEkF,KAAK,EAAE,KAAK;MACZO,UAAU,EAAEJ,OAAO;MACnB;MACAC,mBAAmB;MACnBI,KAAK,EAAE;QACL,EAAE,EAAE;UACFrD,IAAI,EAAE,QAAQ;UACdoB,MAAM,EAAE,CAAC8B,aAAa;QACxB;MACF,CAAC;MACD;MACA,GAAGI,MAAM,CAACC,qBAAqB,CAACzB,SAAS,CAAC,CAAC0B,MAAM,CAC/C,CAACC,GAAG,EAAEC,MAAM,MAAM;QAChB,GAAGD,GAAG;QACN,CAACC,MAAM,GAAG5B,SAAS,CAAC4B,MAAM;MAC5B,CAAC,CAAC,EACF,CAAC,CACH;IACF,CAAC,EACD7F,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNuD,OAAO,EACPD,QAAQ,EACRpD,cACF,CAAC;EACH;EAEA,MAAMwF,eAAe,GAAG7B,SAAS,CAAC1F,wBAAwB,CAAC;EAC3D,MAAMwH,gBAAgB,GAAG9B,SAAS,CAAC9E,yBAAyB,CAAC;EAC7D,MAAM8B,cAAc,GAAG;IACrB,GAAGjB,eAAe;IAClB8F,eAAe;IACfC;EACF,CAAC;EAED,IAAIzI,cAAc,CAAC2G,SAAS,EAAE5F,+BAA+B,CAAC,EAAE;IAC9D;IACA4C,cAAc,CAAC+E,WAAW,GAAG/B,SAAS,CAAC5F,+BAA+B,CAAC;IACvE4C,cAAc,CAACgF,YAAY,GAAGhC,SAAS,CAAC7F,gCAAgC,CAAC;IACzE6C,cAAc,CAACiF,WAAW,GAAGjC,SAAS,CAAC3F,+BAA+B,CAAC;EACzE;EAEA,MAAM6H,MAAM,GAAGnH,YAAY,CAACiC,cAAc,CAAC;EAC3C,MAAM;IAAEO;EAAQ,CAAC,GAAGyC,SAAwC;EAC5D;EACA,IAAIjC,KAAK,CAACC,OAAO,CAACT,OAAO,CAAC,IAAIA,OAAO,CAACmD,MAAM,GAAG,CAAC,EAAE;IAChD1F,mBAAmB,CACjBkH,MAAM,EACN,4BAA4B,EAC5B,mBAAmB,EACnBlC,SACF,CAAC;IACD,IAAI,CAACkC,MAAM,EAAE;MACXlF,cAAc,CAACE,QAAQ,CAACI,MAAM,CAACC,OAAO,EAAEP,cAAc,CAAC;IACzD;EACF;EAEAA,cAAc,CAACS,0BAA0B,CAACC,IAAI,CAC5C9C,KAAK,aAALA,KAAK,gBAAAiG,sBAAA,GAALjG,KAAK,CAAE+C,gBAAgB,cAAAkD,sBAAA,uBAAvBA,sBAAA,CAAyBjD,kCAAkC,CACzDoC,SAAS,EACRnC,KAAK,IAAKhE,qBAAqB,CAACgE,KAAK,EAAEb,cAAc,CACxD,CACF,CAAC;EAED,IAAI,EAAE,MAAMvD,iBAAiB,CAACuG,SAAS,EAAEhD,cAAc,CAAC,CAAC,EAAE;IACzD,OAAOT,MAAM;EACf;EAEA,MAAM4F,SAAS,GAAGnC,SAAS,CAACe,KAAK;EACjC,IAAIoB,SAAS,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;IAAA,IAAAC,oBAAA;IAC7BC,uBAAuB,CAACH,SAAS,CAAC;IAElC,MAAM;MAAEb;IAAW,CAAC,GAAGtB,SAAS;IAChC,MAAM;MAAEuC,YAAY;MAAEC;IAAW,CAAC,GAAG1H,SAAS,CAACwG,UAAU,CAAC;IAC1D,MAAMmB,QAAQ,GAAG,CAAC,EAAEF,YAAY,IAAIC,UAAU,CAAC;IAE/C,MAAME,2BAA2B,GAAG,MAAAA,CAClC1F,cAA8B,EAC9B2F,OAAuB,EACvBC,eAAwB,KACrB;MAAA,IAAAC,WAAA;MACH;MACA,MAAMC,kBAAkB,GAAG,MAAMjJ,qBAAqB,CACpDyH,UAAU,EACVtE,cACF,CAAC;MAED,IAAI4F,eAAe,EAAE;QACnB7I,iBAAiB,CACfiD,cAAc,EACd,CAAC;UAAEuF,YAAY;UAAEC,UAAU;UAAEO,SAAS,EAAEzB;QAAW,CAAC,CAAC,EACrDqB,OACF,CAAC;MACH;;MAEA;MACA,MAAMK,IAAI,GACRb,SAAS,KAAK,UAAU,GACpB,EAAE,GACFA,SAAS,KAAK,SAAS,GACrBc,MAAM,CAACH,kBAAkB,CAAC,GAC1BA,kBAAkB,GAChB,EAAE,GACF,MAAM;;MAEhB;MACA,MAAMvB,KAAK,GAAG2B,eAAe,CAAClD,SAAS,CAACmD,QAAQ,EAAEnD,SAAS,CAACuB,KAAK,CAAC;;MAElE;MACA,MAAMjC,MAAM,GACViC,KAAK,IACLlI,cAAc,CAACkI,KAAK,EAAEyB,IAAI,CAAC,MAAAH,WAAA,GAC1BtB,KAAK,CAACyB,IAAI,CAAC,cAAAH,WAAA,uBAAZA,WAAA,CAAmCvD,MAAM;MAE3C,IAAI,CAACvB,KAAK,CAACC,OAAO,CAACsB,MAAM,CAAC,EAAE;QAC1B,OAAO9C,oBAAoB,CAAC,CAAC;MAC/B;MAEA,QAAQ2F,SAAS;QACf,KAAK,UAAU;UAAE;YACf,IAAI,CAACpE,KAAK,CAACC,OAAO,CAAC8E,kBAAkB,CAAC,EAAE;cACtC,OAAOtG,oBAAoB,CAAC,CAAC;YAC/B;YACA,OAAO4G,aAAa,CAClBvH,UAAU,EACViH,kBAAkB,EAClBxD,MAAM,EACNtC,cAAc,EACdhB,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNsD,QAAQ,EACRC,OAAO,EACPiD,OACF,CAAC;UACH;QACA,KAAK,KAAK;QACV,KAAK,SAAS;UAAE;YACd,OAAOtD,YAAY,CACjBxD,UAAU,EACVyD,MAAM,EACNtC,cAAc,EACdhB,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNsD,QAAQ,EACRC,OAAO,EACPiD,OACF,CAAC;UACH;MACF;IACF,CAAC;IAgBD,MAAMU,iBAAiB,GAAG,MAAAC,IAAA,IAKM;MAAA,IAAAC,KAAA,EAAAC,UAAA;MAAA,IALC;QAC/BtF,IAAI;QACJlB,cAAc;QACdyG,kBAAkB;QAClBC;MACwB,CAAC,GAAAJ,IAAA;MACzB,IAAIK,mBAAmB,GAAG,KAAK;MAC/B,MAAMhB,OAAuB,GAAG;QAC9BiB,QAAQ,EAAE,EAAE;QACZC,QAAQ,EAAEA,CAAA,KAAM;UACdF,mBAAmB,GAAG,IAAI;QAC5B;MACF,CAAC;MACD,IAAIG,aAAa,GAAG,CAAC;MACrB,IAAIC,SAAuB;MAC3B,IAAIC,aAAa,GAAG,IAAI;;MAExB;MACA;MACA;MACA;MACA;MACA;MACA,OAAOA,aAAa,IAAIL,mBAAmB,EAAE;QAC3CA,mBAAmB,GAAG,KAAK;QAC3BI,SAAS,GAAG,MAAMrB,2BAA2B,CAC3C1F,cAAc,EACd2F,OAAO,EACPqB,aAAa,IAAI9F,IAAI,KAAK,SAC5B,CAAC;;QAED;QACA,IAAI,CAACyF,mBAAmB,IAAIzF,IAAI,KAAK,UAAU,EAAE;UAC/C,MAAM+F,YAAY,GAAG,CAAC,GAAGR,kBAAkB,EAAE,GAAGC,mBAAmB,CAAC;UACpE,MAAMQ,eAAe,CAACH,SAAS,EAAE/G,cAAc,EAAE,CAC/CA,cAAc,CAACE,QAAQ,EACvB,GAAG+G,YAAY,CAChB,CAAC;QACJ;QAEAtB,OAAO,CAACiB,QAAQ,CAACxD,OAAO,CAAE+D,OAAO,IAAKA,OAAO,CAAC,CAAC,CAAC;QAChDxB,OAAO,CAACiB,QAAQ,CAAClD,MAAM,GAAG,CAAC;QAC3BsD,aAAa,GAAG,KAAK;QACrB;QACA,IAAI,EAAEF,aAAa,GAAG,EAAE,EAAE;UACxB,MAAM,IAAIrF,KAAK,CACb,2CAA2CuB,SAAS,CAAC/C,GAAG,GAC1D,CAAC;QACH;MACF;MAEA,CAAAuG,UAAA,IAAAD,KAAA,GAAAQ,SAAS,EAAEvD,IAAI,cAAAgD,UAAA,cAAAA,UAAA,GAAfD,KAAA,CAAW/C,IAAI,GAAK;QAClB4D,GAAG,EAAEvJ,SAAS,CAACwJ,WAAW;QAC1B3H,MAAM,EAAEb,UAAU;QAClB4G;MACF,CAAC;MACD,OAAOsB,SAAS;IAClB,CAAC;IAED,MAAMO,gBAAgB,GAAG,MAAMjB,iBAAiB,CAAC;MAC/CnF,IAAI,EAAE,SAAS;MACflB;IACF,CAAC,CAAC;IAEF,MAAM;MAAEuH,OAAO;MAAEC;IAAU,CAAC,IAAAnC,oBAAA,GAAGrC,SAAS,CAACyE,SAAS,cAAApC,oBAAA,cAAAA,oBAAA,GAAI,CAAC,CAAC;IAExD,IAAII,QAAQ,EAAE;MAAA,IAAAiC,qBAAA;MACZJ,gBAAgB,CAAChE,mBAAmB,GAAG,IAAI;MAC3C,IAAIqE,QAAQ,GAAG,CAAC;MAChB,MAAMd,QAAQ,GAAG,MAAAA,CAAA,KAAY;QAC3B,MAAMe,eAAe,GAAG,EAAED,QAAQ;QAClC,MAAM,CAACE,oBAAoB,EAAEpB,kBAAkB,EAAEC,mBAAmB,CAAC,GACnEoB,0BAA0B,CAAC9H,cAAc,CAAC;QAE5C,MAAM+H,kBAAkB,GAAG,MAAM1B,iBAAiB,CAAC;UACjDnF,IAAI,EAAE,UAAU;UAChBlB,cAAc,EAAE6H,oBAAoB;UACpCpB,kBAAkB;UAClBC;QACF,CAAC,CAAC;;QAEF;QACA,IAAIiB,QAAQ,KAAKC,eAAe,EAAE;UAChC,IAAIJ,SAAS,EAAE;YACbhJ,eAAe,CACbgJ,SAAS,EACTxH,cACF,CAAC,CAAC,IAAIgI,WAAW,CAAC,SAAS,EAAE;cAAEC,MAAM,EAAE;gBAAEC,QAAQ,EAAE;cAAK;YAAE,CAAC,CAAC,CAAC;UAC/D;UAEAlJ,eAAe,CAACmJ,QAAQ,CACtBhJ,MAAM,EACNuD,OAAO,EACPqF,kBAAkB,CAACvE,IAAI,EACvB3E,UACF,CAAC;UAED,IAAI0I,OAAO,EAAE;YACX/I,eAAe,CACb+I,OAAO,EACPM,oBACF,CAAC,CAAC,IAAIG,WAAW,CAAC,OAAO,EAAE;cAAEC,MAAM,EAAE;gBAAEC,QAAQ,EAAE;cAAK;YAAE,CAAC,CAAC,CAAC;UAC7D;UAEA,KAAK,MAAME,KAAK,IAAI,CAAC,GAAG3B,kBAAkB,EAAE,GAAGC,mBAAmB,CAAC,EAAE;YACnE0B,KAAK,CAACC,cAAc,CAAC,CAAC;UACxB;QACF;MACF,CAAC;MACD;MACA,MAAMC,iBAAiB,GAAG/L,QAAQ,CAACsK,QAAQ,EAAE,CAAC,EAAE;QAC9C0B,OAAO,EAAE,IAAI;QACbC,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,MAAMC,YAAY,GAChB5J,UAAU,CAACuI,GAAG,KAAKvJ,SAAS,CAAC6K,KAAK,GAAG7J,UAAU,GAAG,IAAI;MACxD,MAAM+H,QAAQ,GAAG6B,YAAY,IAAAf,qBAAA,GAAIe,YAAY,CAAC7B,QAAQ,cAAAc,qBAAA,cAAAA,qBAAA,GAArBe,YAAY,CAAC7B,QAAQ,GAAK,EAAE,GAAI,EAAE;MACnE,IAAIrB,YAAY,EAAE;QAChB,KAAK,MAAMoD,WAAW,IAAIpD,YAAY,EAAE;UACtCqB,QAAQ,CAAClG,IAAI,CACXV,cAAc,CAACE,QAAQ,CAAC0I,QAAQ,CAACD,WAAW,EAAEL,iBAAiB,CACjE,CAAC;QACH;MACF;MACA,IAAI9C,UAAU,EAAE;QACd,KAAK,MAAMmD,WAAW,IAAInD,UAAU,EAAE;UACpC,MAAMqD,aAAa,GAAGpL,gBAAgB,CACpCuC,cAAc,EACd,OAAO,EACP,MAAMsE,UAAU,GAClB,CAAC;UACDsC,QAAQ,CAAClG,IAAI,CAACmI,aAAa,CAACD,QAAQ,CAACD,WAAW,EAAEL,iBAAiB,CAAC,CAAC;QACvE;MACF;IACF;IAEA,IAAIf,OAAO,EAAE;MACXvI,eAAe,CAAC8J,0BAA0B,CAAC,SAAS,EAAE,MAAM;QAC1DtK,eAAe,CACb+I,OAAO,EACPvH,cACF,CAAC,CAAC,IAAIgI,WAAW,CAAC,OAAO,EAAE;UAAEC,MAAM,EAAE;YAAEC,QAAQ,EAAE;UAAM;QAAE,CAAC,CAAC,CAAC;MAC9D,CAAC,CAAC;IACJ;IAEA,IAAIV,SAAS,EAAE;MACbxI,eAAe,CAAC8J,0BAA0B,CAAC,WAAW,EAAE,MAAM;QAC5DtK,eAAe,CACbgJ,SAAS,EACTxH,cACF,CAAC,CAAC,IAAIgI,WAAW,CAAC,SAAS,EAAE;UAAEC,MAAM,EAAE;YAAEC,QAAQ,EAAE;UAAM;QAAE,CAAC,CAAC,CAAC;MAChE,CAAC,CAAC;IACJ;IAEA,OAAOZ,gBAAgB;EACzB;;EAEA;EACA,IAAI,QAAQ,CAACyB,IAAI,CAAC5D,SAAS,CAAC,IAAI,CAACzH,eAAe,CAACsL,GAAG,CAAC7D,SAAS,CAAC,EAAE;IAC/D,MAAMlD,SAAS,CACbjG,sBAAsB,CAAC,CAACmJ,SAAS,CAAC,EAAExH,gBAAgB,CAAC,CAAC,CAAC,EACvD,OAAO,EACPwH,SAAS,EACTnG,eAAe,CAACmD,aAClB,CAAC;EACH;EAEA,MAAM8G,UAAU,GAAGzL,0BAA0B,CAC3C2H,SAAS,GAAArB,mBAAA,GACT9D,cAAc,CAACkJ,GAAG,cAAApF,mBAAA,uBAAlBA,mBAAA,CAAoBqF,EACtB,CAAC;EAED,IAAIF,UAAU,EAAE;IAAA,IAAAG,aAAA;IACd,MAAMC,QAAQ,IAAAD,aAAA,GAAG3G,QAAQ,CAACuG,GAAG,CAACC,UAAU,CAAC,cAAAG,aAAA,cAAAA,aAAA,GAAI,CAAC;IAC9C,IAAIC,QAAQ,IAAI,EAAE,EAAE;MAClB,MAAM,IAAI5H,KAAK,CACb,8CAA8CwH,UAAU,GAC1D,CAAC;IACH;IACAxG,QAAQ,CAAC6G,GAAG,CAACL,UAAU,EAAEI,QAAQ,GAAG,CAAC,CAAC;EACxC,CAAC,MAAM,IAAIlE,SAAS,CAACoE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACC,cAAc,CAACR,GAAG,CAAC7D,SAAS,CAAC,EAAE;IACpE,IAAIA,SAAS,KAAKlH,aAAa,EAAE;MAC/BG,oBAAoB,CAAC,CAAC;IACxB,CAAC,MAAM;MACLmB,MAAM,CAAC0B,YAAY,CAACP,IAAI,CACtBuB,SAAS,CACPnG,uBAAuB,CAAC,CAACqJ,SAAS,CAAC,EAAExH,gBAAgB,CAAC,CAAC,CAAC,EACxD,OAAO,EACPwH,SAAS,EACTnG,eAAe,CAACmD,aAClB,CACF,CAAC;IACH;EACF;EAEA,IAAIsH,QAAiB;EACrB,IAAIC,SAA8C;EAClD,IAAIvE,SAAS,KAAKlH,aAAa,EAAE;IAAA,IAAA0L,qBAAA,EAAAC,sBAAA;IAC/B,CAAC;MAAEH,QAAQ;MAAE,GAAGC;IAAU,CAAC,IAAAC,qBAAA,GAAG3G,SAAS,CAAC6G,UAAU,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;IAExD,KAAAC,sBAAA,GAAI5G,SAAS,CAAC6G,UAAU,cAAAD,sBAAA,eAApBA,sBAAA,CAAsBE,OAAO,EAAE;MACjCL,QAAQ,GAAG,MAAM5M,qBAAqB,CAAC4M,QAAQ,EAAEzJ,cAAc,CAAC;IAClE;EACF,CAAC,MAAM;IAAA,IAAA+J,UAAA;IACL,IAAI/J,cAAc,CAACgK,UAAU,EAAE;MAC7B;MACA,MAAM1I,SAAS,GAAI0B,SAAS,CACzB1B,SAAS;MACZ,IAAIA,SAAS,EAAE;QACbtD,mBAAmB,CACjBkH,MAAM,EACN,sBAAsB,EACtB,uDAAuD,EACvDlC,SACF,CAAC;QAED,IAAI,CAACkC,MAAM,EAAE;UACXwE,SAAS,GAAG;YACV,GAAG1G,SAAS,CAAC6G,UAAU;YACvB,GAAGvI;UACL,CAAC;QACH;MACF;IACF;IACA,CAAAyI,UAAA,GAAAL,SAAS,cAAAK,UAAA,cAAAA,UAAA,GAATL,SAAS,GAAK1G,SAAS,CAAC6G,UAAU;EACpC;EAEA,MAAMI,mBAA0C,GAAG,EAAE;EACrD,MAAMC,oBAAoB,GAAGxN,+BAA+B,CAC1DgN,SAAS,EACT1J,cAAc,EACdiK,mBACF,CAAC;EAED,MAAME,qBAAqB,GAAGnH,SAAS,CAAC9F,mCAAmC,CAAC;EAC5E,IAAIiN,qBAAqB,EAAE;IACzBD,oBAAoB,CAACxJ,IAAI,CAAC,GAAGyJ,qBAAqB,CAAC;EACrD;EAEA,MAAMC,QAAQ,GAAGjF,SAAS,KAAK,QAAQ;EACvC,IAAIiF,QAAQ,IAAIjF,SAAS,KAAK,MAAM,EAAE;IACpC,MAAMkF,KAAK,GAAG,MAAM1N,wBAAwB,CAACuN,oBAAoB,CAAC;IAClE,IAAIE,QAAQ,GAAGC,KAAK,CAACC,GAAG,GAAGD,KAAK,CAACE,GAAG,KAAK,YAAY,IAAIF,KAAK,CAACG,IAAI,EAAE;MAAA,IAAAC,mBAAA;MACnE,MAAMC,MAAM,IAAAD,mBAAA,GAAGE,MAAM,CAACC,WAAW,cAAAH,mBAAA,cAAAA,mBAAA,GAAI,EAAE;MACvC,IAAIL,QAAQ,EAAE;QACZ,MAAM;UAAEE,GAAG;UAAE,GAAGO;QAAM,CAAC,GAAGR,KAAK;QAC/B,MAAMpI,SAAS,CACb/F,UAAU,CAACoO,GAAG,EAAYI,MAAM,EAAEG,KAAK,CAAC,EACxC,QAAQ,EACRP,GAAG,EACH,QACF,CAAC;MACH,CAAC,MAAM;QACL,MAAM;UAAEE,IAAI;UAAE,GAAGK;QAAM,CAAC,GAAGR,KAAK;QAChC,MAAMpI,SAAS,CACb9F,SAAS,CAACqO,IAAI,EAAYE,MAAM,EAAEG,KAAK,CAAC,EACxC,YAAY,EACZL,IAAI,EACJ,QACF,CAAC;MACH;MACA,OAAOjL,MAAM;IACf;EACF;EAEA,MAAMwE,KAAkB,GAAG;IACzBqD,GAAG,EAAEvJ,SAAS,CAAC6K,KAAK;IACpBxH,IAAI,EAAE+H,UAAU,IAAI9D,SAAS;IAC7BzF,MAAM,EAAEb,UAAU;IAClBM,MAAM;IACN2L,MAAM,EAAE9H,SAAS,CAAC8H,MAAM;IACxB9K,cAAc;IACd+K,MAAM,EAAE/H,SAAS,CAAC+H,MAAM;IACxB9K,GAAG,EAAE+C,SAAS,CAAC/C,GAAG;IAClB+K,GAAG,EAAGhI,SAAS,CAAyBgI;EAC1C,CAAC;EAEDzL,MAAM,CAACiE,IAAI,GAAGO,KAAK;;EAEnB;EACA,MAAMhC,cAAc,GAAGzF,wBAAwB,CAC7C,CAAC0G,SAAS,CAAC8H,MAAM,EAAE9H,SAAS,CAACyE,SAAS,CAAC,EACvC,YAAY,EACZ,CACF,CAAC;EACD,IAAI1F,cAAc,CAACC,IAAI,GAAG,CAAC,EAAE;IAC3BzC,MAAM,CAAC0B,YAAY,CAACP,IAAI,CACtBuB,SAAS,CACPhG,0BAA0B,CAAC8F,cAAc,EAAEpE,gBAAgB,CAAC,CAAC,CAAC,EAC9D,YAAY,EACZ,CAAC,GAAGoE,cAAc,CAAC,CAACG,IAAI,CAAC,IAAI,CAAC,EAC9BlD,eAAe,CAACmD,aAClB,CACF,CAAC;EACH;;EAEA;EACA,MAAMlB,YAAgC,GAAG,EAAE;;EAE3C;EACAlE,iBAAiB,CAACiD,cAAc,EAAEiK,mBAAmB,EAAE5K,cAAc,CAAC;EAEtE,MAAM4L,cAAc,GAAG,MAAAA,CAAA,KAAY;IACjClH,KAAK,CAAC8F,UAAU,GAAG,MAAMlN,wBAAwB,CAACuN,oBAAoB,CAAC;IACvEpN,uBAAuB,CAACiH,KAAK,EAAEkG,mBAAmB,CAAC;EACrD,CAAC;EACDhJ,YAAY,CAACP,IAAI,CAACuK,cAAc,CAAC,CAAC,CAAC;EAEnCjM,eAAe,CAACkM,sBAAsB,CAACnH,KAAK,EAAEf,SAAS,CAACyE,SAAS,CAAC;EAElE,IAAI0D,iBAAiB,GAAGnI,SAAS;EACjC,IAAIiG,UAAU,EAAE;IACdkC,iBAAiB,GAAG5N,oBAAoB,CACtC0L,UAAU,EACVjG,SAAS,EACTe,KAAK,EACLmG,oBAAoB,EACpBlL,eACF,CAAC;EACH,CAAC,MAAM,IAAImG,SAAS,KAAKlH,aAAa,EAAE;IACtCkN,iBAAiB,GAAGhN,kBAAkB,CACpCsL,QAAQ,EACRzG,SAAS,EACTe,KAAK,EACLmG,oBAAoB,EACpBlL,eACF,CAAC;EACH;EAEA,IAAImM,iBAAiB,CAACJ,MAAM,EAAE;IAC5B;IACAhH,KAAK,CAAC5E,MAAM,GAAGqB,SAAS;EAC1B;EAEA,IAAI4K,mBAAmC;EACvC,IAAInC,UAAU,EAAE;IACd;IACAmC,mBAAmB,GAAG;MACpB,GAAGpL;IACL,CAAC;IACD,OAAOoL,mBAAmB,CAACrG,WAAW;IACtC,OAAOqG,mBAAmB,CAACpG,YAAY;IACvC,OAAOoG,mBAAmB,CAACnG,WAAW;EACxC,CAAC,MAAM;IACLmG,mBAAmB,GAAGpL,cAAc;EACtC;EAEA,MAAMqL,YAAY,GAAG,MAAAA,CAAA,KAAY;IAC/B,MAAM9G,KAAK,GAAG2B,eAAe,CAC3BiF,iBAAiB,CAAChF,QAAQ,EAC1BgF,iBAAiB,CAAC5G,KACpB,CAAC;IACD,IAAI,CAACA,KAAK,EAAE;MACV;IACF;IACA,MAAM+G,0BAA0B,GAAG,IAAInI,GAAG,CAAiB,CAAC;IAC5D,MAAMP,QAAQ,GAAG,MAAMC,OAAO,CAACC,GAAG,CAChC0B,MAAM,CAAC+G,OAAO,CAAChH,KAAK,CAAC,CAACxB,GAAG,CAAC,CAAAyI,KAAA,EAA0BvI,KAAK,KAAK;MAAA,IAAnC,CAACwI,WAAW,EAAEC,QAAQ,CAAC,GAAAF,KAAA;MAChD,IAAIE,QAAQ,CAACxK,IAAI,KAAK,QAAQ,EAAE;QAC9B,OAAOmB,YAAY,CACjB0B,KAAK,EACJ2H,QAAQ,CAAsBpJ,MAAM,EACrC8I,mBAAmB,EACnBpM,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBuM,WAAW,EACXhJ,QAAQ,EACRjC,SAAS,EACTnB,cACF,CAAC;MACH;MAEA,MAAMsM,WAAW,GAAG1M,YAAY,CAACA,YAAY,CAACyE,MAAM,GAAG,CAAC,CAE3C;MACb,IAAIiI,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEC,oBAAoB,EAAE;QACrCN,0BAA0B,CAAChC,GAAG,CAACrG,KAAK,EAAEwI,WAAW,CAAC;QAClDzM,eAAe,CAAC6M,wBAAwB,CACtCH,QAAQ,EACRzM,YAAY,EACZ,OAAO6M,QAAQ,EAAEC,YAAY,KAAK;UAChC,MAAM;YAAEC;UAAS,CAAC,GAAGZ,mBAAmB,CAAClC,GAAG;UAC5C,MAAM;YAAE+C;UAAS,CAAC,GAAGH,QAAQ;UAC7B;UACA,IACE,CAACvN,aAAa,CAACyN,QAAQ,EAAEC,QAAQ,CAAC,IAClC,CAAChN,YAAY,CAACiN,KAAK,CAAErM,KAAK,IAAK;YAC7B,IAAIsM,SAA6B;YACjC,IAAIC,QAA4B;YAChC,OACE,CAACD,SAAS,GAAGnP,UAAU,CACrB6C,KAAK,EACLmM,QAAQ,EACRD,YAAY,CAACE,QACf,CAAC,MACAG,QAAQ,GAAGpP,UAAU,CAAC6C,KAAK,EAAEmM,QAAQ,EAAEC,QAAQ,CAAC,CAAC,KACjDpM,KAAK,KAAK8L,WAAW,IACpBnP,OAAO,CAAC2P,SAAS,CAACE,MAAM,EAAED,QAAQ,CAACC,MAAM,CAAC,CAAC;UAEjD,CAAC,CAAC,EACF;YACA,OAAO,KAAK;UACd;UAEA,MAAM,CACJxE,oBAAoB,EACpBpB,kBAAkB,EAClBC,mBAAmB,CACpB,GAAGoB,0BAA0B,CAAC;YAC7B,GAAGsD,mBAAmB;YACtBU,QAAQ;YACRQ,KAAK,EAAE,IAAIC,eAAe,CAACT,QAAQ,CAACU,MAAM;UAC5C,CAAC,CAAC;UAEF,IAAIC,MAAM,GAAG,KAAK;UAClB,IAAIC,iBAA+B;UACnC,IAAIzF,YAAiD,GAAG,EAAE;UAE1D,IAAI;YACFyF,iBAAiB,GAAG,MAAM9N,YAAY,CACpCmF,KAAK,EACL2H,QAAQ,CAAC5M,MAAM,EACf+I,oBAAoB,EACpB7I,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBuM,WAAW,EACX,IACF,CAAC;;YAED;YACA;YACA,IAAIiB,iBAAiB,CAAC7M,KAAK,EAAE;cAC3B;cACA,IAAIb,eAAe,CAAC2N,SAAS,CAACD,iBAAiB,CAAC,EAAE;gBAChD,OAAO,IAAI;cACb;cAEAzF,YAAY,GAAG,CACb,GAAGR,kBAAkB,EACrB,GAAGC,mBAAmB,CACvB;cACD,MAAMQ,eAAe,CACnBwF,iBAAiB,EACjB7E,oBAAoB,EACpB,CAACA,oBAAoB,CAAC3H,QAAQ,EAAE,GAAG+G,YAAY,CACjD,CAAC;YACH;YAEA,MAAMjI,eAAe,CAAC4N,uBAAuB,CAC3C1N,qBAAqB,EACrBwM,QAAQ,CAAC5M,MAAM,EACf4N,iBAAiB,CAACjN,eACpB,CAAC;UACH,CAAC,CAAC,OAAO+B,KAAK,EAAE;YACd;YACAD,OAAO,CAACC,KAAK,CAAC,gCAAgC,EAAEA,KAAK,CAAC;YAEtD,MAAMqL,MAAM,GAAG,MAAM7N,eAAe,CAAC8N,OAAO,CAACtL,KAAK,EAAEuC,KAAK,CAAC;YAC1D,IAAI,CAAC8I,MAAM,EAAE;cACX,OAAO,IAAI;YACb;YACA,CAAC;cAAEJ,MAAM;cAAElN,MAAM,EAAEmN;YAAkB,CAAC,GAAGG,MAAM;;YAE/C;YACA,MAAM7N,eAAe,CAAC4N,uBAAuB,CAC3C1N,qBAAqB,EACrBwM,QAAQ,CAAC5M,MAAM,EACf4N,iBAAiB,CAACjN,eACpB,CAAC;UACH;UAEAT,eAAe,CAACmJ,QAAQ,CACtBsD,WAAW,EACX,EAAE,EACFiB,iBAAiB,CAAClJ,IAAI,EACtBO,KACF,CAAC;UAED,IAAI,CAAC0I,MAAM,EAAE;YACX5E,oBAAoB,CAAC3H,QAAQ,CAACmI,cAAc,CAC1CqE,iBAAiB,CAAC7M,KACpB,CAAC;YACD,KAAK,MAAMuI,KAAK,IAAInB,YAAY,EAAE;cAChCmB,KAAK,CAACC,cAAc,CAAC,CAAC;YACxB;UACF;;UAEA;UACA,OAAO,IAAI;QACb,CACF,CAAC;MACH;MAEA,OAAOzJ,YAAY,CACjBmF,KAAK,EACL2H,QAAQ,CAAC5M,MAAM,EACfsM,mBAAmB,EACnBpM,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBuM,WAAW,EACXjL,SAAS,EACTnB,cACF,CAAC;IACH,CAAC,CACH,CAAC;IAED,MAAM0N,cAA4B,GAAG;MACnC,GAAGxN,MAAM;MACTiE,IAAI,EAAEhD,SAAS;MACfS,YAAY,EAAE,EAAE;MAChBxB,eAAe,EAAEe;IACnB,CAAC;IACDoC,QAAQ,CAACQ,OAAO,CAAC,CAACC,IAAI,EAAEJ,KAAK,KAAK;MAChC,IAAIqI,0BAA0B,CAAC0B,GAAG,CAAC/J,KAAK,CAAC,EAAE;QACzC;QACAjE,eAAe,CAACuE,OAAO,CACrB+H,0BAA0B,CAACtC,GAAG,CAAC/F,KAAK,CAAC,EACrC,EAAE,EACFI,IAAI,CAACG,IAAI,EACTO,KACF,CAAC;MACH;MACAxB,iBAAiB,CAACwK,cAAc,EAAE1J,IAAI,CAAC;MACvC4J,6BAA6B,CAACF,cAAc,EAAE1J,IAAI,CAAC;IACrD,CAAC,CAAC;IACF,IAAI0J,cAAc,CAACvJ,IAAI,EAAE;MACvBO,KAAK,CAACmJ,KAAK,GAAGH,cAAc,CAACvJ,IAAI;IACnC;IACAjB,iBAAiB,CAAChD,MAAM,EAAE;MACxB,GAAGwN,cAAc;MACjBvJ,IAAI,EAAEhD;IACR,CAAC,CAAC;IAEFgC,qBAAqB,CACnBtD,qBAAqB,EACpBK,MAAM,CAACE,eAAe,GAAGsN,cAAc,CAACtN,eAC3C,CAAC;EACH,CAAC;EACDwB,YAAY,CAACP,IAAI,CAAC2K,YAAY,CAAC,CAAC,CAAC;EAEjC,MAAMxI,OAAO,CAACC,GAAG,CAAC7B,YAAY,CAAC;EAE/B,OAAO1B,MAAM;AACf;AAEA,SAAS8E,qBAAqBA,CAACH,OAAgB,EAAW;EACxD,OAAO,OAAOA,OAAO,KAAK,QAAQ,GAC9B9H,UAAU,CAAC8H,OAAO,CAAC,GACnB7F,cAAc,CAAC6F,OAAO,CAAC;EACrB;EACA9H,UAAU,CAACkC,kBAAkB,CAAC4F,OAAO,CAAC,CAAC;AAC/C;AAIA,SAASoB,uBAAuBA,CAC9BvB,KAAa,EACuB;EACpC,IAAIA,KAAK,KAAK,UAAU,IAAIA,KAAK,KAAK,KAAK,IAAIA,KAAK,KAAK,SAAS,EAAE;IAClE,MAAM,IAAItC,KAAK,CAAC,qCAAqCsC,KAAK,GAAG,CAAC;EAChE;AACF;AAEA,eAAeqC,aAAaA,CAC1BvH,UAA4B,EAC5ByF,UAAqB,EACrBhC,MAAmB,EACnBtC,cAA8B,EAC9BhB,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAA0B,EAC1BsD,QAA6B,EAC7BC,OAAiB,EACjBrD,cAA+B,EACR;EACvB,MAAME,MAAM,GAAGC,oBAAoB,CAAC,CAAC;EAErC,MAAMwC,IAAI,GAAGsC,UAAU,CAACZ,MAAM;EAC9B,MAAMd,QAAQ,GAAG,MAAMC,OAAO,CAACC,GAAG,CAChCwB,UAAU,CAACvB,GAAG,CAAC,CAACM,IAAI,EAAE8J,CAAC,KACrBtK,OAAO,CAACC,GAAG,CACTR,MAAM,CAACS,GAAG,CAAC,CAACC,SAAS,EAAEoK,CAAC,KACtBlK,WAAW,CACTrE,UAAU,EACVmE,SAAS,EACT;IACE,GAAGhD,cAAc;IACjB+E,WAAW,EAAE1B,IAAI;IACjB2B,YAAY,EAAEmI,CAAC;IACflI,WAAW,EAAEjD;EACf,CAAC,EACDhD,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNuD,OAAO,CAACrC,MAAM,CAAC8M,CAAC,GAAGnL,IAAI,GAAGoL,CAAC,CAAC,EAC5B3K,QAAQ,IAAI,IAAIU,GAAG,CAACV,QAAQ,CAAC,EAC7BpD,cACF,CACF,CACF,CACF,CACF,CAAC;;EAED;EACAuD,QAAQ,CAACyK,IAAI,CAAC,CAAC,CAACjK,OAAO,CAAC,CAACC,IAAI,EAAEJ,KAAK,KAAK;IACvC,IAAII,IAAI,CAACC,mBAAmB,EAAE;MAC5B;MACAtE,eAAe,CAACuE,OAAO,CACrBpE,MAAM,EACNuD,OAAO,CAACrC,MAAM,CAAC4C,KAAK,CAAC,EACrBI,IAAI,CAACG,IAAI,EACT3E,UACF,CAAC;IACH;IACA0D,iBAAiB,CAAChD,MAAM,EAAE8D,IAAI,CAAC;EACjC,CAAC,CAAC;EAEF,OAAO9D,MAAM;AACf;AAEA,OAAO,SAAS+N,aAAaA,CAACtN,cAA8B,EAAE;EAC5D,OAAO,CACLA,cAAc,CAACE,QAAQ,EACvB,GAAGF,cAAc,CAACuN,gBAAgB,CAACC,MAAM,CAAC,CAAC,EAC3C,GAAGxN,cAAc,CAACyN,iBAAiB,CAACD,MAAM,CAAC,CAAC,CAC7C;AACH;AAEA,OAAO,SAAStG,eAAeA,CAC7B3H,MAAoB,EACpBS,cAA8B,EAC9B0N,MAAkC,EAClC;EACA3R,qBAAqB,CAAC,CAAC;EAEvB,OAAO8G,OAAO,CAACC,GAAG,CAAC,CACjB,GAAGvD,MAAM,CAAC0B,YAAY,EACtB,GAAGyM,MAAM,CAAC3K,GAAG,CAAEqF,KAAK,IAAKA,KAAK,CAACuF,UAAU,CAAC,CAAC,CAAC,EAC5C,GAAG3N,cAAc,CAACS,0BAA0B,CAC7C,CAAC;AACJ;AAEA,OAAO,SAASqH,0BAA0BA,CACxC9H,cAA8B,EAK9B;EACA,MAAMyG,kBAAwC,GAAG,EAAE;EACnD,MAAMC,mBAA8C,GAAG,EAAE;EACzD,MAAMmB,oBAAoC,GAAG;IAC3C,GAAG7H,cAAc;IACjByG,kBAAkB;IAClBC;EACF,CAAC;EACD,OAAO,CAACmB,oBAAoB,EAAEpB,kBAAkB,EAAEC,mBAAmB,CAAC;AACxE;AAEA,SAAS/E,QAAQA,CACfiM,QAA8B,EAC9B5N,cAA8B,EAC9B;EACA,IAAI,CAAC4N,QAAQ,EAAE;IACb;EACF;;EAEA;EACA,IAAKA,QAAQ,CAAwB1M,IAAI,KAAK,OAAO,EAAE;IACrD;IACAK,OAAO,CAACC,KAAK,CAAC,uCAAuC,EAAEoM,QAAQ,CAAC;IAChE,MAAM,IAAInM,KAAK,CAAC,sCAAsC,CAAC;EACzD;;EAEA;EACA,IAAImM,QAAQ,CAAC1M,IAAI,KAAK,SAAS,EAAE;IAC/B;IACAK,OAAO,CAACsM,IAAI,CAAC,mDAAmD,EAAED,QAAQ,CAAC;IAC3E;EACF;EAEA,OAAO/Q,qBAAqB,CAC1B+Q,QAAQ,EACR5N,cACF,CAAC;AACH;AAEA,SAASuC,iBAAiBA,CACxBhD,MAAoB,EACpB6C,SAAuB,EACjB;EACN;EACA,MAAM;IAAEnB,YAAY;IAAEuC,IAAI;IAAE/D,eAAe;IAAE6D,mBAAmB;IAAE,GAAGwK;EAAK,CAAC,GACzE1L,SAAS;EACX7C,MAAM,CAAC0B,YAAY,CAACP,IAAI,CAAC,GAAGO,YAAY,CAAC;EAEzC,IAAIuC,IAAI,EAAE;IACR,IAAIjE,MAAM,CAACiE,IAAI,EAAE;MACf,IAAIuK,IAAI,GAAGxO,MAAM,CAACiE,IAAI;MACtB,OAAOuK,IAAI,CAACC,OAAO,EAAE;QACnBD,IAAI,GAAGA,IAAI,CAACC,OAAO;MACrB;MACAD,IAAI,CAACC,OAAO,GAAGxK,IAAI;IACrB,CAAC,MAAM;MACLjE,MAAM,CAACiE,IAAI,GAAGA,IAAI;IACpB;EACF;EAEAgB,MAAM,CAACyJ,MAAM,CAAC1O,MAAM,EAAEuO,IAAI,CAAC;AAC7B;AAEA,SAASb,6BAA6BA,CACpC1N,MAAoB,EACpB6C,SAAuB,EACvB;EACA,MAAM3C,eAAe,GAAG2C,SAAS,CAAC3C,eAAe;EACjD,IAAIA,eAAe,EAAE;IACnB,IAAIF,MAAM,CAACE,eAAe,EAAE;MAC1B,IAAIsO,IAAI,GAAGxO,MAAM,CAACE,eAAe;MACjC,OAAOsO,IAAI,CAACC,OAAO,EAAE;QACnBD,IAAI,GAAGA,IAAI,CAACC,OAAO;MACrB;MACAD,IAAI,CAACC,OAAO,GAAGvO,eAAe;IAChC,CAAC,MAAM;MACLF,MAAM,CAACE,eAAe,GAAGA,eAAe;IAC1C;EACF;AACF;AAEA,SAAS+C,qBAAqBA,CAC5BtD,qBAAsC,EACtCO,eAA4C,EAC5C;EACA,IAAI,CAACA,eAAe,EAAE;IACpB;EACF;EACA,IAAIP,qBAAqB,CAACgO,KAAK,EAAE;IAC/B,IAAIa,IAAI,GAAG7O,qBAAqB,CAACgO,KAAK;IACtC,OAAOa,IAAI,CAACC,OAAO,EAAE;MACnBD,IAAI,GAAGA,IAAI,CAACC,OAAO;IACrB;IACAD,IAAI,CAACC,OAAO,GAAGvO,eAAe;EAChC,CAAC,MAAM;IACLP,qBAAqB,CAACgO,KAAK,GAAGzN,eAAe;EAC/C;AACF;AAEA,SAASD,oBAAoBA,CAAA,EAAiB;EAC5C,OAAO;IAAEyB,YAAY,EAAE;EAAG,CAAC;AAC7B;AAEA,OAAO,SAASiF,eAAeA,CAC7BC,QAAiC,EACjC+H,aAAoC,EACpC;EACA,IAAIC,QAAQ,GAAGD,aAAa;EAC5B;EACA,IACEE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IACtCnI,QAAQ,IACR,CAACpF,KAAK,CAACC,OAAO,CAACmF,QAAQ,CAAC,EACxB;IACA;IACA5E,OAAO,CAACsM,IAAI,CACV,yCAAyC,EACzC,IAAI,OAAO1H,QAAQ,GAAG,EACtBA,QACF,CAAC;EACH;EACA,IAAIpF,KAAK,CAACC,OAAO,CAACmF,QAAQ,CAAC,IAAI,CAACgI,QAAQ,EAAE;IACxCA,QAAQ,GAAG,CAAC,CAAC;IACb,KAAK,MAAM;MAAEnI,IAAI,EAAEuI,EAAE;MAAE,GAAGrB;IAAM,CAAC,IAAI/G,QAAQ,EAAE;MAC7C,MAAMH,IAAI,GAAGuI,EAAE,aAAFA,EAAE,cAAFA,EAAE,GAAI,EAAE;MACrB,IAAI,CAAClS,cAAc,CAAC8R,QAAQ,EAAEnI,IAAI,CAAC,EAAE;QACnCmI,QAAQ,CAACnI,IAAI,CAAC,GAAG;UACf9E,IAAI,EAAE,QAAQ;UACdoB,MAAM,EAAE;QACV,CAAC;MACH;MACC6L,QAAQ,CAACnI,IAAI,CAAC,CAAsB1D,MAAM,CAAC5B,IAAI,CAACwM,KAAK,CAAC;IACzD;EACF;EACA,OAAOiB,QAAQ;AACjB;AAEA,SAASlM,SAASA,CAChBuM,OAAyB,EACzBtN,IAAsD,EACtDuN,IAAY,EACZC,aAA+C,EAC/C;EACA,OAAOA,aAAa,KAAK,QAAQ,GAC7BF,OAAO,CAACG,KAAK,CAAEC,CAAC,IAAK;IACnB;IACArN,OAAO,CAACC,KAAK,CAAC,sBAAsB,EAAEN,IAAI,EAAEuN,IAAI,EAAEG,CAAC,CAAC;EACtD,CAAC,CAAC,GACFJ,OAAO;AACb","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","isEqual","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","trackAfterInitial","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTPlExternalForEachSize","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","registerFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","setupRootRuntimeContext","setMatchedRoute","ErrorNode","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","menuRequestReturnNode","slotId","isIncremental","initialTracker","matched","output","getEmptyRenderOutput","menuRequestNode","return","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","iid","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","request","memoizeMenuRequestNode","usedProcessors","size","catchLoad","join","unknownBricks","newOutput","renderBricks","bricks","mergeRenderOutput","appendMenuRequestNode","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","arguments","length","legacyRenderBrick","errorBoundary","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","forEachSize","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","contextNames","stateNames","tracking","lowerLevelRenderControlNode","tracker","trackDataSource","_slots$slot","computedDataSource","propValue","slot","String","childrenToSlots","children","renderForEach","renderControlNode","_ref","_ref2","_ref2$node","tplStateStoreScope","formStateStoreScope","changedAfterInitial","disposes","listener","rerenderCount","rawOutput","uninitialized","scopedStores","postAsyncRender","dispose","tag","PLACEHOLDER","controlledOutput","onMount","onUnmount","lifeCycle","_runtimeBrick$dispose","renderId","currentRenderId","scopedRuntimeContext","createScopedRuntimeContext","reControlledOutput","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","leading","trailing","runtimeBrick","BRICK","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","formData","confProps","_brickConf$properties","_brickConf$properties2","properties","compute","inUseBrick","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","events","portal","ref","loadProperties","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","routeSlotFromIndexToSlotId","entries","_ref3","childSlotId","slotConf","parentRoute","incrementalSubRoutes","performIncrementalRender","location","prevLocation","homepage","pathname","every","prevMatch","newMatch","params","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequestNodes","result","reCatch","childrenOutput","has","mergeSiblingRenderMenuRequest","child","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","sl","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n RouteConfOfBricks,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce, isEqual } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n trackAfterInitial,\n type InitialTracker,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTPlExternalForEachSize,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderReturnNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { registerFormRenderer } from \"./FormRenderer/registerFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport type { MatchResult } from \"./matchPath.js\";\nimport { setupRootRuntimeContext } from \"./setupRootRuntimeContext.js\";\nimport { setMatchedRoute } from \"./routeMatchedMap.js\";\nimport { ErrorNode } from \"./ErrorNode.js\";\n\nexport interface RenderOutput {\n node?: RenderChildNode;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n path?: string;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequestNode?: MenuRequestNode;\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderReturnNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n isIncremental?: boolean,\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n const menuRequestNode: MenuRequestNode = (output.menuRequestNode = {\n return: menuRequestReturnNode,\n });\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n output.path = matched.match.path;\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n\n if (route.iid) {\n setMatchedRoute(route.iid, matched.match);\n }\n\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n menuRequestNode.request = menuRequest;\n }\n\n if (!isIncremental) {\n rendererContext.memoizeMenuRequestNode(routes, menuRequestNode);\n }\n\n const usedProcessors = strictCollectMemberUsage(\n route.context,\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n let newOutput: RenderOutput;\n if (route.type === \"routes\") {\n newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId,\n undefined,\n initialTracker\n );\n } else {\n newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId,\n undefined,\n undefined,\n initialTracker\n );\n }\n\n mergeRenderOutput(output, newOutput);\n appendMenuRequestNode(menuRequestNode, newOutput.menuRequestNode);\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderReturnNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[],\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n setupRootRuntimeContext(bricks, runtimeContext, true);\n const output = getEmptyRenderOutput();\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack),\n initialTracker\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>(),\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n try {\n return await legacyRenderBrick(\n returnNode,\n brickConf,\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath,\n tplStack,\n initialTracker\n );\n } catch (error) {\n if (brickConf.errorBoundary) {\n // eslint-disable-next-line no-console\n console.error(\"Error caught by error boundary:\", error);\n return {\n node: await ErrorNode(error, returnNode),\n blockingList: [],\n };\n } else {\n throw error;\n }\n }\n}\n\nasync function legacyRenderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId: string | undefined,\n keyPath: number[],\n tplStack: Map<string, number>,\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: brickConf[symbol as typeof symbolForTplStateStoreId],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath,\n tplStack,\n initialTracker\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEach*` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n runtimeContext.forEachSize = brickConf[symbolForTPlExternalForEachSize];\n }\n\n const strict = isStrictMode(runtimeContext);\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n const { contextNames, stateNames } = getTracks(dataSource);\n const tracking = !!(contextNames || stateNames);\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext,\n tracker: InitialTracker,\n trackDataSource: boolean\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n if (trackDataSource) {\n trackAfterInitial(\n runtimeContext,\n [{ contextNames, stateNames, propValue: dataSource }],\n tracker\n );\n }\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return getEmptyRenderOutput();\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return getEmptyRenderOutput();\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n keyPath,\n tracker\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n keyPath,\n tracker\n );\n }\n }\n };\n\n type RenderControlNodeOptions =\n | {\n type: \"initial\";\n runtimeContext: RuntimeContext;\n tplStateStoreScope?: undefined;\n formStateStoreScope?: undefined;\n }\n | {\n type: \"rerender\";\n runtimeContext: RuntimeContext;\n tplStateStoreScope: DataStore<\"STATE\">[];\n formStateStoreScope: DataStore<\"FORM_STATE\">[];\n };\n\n const renderControlNode = async ({\n type,\n runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n }: RenderControlNodeOptions) => {\n let changedAfterInitial = false;\n const tracker: InitialTracker = {\n disposes: [],\n listener: () => {\n changedAfterInitial = true;\n },\n };\n let rerenderCount = 0;\n let rawOutput: RenderOutput;\n let uninitialized = true;\n\n // When perform an incremental sub-route render, for control nodes,\n // context maybe changed just after their data source being computed,\n // as well as props of their children bricks being computed, and before\n // bricks being mounted. Thus these changes may not take any effects.\n // So we need to track the context changes after the initial render,\n // and perform re-renders for these control nodes if necessary.\n while (uninitialized || changedAfterInitial) {\n changedAfterInitial = false;\n rawOutput = await lowerLevelRenderControlNode(\n runtimeContext,\n tracker,\n uninitialized && type === \"initial\"\n );\n\n // Changes may happen during `postAsyncRender`.\n if (!changedAfterInitial && type === \"rerender\") {\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(rawOutput, runtimeContext, [\n runtimeContext.ctxStore,\n ...scopedStores,\n ]);\n }\n\n tracker.disposes.forEach((dispose) => dispose());\n tracker.disposes.length = 0;\n uninitialized = false;\n // istanbul ignore next\n if (++rerenderCount > 10) {\n throw new Error(\n `Maximum rerender stack overflowed (iid: ${brickConf.iid})`\n );\n }\n }\n\n rawOutput!.node ??= {\n tag: RenderTag.PLACEHOLDER,\n return: returnNode,\n tracking,\n };\n return rawOutput!;\n };\n\n const controlledOutput = await renderControlNode({\n type: \"initial\",\n runtimeContext,\n });\n\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n if (tracking) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput = await renderControlNode({\n type: \"rerender\",\n runtimeContext: scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n });\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n reControlledOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of [...tplStateStoreScope, ...formStateStoreScope]) {\n store.mountAsyncData();\n }\n }\n };\n // Enable leading invocation, to keep tracking orders.\n const debouncedListener = debounce(listener, 0, {\n leading: true,\n trailing: true,\n });\n const runtimeBrick =\n returnNode.tag === RenderTag.BRICK ? returnNode : null;\n const disposes = runtimeBrick ? (runtimeBrick.disposes ??= []) : [];\n if (contextNames) {\n for (const contextName of contextNames) {\n disposes.push(\n runtimeContext.ctxStore.onChange(contextName, debouncedListener)\n );\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n disposes.push(tplStateStore.onChange(contextName, debouncedListener));\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n registerFormRenderer();\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n\n if (brickConf.properties?.compute) {\n formData = await asyncComputeRealValue(formData, runtimeContext);\n }\n } else {\n if (runtimeContext.inUseBrick) {\n // Keep v2 behavior for `useBrick`: treat `transform` as `properties`.\n const transform = (brickConf as { transform?: Record<string, unknown> })\n .transform;\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n brickConf\n );\n\n if (!strict) {\n confProps = {\n ...brickConf.properties,\n ...transform,\n };\n }\n }\n }\n confProps ??= brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n // Note: properties here has already been initialized.\n trackAfterInitial(runtimeContext, trackingContextList, initialTracker);\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n delete childRuntimeContext.forEachSize;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotFromIndexToSlotId = new Map<number, string>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n tplStack,\n undefined,\n initialTracker\n );\n }\n\n const parentRoute = parentRoutes[parentRoutes.length - 1] as\n | RouteConfOfBricks\n | undefined;\n if (parentRoute?.incrementalSubRoutes) {\n routeSlotFromIndexToSlotId.set(index, childSlotId);\n rendererContext.performIncrementalRender(\n slotConf,\n parentRoutes,\n async (location, prevLocation) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) => {\n let prevMatch: MatchResult | null;\n let newMatch: MatchResult | null;\n return (\n (prevMatch = matchRoute(\n route,\n homepage,\n prevLocation.pathname\n )) &&\n (newMatch = matchRoute(route, homepage, pathname)) &&\n (route !== parentRoute ||\n isEqual(prevMatch.params, newMatch.params))\n );\n })\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n true\n );\n\n // Do not ignore incremental rendering even if all sub-routes are missed.\n // Since parent route is matched.\n if (incrementalOutput.route) {\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n await postAsyncRender(\n incrementalOutput,\n scopedRuntimeContext,\n [scopedRuntimeContext.ctxStore, ...scopedStores]\n );\n }\n\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = await rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n // Even if all sub-routes missed, treat the incremental rendering as performed.\n return true;\n }\n );\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n undefined,\n initialTracker\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequestNode: undefined,\n };\n rendered.forEach((item, index) => {\n if (routeSlotFromIndexToSlotId.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n routeSlotFromIndexToSlotId.get(index),\n [],\n item.node,\n brick\n );\n }\n mergeRenderOutput(childrenOutput, item);\n mergeSiblingRenderMenuRequest(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n\n appendMenuRequestNode(\n menuRequestReturnNode,\n (output.menuRequestNode = childrenOutput.menuRequestNode)\n );\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderReturnNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[],\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const size = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n forEachSize: size,\n },\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath.concat(i * size + j),\n tplStack && new Map(tplStack),\n initialTracker\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n const { blockingList, node, menuRequestNode, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nfunction mergeSiblingRenderMenuRequest(\n output: RenderOutput,\n newOutput: RenderOutput\n) {\n const menuRequestNode = newOutput.menuRequestNode;\n if (menuRequestNode) {\n if (output.menuRequestNode) {\n let last = output.menuRequestNode;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n output.menuRequestNode = menuRequestNode;\n }\n }\n}\n\nfunction appendMenuRequestNode(\n menuRequestReturnNode: MenuRequestNode,\n menuRequestNode: MenuRequestNode | undefined\n) {\n if (!menuRequestNode) {\n return;\n }\n if (menuRequestReturnNode.child) {\n let last = menuRequestReturnNode.child;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n menuRequestReturnNode.child = menuRequestNode;\n }\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return { blockingList: [] };\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const { slot: sl, ...child } of children) {\n const slot = sl ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load %s \"%s\" failed:`, type, name, e);\n })\n : promise;\n}\n"],"mappings":"AAWA,SACEA,uBAAuB,EACvBC,qBAAqB,EACrBC,sBAAsB,EACtBC,0BAA0B,EAC1BC,UAAU,EACVC,SAAS,QACJ,mBAAmB;AAC1B,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,wBAAwB,QAAQ,6BAA6B;AACtE,SAASC,QAAQ,EAAEC,OAAO,QAAQ,QAAQ;AAC1C,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SACEC,+BAA+B,EAC/BC,wBAAwB,QACnB,oCAAoC;AAC3C,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,qBAAqB,QAAQ,+BAA+B;AACrE,SAEEC,uBAAuB,EACvBC,iBAAiB,QAEZ,sCAAsC;AAE7C,SAASC,UAAU,EAAEC,WAAW,QAAQ,kBAAkB;AAC1D,SACEC,mCAAmC,EACnCC,gCAAgC,EAChCC,+BAA+B,EAC/BC,+BAA+B,EAC/BC,wBAAwB,QACnB,gCAAgC;AACvC,SAASC,oBAAoB,QAAQ,2CAA2C;AAShF,SACEC,0BAA0B,EAC1BC,gBAAgB,QACX,4BAA4B;AACnC,SAASC,eAAe,QAAQ,uBAAuB;AAEvD,SAASC,gBAAgB,EAAEC,KAAK,QAAQ,cAAc;AACtD,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,SAAS,QAAQ,wBAAwB;AAClD,SAASC,YAAY,EAAEC,mBAAmB,QAAQ,oBAAoB;AACtE,SACEC,aAAa,EAEbC,yBAAyB,QACpB,6BAA6B;AACpC,SAASC,kBAAkB,QAAQ,sCAAsC;AACzE,SAASC,oBAAoB,QAAQ,wCAAwC;AAC7E,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,kBAAkB,QAAQ,uBAAuB;AAE1D,SAASC,aAAa,QAAQ,sBAAsB;AAEpD,SAASC,eAAe,QAAQ,oBAAoB;AAEpD,SAASC,uBAAuB,QAAQ,8BAA8B;AACtE,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,SAAS,QAAQ,gBAAgB;AAgB1C,OAAO,eAAeC,YAAYA,CAChCC,UAA4B,EAC5BC,MAAmB,EACnBC,eAA+B,EAC/BC,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAAe,EACfC,aAAuB,EACvBC,cAA+B,EACR;EACvB,MAAMC,OAAO,GAAG,MAAMrC,WAAW,CAAC6B,MAAM,EAAEC,eAAe,CAAC;EAC1D,MAAMQ,MAAM,GAAGC,oBAAoB,CAAC,CAAC;EACrC,MAAMC,eAAgC,GAAIF,MAAM,CAACE,eAAe,GAAG;IACjEC,MAAM,EAAER;EACV,CAAE;EACF,QAAQI,OAAO;IACb,KAAK,QAAQ;MACX;IACF,KAAK,iBAAiB;MACpBC,MAAM,CAACI,eAAe,GAAG,IAAI;MAC7B;IACF;MAAS;QAAA,IAAAC,qBAAA;QACP,MAAMC,KAAK,GAAIN,MAAM,CAACM,KAAK,GAAGP,OAAO,CAACO,KAAM;QAC5CN,MAAM,CAACO,IAAI,GAAGR,OAAO,CAACS,KAAK,CAACD,IAAI;QAChC,MAAME,cAAc,GAAG;UACrB,GAAGjB,eAAe;UAClBgB,KAAK,EAAET,OAAO,CAACS;QACjB,CAAC;QAED,IAAIF,KAAK,CAACI,GAAG,EAAE;UACbvB,eAAe,CAACmB,KAAK,CAACI,GAAG,EAAEX,OAAO,CAACS,KAAK,CAAC;QAC3C;QAEA,IAAIX,aAAa,EAAE;UACjBY,cAAc,CAACE,QAAQ,CAACC,mBAAmB,CAACrB,MAAM,CAAC;QACrD;QACA,MAAMsB,SAAS,GAAGnB,YAAY,CAACoB,MAAM,CAACR,KAAK,CAAC;QAC5CG,cAAc,CAACE,QAAQ,CAACI,MAAM,CAC5BT,KAAK,CAACU,OAAO,EACbP,cAAc,EACdQ,SAAS,EACTJ,SACF,CAAC;QACDJ,cAAc,CAACS,0BAA0B,CAACC,IAAI,CAC5C9C,KAAK,aAALA,KAAK,gBAAAgC,qBAAA,GAALhC,KAAK,CAAE+C,gBAAgB,cAAAf,qBAAA,uBAAvBA,qBAAA,CAAyBgB,kCAAkC,CACzDf,KAAK,EACJgB,KAAK,IAAKhE,qBAAqB,CAACgE,KAAK,EAAEb,cAAc,CACxD,CACF,CAAC;;QAED;QACA;QACA,MAAM;UAAEc;QAAc,CAAC,GAAGjB,KAAqC;QAC/D,IAAIkB,KAAK,CAACC,OAAO,CAACF,aAAa,CAAC,EAAE;UAChCvB,MAAM,CAAC0B,YAAY,CAACP,IAAI,CACtB1E,sBAAsB,CAAC8E,aAAa,EAAEnD,gBAAgB,CAAC,CAAC,CAC1D,CAAC;QACH;QAEA,IAAIkC,KAAK,CAACqB,IAAI,KAAK,UAAU,EAAE;UAC7B,IAAIC,UAAmB;UACvB,IAAI,OAAOtB,KAAK,CAACuB,QAAQ,KAAK,QAAQ,EAAE;YACtCD,UAAU,GAAG,MAAMtE,qBAAqB,CACtCgD,KAAK,CAACuB,QAAQ,EACdpB,cACF,CAAC;UACH,CAAC,MAAM;YACL,MAAMqB,QAAQ,GAAI,MAAMzE,WAAW,CACjC;cACE0E,SAAS,EAAE,UAAU;cACrB,GAAGzB,KAAK,CAACuB;YACX,CAAC,EACDpB,cACF,CAA4B;YAC5BmB,UAAU,GAAGE,QAAQ,CAACD,QAAQ;UAChC;UACA,IAAI,OAAOD,UAAU,KAAK,QAAQ,EAAE;YAClC;YACAI,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAEL,UAAU,CAAC;YACxD,MAAM,IAAIM,KAAK,CACb,uCAAuC,OAAON,UAAU,EAC1D,CAAC;UACH;UACA5B,MAAM,CAAC6B,QAAQ,GAAG;YAAEtB,IAAI,EAAEqB;UAAW,CAAC;QACxC,CAAC,MAAM;UACL,MAAMO,WAAW,GAAGC,QAAQ,CAAC9B,KAAK,CAAC+B,IAAI,EAAE5B,cAAc,CAAC;UACxD,IAAI0B,WAAW,EAAE;YACfjC,eAAe,CAACoC,OAAO,GAAGH,WAAW;UACvC;UAEA,IAAI,CAACtC,aAAa,EAAE;YAClBJ,eAAe,CAAC8C,sBAAsB,CAAChD,MAAM,EAAEW,eAAe,CAAC;UACjE;UAEA,MAAMsC,cAAc,GAAGzF,wBAAwB,CAC7CuD,KAAK,CAACU,OAAO,EACb,YAAY,EACZ,CACF,CAAC;UACD,IAAIwB,cAAc,CAACC,IAAI,GAAG,CAAC,EAAE;YAC3BzC,MAAM,CAAC0B,YAAY,CAACP,IAAI,CACtBuB,SAAS,CACPhG,0BAA0B,CAAC8F,cAAc,EAAEpE,gBAAgB,CAAC,CAAC,CAAC,EAC9D,YAAY,EACZ,CAAC,GAAGoE,cAAc,CAAC,CAACG,IAAI,CAAC,IAAI,CAAC,EAC9BlD,eAAe,CAACmD,aAClB,CACF,CAAC;UACH;UAEA,IAAIC,SAAuB;UAC3B,IAAIvC,KAAK,CAACqB,IAAI,KAAK,QAAQ,EAAE;YAC3BkB,SAAS,GAAG,MAAMxD,YAAY,CAC5BC,UAAU,EACVgB,KAAK,CAACf,MAAM,EACZkB,cAAc,EACdhB,eAAe,EACfoB,SAAS,EACTX,eAAe,EACfN,MAAM,EACNqB,SAAS,EACTnB,cACF,CAAC;UACH,CAAC,MAAM;YACL+C,SAAS,GAAG,MAAMC,YAAY,CAC5BxD,UAAU,EACVgB,KAAK,CAACyC,MAAM,EACZtC,cAAc,EACdhB,eAAe,EACfoB,SAAS,EACTX,eAAe,EACfN,MAAM,EACNqB,SAAS,EACTA,SAAS,EACTnB,cACF,CAAC;UACH;UAEAkD,iBAAiB,CAAChD,MAAM,EAAE6C,SAAS,CAAC;UACpCI,qBAAqB,CAAC/C,eAAe,EAAE2C,SAAS,CAAC3C,eAAe,CAAC;QACnE;MACF;EACF;EAEA,OAAOF,MAAM;AACf;AAEA,OAAO,eAAe8C,YAAYA,CAChCxD,UAA4B,EAC5ByD,MAAmB,EACnBtC,cAA8B,EAC9BhB,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAAe,EACfsD,QAA8B,EAC9BC,OAAkB,EAClBrD,cAA+B,EACR;EACvBZ,uBAAuB,CAAC6D,MAAM,EAAEtC,cAAc,EAAE,IAAI,CAAC;EACrD,MAAMT,MAAM,GAAGC,oBAAoB,CAAC,CAAC;EACrC,MAAMmD,KAAK,GAAGD,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,EAAE;EAC3B;EACA,MAAME,QAAQ,GAAG,MAAMC,OAAO,CAACC,GAAG,CAChCR,MAAM,CAACS,GAAG,CAAC,CAACC,SAAS,EAAEC,KAAK,KAC1BC,WAAW,CACTrE,UAAU,EACVmE,SAAS,EACThD,cAAc,EACdhB,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNwD,KAAK,CAACtC,MAAM,CAAC4C,KAAK,CAAC,EACnBR,QAAQ,IAAI,IAAIU,GAAG,CAACV,QAAQ,CAAC,EAC7BpD,cACF,CACF,CACF,CAAC;EAEDuD,QAAQ,CAACQ,OAAO,CAAC,CAACC,IAAI,EAAEJ,KAAK,KAAK;IAChC,IAAII,IAAI,CAACC,mBAAmB,EAAE;MAC5B;MACAtE,eAAe,CAACuE,OAAO,CACrBpE,MAAM,EACNwD,KAAK,CAACtC,MAAM,CAAC4C,KAAK,CAAC,EACnBI,IAAI,CAACG,IAAI,EACT3E,UACF,CAAC;IACH;IACA0D,iBAAiB,CAAChD,MAAM,EAAE8D,IAAI,CAAC;EACjC,CAAC,CAAC;EAEF,OAAO9D,MAAM;AACf;AAEA,OAAO,eAAe2D,WAAWA,CAC/BrE,UAA4B,EAC5BmE,SAAsC,EACtCjE,eAA+B,EAC/BC,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAAe,EAIQ;EAAA,IAHvBuD,OAAiB,GAAAe,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,EAAE;EAAA,IACtBhB,QAAQ,GAAAgB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,IAAIN,GAAG,CAAiB,CAAC;EAAA,IACpC9D,cAA+B,GAAAoE,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAjD,SAAA;EAE/B,IAAI;IACF,OAAO,MAAMmD,iBAAiB,CAC5B9E,UAAU,EACVmE,SAAS,EACTjE,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNuD,OAAO,EACPD,QAAQ,EACRpD,cACF,CAAC;EACH,CAAC,CAAC,OAAOmC,KAAK,EAAE;IACd,IAAIwB,SAAS,CAACY,aAAa,EAAE;MAC3B;MACArC,OAAO,CAACC,KAAK,CAAC,iCAAiC,EAAEA,KAAK,CAAC;MACvD,OAAO;QACLgC,IAAI,EAAE,MAAM7E,SAAS,CAAC6C,KAAK,EAAE3C,UAAU,CAAC;QACxCoC,YAAY,EAAE;MAChB,CAAC;IACH,CAAC,MAAM;MACL,MAAMO,KAAK;IACb;EACF;AACF;AAEA,eAAemC,iBAAiBA,CAC9B9E,UAA4B,EAC5BmE,SAAsC,EACtCjE,eAA+B,EAC/BC,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAA0B,EAC1BuD,OAAiB,EACjBD,QAA6B,EAC7BpD,cAA+B,EACR;EAAA,IAAAwE,sBAAA,EAAAC,mBAAA;EACvB,MAAMvE,MAAM,GAAGC,oBAAoB,CAAC,CAAC;EAErC,IAAI,CAACwD,SAAS,CAACe,KAAK,EAAE;IACpB,IAAKf,SAAS,CAA2BgB,QAAQ,EAAE;MACjD;MACAzC,OAAO,CAACC,KAAK,CAAC,qCAAqC,EAAEwB,SAAS,CAAC;IACjE,CAAC,MAAM;MACL;MACAzB,OAAO,CAACC,KAAK,CAAC,gBAAgB,EAAEwB,SAAS,CAAC;IAC5C;IACA,OAAOzD,MAAM;EACf;;EAEA;EACA;EACA,MAAM;IAAE0E,EAAE,EAAEC,OAAO;IAAEC,mBAAmB;IAAE,GAAGC;EAAc,CAAC,GAAGpB,SAAS;EACxE,IAAIqB,qBAAqB,CAACH,OAAO,CAAC,EAAE;IAClC,OAAOhB,WAAW,CAChBrE,UAAU,EACV;MACEkF,KAAK,EAAE,KAAK;MACZO,UAAU,EAAEJ,OAAO;MACnB;MACAC,mBAAmB;MACnBI,KAAK,EAAE;QACL,EAAE,EAAE;UACFrD,IAAI,EAAE,QAAQ;UACdoB,MAAM,EAAE,CAAC8B,aAAa;QACxB;MACF,CAAC;MACD;MACA,GAAGI,MAAM,CAACC,qBAAqB,CAACzB,SAAS,CAAC,CAAC0B,MAAM,CAC/C,CAACC,GAAG,EAAEC,MAAM,MAAM;QAChB,GAAGD,GAAG;QACN,CAACC,MAAM,GAAG5B,SAAS,CAAC4B,MAAM;MAC5B,CAAC,CAAC,EACF,CAAC,CACH;IACF,CAAC,EACD7F,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNuD,OAAO,EACPD,QAAQ,EACRpD,cACF,CAAC;EACH;EAEA,MAAMwF,eAAe,GAAG7B,SAAS,CAAC1F,wBAAwB,CAAC;EAC3D,MAAMwH,gBAAgB,GAAG9B,SAAS,CAAC9E,yBAAyB,CAAC;EAC7D,MAAM8B,cAAc,GAAG;IACrB,GAAGjB,eAAe;IAClB8F,eAAe;IACfC;EACF,CAAC;EAED,IAAIzI,cAAc,CAAC2G,SAAS,EAAE5F,+BAA+B,CAAC,EAAE;IAC9D;IACA4C,cAAc,CAAC+E,WAAW,GAAG/B,SAAS,CAAC5F,+BAA+B,CAAC;IACvE4C,cAAc,CAACgF,YAAY,GAAGhC,SAAS,CAAC7F,gCAAgC,CAAC;IACzE6C,cAAc,CAACiF,WAAW,GAAGjC,SAAS,CAAC3F,+BAA+B,CAAC;EACzE;EAEA,MAAM6H,MAAM,GAAGnH,YAAY,CAACiC,cAAc,CAAC;EAC3C,MAAM;IAAEO;EAAQ,CAAC,GAAGyC,SAAwC;EAC5D;EACA,IAAIjC,KAAK,CAACC,OAAO,CAACT,OAAO,CAAC,IAAIA,OAAO,CAACmD,MAAM,GAAG,CAAC,EAAE;IAChD1F,mBAAmB,CACjBkH,MAAM,EACN,4BAA4B,EAC5B,mBAAmB,EACnBlC,SACF,CAAC;IACD,IAAI,CAACkC,MAAM,EAAE;MACXlF,cAAc,CAACE,QAAQ,CAACI,MAAM,CAACC,OAAO,EAAEP,cAAc,CAAC;IACzD;EACF;EAEAA,cAAc,CAACS,0BAA0B,CAACC,IAAI,CAC5C9C,KAAK,aAALA,KAAK,gBAAAiG,sBAAA,GAALjG,KAAK,CAAE+C,gBAAgB,cAAAkD,sBAAA,uBAAvBA,sBAAA,CAAyBjD,kCAAkC,CACzDoC,SAAS,EACRnC,KAAK,IAAKhE,qBAAqB,CAACgE,KAAK,EAAEb,cAAc,CACxD,CACF,CAAC;EAED,IAAI,EAAE,MAAMvD,iBAAiB,CAACuG,SAAS,EAAEhD,cAAc,CAAC,CAAC,EAAE;IACzD,OAAOT,MAAM;EACf;EAEA,MAAM4F,SAAS,GAAGnC,SAAS,CAACe,KAAK;EACjC,IAAIoB,SAAS,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;IAAA,IAAAC,oBAAA;IAC7BC,uBAAuB,CAACH,SAAS,CAAC;IAElC,MAAM;MAAEb;IAAW,CAAC,GAAGtB,SAAS;IAChC,MAAM;MAAEuC,YAAY;MAAEC;IAAW,CAAC,GAAG1H,SAAS,CAACwG,UAAU,CAAC;IAC1D,MAAMmB,QAAQ,GAAG,CAAC,EAAEF,YAAY,IAAIC,UAAU,CAAC;IAE/C,MAAME,2BAA2B,GAAG,MAAAA,CAClC1F,cAA8B,EAC9B2F,OAAuB,EACvBC,eAAwB,KACrB;MAAA,IAAAC,WAAA;MACH;MACA,MAAMC,kBAAkB,GAAG,MAAMjJ,qBAAqB,CACpDyH,UAAU,EACVtE,cACF,CAAC;MAED,IAAI4F,eAAe,EAAE;QACnB7I,iBAAiB,CACfiD,cAAc,EACd,CAAC;UAAEuF,YAAY;UAAEC,UAAU;UAAEO,SAAS,EAAEzB;QAAW,CAAC,CAAC,EACrDqB,OACF,CAAC;MACH;;MAEA;MACA,MAAMK,IAAI,GACRb,SAAS,KAAK,UAAU,GACpB,EAAE,GACFA,SAAS,KAAK,SAAS,GACrBc,MAAM,CAACH,kBAAkB,CAAC,GAC1BA,kBAAkB,GAChB,EAAE,GACF,MAAM;;MAEhB;MACA,MAAMvB,KAAK,GAAG2B,eAAe,CAAClD,SAAS,CAACmD,QAAQ,EAAEnD,SAAS,CAACuB,KAAK,CAAC;;MAElE;MACA,MAAMjC,MAAM,GACViC,KAAK,IACLlI,cAAc,CAACkI,KAAK,EAAEyB,IAAI,CAAC,MAAAH,WAAA,GAC1BtB,KAAK,CAACyB,IAAI,CAAC,cAAAH,WAAA,uBAAZA,WAAA,CAAmCvD,MAAM;MAE3C,IAAI,CAACvB,KAAK,CAACC,OAAO,CAACsB,MAAM,CAAC,EAAE;QAC1B,OAAO9C,oBAAoB,CAAC,CAAC;MAC/B;MAEA,QAAQ2F,SAAS;QACf,KAAK,UAAU;UAAE;YACf,IAAI,CAACpE,KAAK,CAACC,OAAO,CAAC8E,kBAAkB,CAAC,EAAE;cACtC,OAAOtG,oBAAoB,CAAC,CAAC;YAC/B;YACA,OAAO4G,aAAa,CAClBvH,UAAU,EACViH,kBAAkB,EAClBxD,MAAM,EACNtC,cAAc,EACdhB,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNsD,QAAQ,EACRC,OAAO,EACPiD,OACF,CAAC;UACH;QACA,KAAK,KAAK;QACV,KAAK,SAAS;UAAE;YACd,OAAOtD,YAAY,CACjBxD,UAAU,EACVyD,MAAM,EACNtC,cAAc,EACdhB,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNsD,QAAQ,EACRC,OAAO,EACPiD,OACF,CAAC;UACH;MACF;IACF,CAAC;IAgBD,MAAMU,iBAAiB,GAAG,MAAAC,IAAA,IAKM;MAAA,IAAAC,KAAA,EAAAC,UAAA;MAAA,IALC;QAC/BtF,IAAI;QACJlB,cAAc;QACdyG,kBAAkB;QAClBC;MACwB,CAAC,GAAAJ,IAAA;MACzB,IAAIK,mBAAmB,GAAG,KAAK;MAC/B,MAAMhB,OAAuB,GAAG;QAC9BiB,QAAQ,EAAE,EAAE;QACZC,QAAQ,EAAEA,CAAA,KAAM;UACdF,mBAAmB,GAAG,IAAI;QAC5B;MACF,CAAC;MACD,IAAIG,aAAa,GAAG,CAAC;MACrB,IAAIC,SAAuB;MAC3B,IAAIC,aAAa,GAAG,IAAI;;MAExB;MACA;MACA;MACA;MACA;MACA;MACA,OAAOA,aAAa,IAAIL,mBAAmB,EAAE;QAC3CA,mBAAmB,GAAG,KAAK;QAC3BI,SAAS,GAAG,MAAMrB,2BAA2B,CAC3C1F,cAAc,EACd2F,OAAO,EACPqB,aAAa,IAAI9F,IAAI,KAAK,SAC5B,CAAC;;QAED;QACA,IAAI,CAACyF,mBAAmB,IAAIzF,IAAI,KAAK,UAAU,EAAE;UAC/C,MAAM+F,YAAY,GAAG,CAAC,GAAGR,kBAAkB,EAAE,GAAGC,mBAAmB,CAAC;UACpE,MAAMQ,eAAe,CAACH,SAAS,EAAE/G,cAAc,EAAE,CAC/CA,cAAc,CAACE,QAAQ,EACvB,GAAG+G,YAAY,CAChB,CAAC;QACJ;QAEAtB,OAAO,CAACiB,QAAQ,CAACxD,OAAO,CAAE+D,OAAO,IAAKA,OAAO,CAAC,CAAC,CAAC;QAChDxB,OAAO,CAACiB,QAAQ,CAAClD,MAAM,GAAG,CAAC;QAC3BsD,aAAa,GAAG,KAAK;QACrB;QACA,IAAI,EAAEF,aAAa,GAAG,EAAE,EAAE;UACxB,MAAM,IAAIrF,KAAK,CACb,2CAA2CuB,SAAS,CAAC/C,GAAG,GAC1D,CAAC;QACH;MACF;MAEA,CAAAuG,UAAA,IAAAD,KAAA,GAAAQ,SAAS,EAAEvD,IAAI,cAAAgD,UAAA,cAAAA,UAAA,GAAfD,KAAA,CAAW/C,IAAI,GAAK;QAClB4D,GAAG,EAAEvJ,SAAS,CAACwJ,WAAW;QAC1B3H,MAAM,EAAEb,UAAU;QAClB4G;MACF,CAAC;MACD,OAAOsB,SAAS;IAClB,CAAC;IAED,MAAMO,gBAAgB,GAAG,MAAMjB,iBAAiB,CAAC;MAC/CnF,IAAI,EAAE,SAAS;MACflB;IACF,CAAC,CAAC;IAEF,MAAM;MAAEuH,OAAO;MAAEC;IAAU,CAAC,IAAAnC,oBAAA,GAAGrC,SAAS,CAACyE,SAAS,cAAApC,oBAAA,cAAAA,oBAAA,GAAI,CAAC,CAAC;IAExD,IAAII,QAAQ,EAAE;MAAA,IAAAiC,qBAAA;MACZJ,gBAAgB,CAAChE,mBAAmB,GAAG,IAAI;MAC3C,IAAIqE,QAAQ,GAAG,CAAC;MAChB,MAAMd,QAAQ,GAAG,MAAAA,CAAA,KAAY;QAC3B,MAAMe,eAAe,GAAG,EAAED,QAAQ;QAClC,MAAM,CAACE,oBAAoB,EAAEpB,kBAAkB,EAAEC,mBAAmB,CAAC,GACnEoB,0BAA0B,CAAC9H,cAAc,CAAC;QAE5C,MAAM+H,kBAAkB,GAAG,MAAM1B,iBAAiB,CAAC;UACjDnF,IAAI,EAAE,UAAU;UAChBlB,cAAc,EAAE6H,oBAAoB;UACpCpB,kBAAkB;UAClBC;QACF,CAAC,CAAC;;QAEF;QACA,IAAIiB,QAAQ,KAAKC,eAAe,EAAE;UAChC,IAAIJ,SAAS,EAAE;YACbhJ,eAAe,CACbgJ,SAAS,EACTxH,cACF,CAAC,CAAC,IAAIgI,WAAW,CAAC,SAAS,EAAE;cAAEC,MAAM,EAAE;gBAAEC,QAAQ,EAAE;cAAK;YAAE,CAAC,CAAC,CAAC;UAC/D;UAEAlJ,eAAe,CAACmJ,QAAQ,CACtBhJ,MAAM,EACNuD,OAAO,EACPqF,kBAAkB,CAACvE,IAAI,EACvB3E,UACF,CAAC;UAED,IAAI0I,OAAO,EAAE;YACX/I,eAAe,CACb+I,OAAO,EACPM,oBACF,CAAC,CAAC,IAAIG,WAAW,CAAC,OAAO,EAAE;cAAEC,MAAM,EAAE;gBAAEC,QAAQ,EAAE;cAAK;YAAE,CAAC,CAAC,CAAC;UAC7D;UAEA,KAAK,MAAME,KAAK,IAAI,CAAC,GAAG3B,kBAAkB,EAAE,GAAGC,mBAAmB,CAAC,EAAE;YACnE0B,KAAK,CAACC,cAAc,CAAC,CAAC;UACxB;QACF;MACF,CAAC;MACD;MACA,MAAMC,iBAAiB,GAAG/L,QAAQ,CAACsK,QAAQ,EAAE,CAAC,EAAE;QAC9C0B,OAAO,EAAE,IAAI;QACbC,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,MAAMC,YAAY,GAChB5J,UAAU,CAACuI,GAAG,KAAKvJ,SAAS,CAAC6K,KAAK,GAAG7J,UAAU,GAAG,IAAI;MACxD,MAAM+H,QAAQ,GAAG6B,YAAY,IAAAf,qBAAA,GAAIe,YAAY,CAAC7B,QAAQ,cAAAc,qBAAA,cAAAA,qBAAA,GAArBe,YAAY,CAAC7B,QAAQ,GAAK,EAAE,GAAI,EAAE;MACnE,IAAIrB,YAAY,EAAE;QAChB,KAAK,MAAMoD,WAAW,IAAIpD,YAAY,EAAE;UACtCqB,QAAQ,CAAClG,IAAI,CACXV,cAAc,CAACE,QAAQ,CAAC0I,QAAQ,CAACD,WAAW,EAAEL,iBAAiB,CACjE,CAAC;QACH;MACF;MACA,IAAI9C,UAAU,EAAE;QACd,KAAK,MAAMmD,WAAW,IAAInD,UAAU,EAAE;UACpC,MAAMqD,aAAa,GAAGpL,gBAAgB,CACpCuC,cAAc,EACd,OAAO,EACP,MAAMsE,UAAU,GAClB,CAAC;UACDsC,QAAQ,CAAClG,IAAI,CAACmI,aAAa,CAACD,QAAQ,CAACD,WAAW,EAAEL,iBAAiB,CAAC,CAAC;QACvE;MACF;IACF;IAEA,IAAIf,OAAO,EAAE;MACXvI,eAAe,CAAC8J,0BAA0B,CAAC,SAAS,EAAE,MAAM;QAC1DtK,eAAe,CACb+I,OAAO,EACPvH,cACF,CAAC,CAAC,IAAIgI,WAAW,CAAC,OAAO,EAAE;UAAEC,MAAM,EAAE;YAAEC,QAAQ,EAAE;UAAM;QAAE,CAAC,CAAC,CAAC;MAC9D,CAAC,CAAC;IACJ;IAEA,IAAIV,SAAS,EAAE;MACbxI,eAAe,CAAC8J,0BAA0B,CAAC,WAAW,EAAE,MAAM;QAC5DtK,eAAe,CACbgJ,SAAS,EACTxH,cACF,CAAC,CAAC,IAAIgI,WAAW,CAAC,SAAS,EAAE;UAAEC,MAAM,EAAE;YAAEC,QAAQ,EAAE;UAAM;QAAE,CAAC,CAAC,CAAC;MAChE,CAAC,CAAC;IACJ;IAEA,OAAOZ,gBAAgB;EACzB;;EAEA;EACA,IAAI,QAAQ,CAACyB,IAAI,CAAC5D,SAAS,CAAC,IAAI,CAACzH,eAAe,CAACsL,GAAG,CAAC7D,SAAS,CAAC,EAAE;IAC/D,MAAMlD,SAAS,CACbjG,sBAAsB,CAAC,CAACmJ,SAAS,CAAC,EAAExH,gBAAgB,CAAC,CAAC,CAAC,EACvD,OAAO,EACPwH,SAAS,EACTnG,eAAe,CAACmD,aAClB,CAAC;EACH;EAEA,MAAM8G,UAAU,GAAGzL,0BAA0B,CAC3C2H,SAAS,GAAArB,mBAAA,GACT9D,cAAc,CAACkJ,GAAG,cAAApF,mBAAA,uBAAlBA,mBAAA,CAAoBqF,EACtB,CAAC;EAED,IAAIF,UAAU,EAAE;IAAA,IAAAG,aAAA;IACd,MAAMC,QAAQ,IAAAD,aAAA,GAAG3G,QAAQ,CAACuG,GAAG,CAACC,UAAU,CAAC,cAAAG,aAAA,cAAAA,aAAA,GAAI,CAAC;IAC9C,IAAIC,QAAQ,IAAI,EAAE,EAAE;MAClB,MAAM,IAAI5H,KAAK,CACb,8CAA8CwH,UAAU,GAC1D,CAAC;IACH;IACAxG,QAAQ,CAAC6G,GAAG,CAACL,UAAU,EAAEI,QAAQ,GAAG,CAAC,CAAC;EACxC,CAAC,MAAM,IAAIlE,SAAS,CAACoE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACC,cAAc,CAACR,GAAG,CAAC7D,SAAS,CAAC,EAAE;IACpE,IAAIA,SAAS,KAAKlH,aAAa,EAAE;MAC/BG,oBAAoB,CAAC,CAAC;IACxB,CAAC,MAAM;MACLmB,MAAM,CAAC0B,YAAY,CAACP,IAAI,CACtBuB,SAAS,CACPnG,uBAAuB,CAAC,CAACqJ,SAAS,CAAC,EAAExH,gBAAgB,CAAC,CAAC,CAAC,EACxD,OAAO,EACPwH,SAAS,EACTnG,eAAe,CAACmD,aAClB,CACF,CAAC;IACH;EACF;EAEA,IAAIsH,QAAiB;EACrB,IAAIC,SAA8C;EAClD,IAAIvE,SAAS,KAAKlH,aAAa,EAAE;IAAA,IAAA0L,qBAAA,EAAAC,sBAAA;IAC/B,CAAC;MAAEH,QAAQ;MAAE,GAAGC;IAAU,CAAC,IAAAC,qBAAA,GAAG3G,SAAS,CAAC6G,UAAU,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;IAExD,KAAAC,sBAAA,GAAI5G,SAAS,CAAC6G,UAAU,cAAAD,sBAAA,eAApBA,sBAAA,CAAsBE,OAAO,EAAE;MACjCL,QAAQ,GAAG,MAAM5M,qBAAqB,CAAC4M,QAAQ,EAAEzJ,cAAc,CAAC;IAClE;EACF,CAAC,MAAM;IACL,IAAIA,cAAc,CAAC+J,UAAU,EAAE;MAC7B;MACA,MAAMzI,SAAS,GAAI0B,SAAS,CACzB1B,SAAS;MACZ,IAAIA,SAAS,EAAE;QACbtD,mBAAmB,CACjBkH,MAAM,EACN,sBAAsB,EACtB,uDAAuD,EACvDlC,SACF,CAAC;QAED,IAAI,CAACkC,MAAM,EAAE;UACXwE,SAAS,GAAG;YACV,GAAG1G,SAAS,CAAC6G,UAAU;YACvB,GAAGvI;UACL,CAAC;QACH;MACF;IACF;IACAoI,SAAS,aAATA,SAAS,cAATA,SAAS,GAATA,SAAS,GAAK1G,SAAS,CAAC6G,UAAU;EACpC;EAEA,MAAMG,mBAA0C,GAAG,EAAE;EACrD,MAAMC,oBAAoB,GAAGvN,+BAA+B,CAC1DgN,SAAS,EACT1J,cAAc,EACdgK,mBACF,CAAC;EAED,MAAME,qBAAqB,GAAGlH,SAAS,CAAC9F,mCAAmC,CAAC;EAC5E,IAAIgN,qBAAqB,EAAE;IACzBD,oBAAoB,CAACvJ,IAAI,CAAC,GAAGwJ,qBAAqB,CAAC;EACrD;EAEA,MAAMC,QAAQ,GAAGhF,SAAS,KAAK,QAAQ;EACvC,IAAIgF,QAAQ,IAAIhF,SAAS,KAAK,MAAM,EAAE;IACpC,MAAMiF,KAAK,GAAG,MAAMzN,wBAAwB,CAACsN,oBAAoB,CAAC;IAClE,IAAIE,QAAQ,GAAGC,KAAK,CAACC,GAAG,GAAGD,KAAK,CAACE,GAAG,KAAK,YAAY,IAAIF,KAAK,CAACG,IAAI,EAAE;MAAA,IAAAC,mBAAA;MACnE,MAAMC,MAAM,IAAAD,mBAAA,GAAGE,MAAM,CAACC,WAAW,cAAAH,mBAAA,cAAAA,mBAAA,GAAI,EAAE;MACvC,IAAIL,QAAQ,EAAE;QACZ,MAAM;UAAEE,GAAG;UAAE,GAAGO;QAAM,CAAC,GAAGR,KAAK;QAC/B,MAAMnI,SAAS,CACb/F,UAAU,CAACmO,GAAG,EAAYI,MAAM,EAAEG,KAAK,CAAC,EACxC,QAAQ,EACRP,GAAG,EACH,QACF,CAAC;MACH,CAAC,MAAM;QACL,MAAM;UAAEE,IAAI;UAAE,GAAGK;QAAM,CAAC,GAAGR,KAAK;QAChC,MAAMnI,SAAS,CACb9F,SAAS,CAACoO,IAAI,EAAYE,MAAM,EAAEG,KAAK,CAAC,EACxC,YAAY,EACZL,IAAI,EACJ,QACF,CAAC;MACH;MACA,OAAOhL,MAAM;IACf;EACF;EAEA,MAAMwE,KAAkB,GAAG;IACzBqD,GAAG,EAAEvJ,SAAS,CAAC6K,KAAK;IACpBxH,IAAI,EAAE+H,UAAU,IAAI9D,SAAS;IAC7BzF,MAAM,EAAEb,UAAU;IAClBM,MAAM;IACN0L,MAAM,EAAE7H,SAAS,CAAC6H,MAAM;IACxB7K,cAAc;IACd8K,MAAM,EAAE9H,SAAS,CAAC8H,MAAM;IACxB7K,GAAG,EAAE+C,SAAS,CAAC/C,GAAG;IAClB8K,GAAG,EAAG/H,SAAS,CAAyB+H;EAC1C,CAAC;EAEDxL,MAAM,CAACiE,IAAI,GAAGO,KAAK;;EAEnB;EACA,MAAMhC,cAAc,GAAGzF,wBAAwB,CAC7C,CAAC0G,SAAS,CAAC6H,MAAM,EAAE7H,SAAS,CAACyE,SAAS,CAAC,EACvC,YAAY,EACZ,CACF,CAAC;EACD,IAAI1F,cAAc,CAACC,IAAI,GAAG,CAAC,EAAE;IAC3BzC,MAAM,CAAC0B,YAAY,CAACP,IAAI,CACtBuB,SAAS,CACPhG,0BAA0B,CAAC8F,cAAc,EAAEpE,gBAAgB,CAAC,CAAC,CAAC,EAC9D,YAAY,EACZ,CAAC,GAAGoE,cAAc,CAAC,CAACG,IAAI,CAAC,IAAI,CAAC,EAC9BlD,eAAe,CAACmD,aAClB,CACF,CAAC;EACH;;EAEA;EACA,MAAMlB,YAAgC,GAAG,EAAE;;EAE3C;EACAlE,iBAAiB,CAACiD,cAAc,EAAEgK,mBAAmB,EAAE3K,cAAc,CAAC;EAEtE,MAAM2L,cAAc,GAAG,MAAAA,CAAA,KAAY;IACjCjH,KAAK,CAAC8F,UAAU,GAAG,MAAMlN,wBAAwB,CAACsN,oBAAoB,CAAC;IACvEnN,uBAAuB,CAACiH,KAAK,EAAEiG,mBAAmB,CAAC;EACrD,CAAC;EACD/I,YAAY,CAACP,IAAI,CAACsK,cAAc,CAAC,CAAC,CAAC;EAEnChM,eAAe,CAACiM,sBAAsB,CAAClH,KAAK,EAAEf,SAAS,CAACyE,SAAS,CAAC;EAElE,IAAIyD,iBAAiB,GAAGlI,SAAS;EACjC,IAAIiG,UAAU,EAAE;IACdiC,iBAAiB,GAAG3N,oBAAoB,CACtC0L,UAAU,EACVjG,SAAS,EACTe,KAAK,EACLkG,oBAAoB,EACpBjL,eACF,CAAC;EACH,CAAC,MAAM,IAAImG,SAAS,KAAKlH,aAAa,EAAE;IACtCiN,iBAAiB,GAAG/M,kBAAkB,CACpCsL,QAAQ,EACRzG,SAAS,EACTe,KAAK,EACLkG,oBAAoB,EACpBjL,eACF,CAAC;EACH;EAEA,IAAIkM,iBAAiB,CAACJ,MAAM,EAAE;IAC5B;IACA/G,KAAK,CAAC5E,MAAM,GAAGqB,SAAS;EAC1B;EAEA,IAAI2K,mBAAmC;EACvC,IAAIlC,UAAU,EAAE;IACd;IACAkC,mBAAmB,GAAG;MACpB,GAAGnL;IACL,CAAC;IACD,OAAOmL,mBAAmB,CAACpG,WAAW;IACtC,OAAOoG,mBAAmB,CAACnG,YAAY;IACvC,OAAOmG,mBAAmB,CAAClG,WAAW;EACxC,CAAC,MAAM;IACLkG,mBAAmB,GAAGnL,cAAc;EACtC;EAEA,MAAMoL,YAAY,GAAG,MAAAA,CAAA,KAAY;IAC/B,MAAM7G,KAAK,GAAG2B,eAAe,CAC3BgF,iBAAiB,CAAC/E,QAAQ,EAC1B+E,iBAAiB,CAAC3G,KACpB,CAAC;IACD,IAAI,CAACA,KAAK,EAAE;MACV;IACF;IACA,MAAM8G,0BAA0B,GAAG,IAAIlI,GAAG,CAAiB,CAAC;IAC5D,MAAMP,QAAQ,GAAG,MAAMC,OAAO,CAACC,GAAG,CAChC0B,MAAM,CAAC8G,OAAO,CAAC/G,KAAK,CAAC,CAACxB,GAAG,CAAC,CAAAwI,KAAA,EAA0BtI,KAAK,KAAK;MAAA,IAAnC,CAACuI,WAAW,EAAEC,QAAQ,CAAC,GAAAF,KAAA;MAChD,IAAIE,QAAQ,CAACvK,IAAI,KAAK,QAAQ,EAAE;QAC9B,OAAOmB,YAAY,CACjB0B,KAAK,EACJ0H,QAAQ,CAAsBnJ,MAAM,EACrC6I,mBAAmB,EACnBnM,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBsM,WAAW,EACX/I,QAAQ,EACRjC,SAAS,EACTnB,cACF,CAAC;MACH;MAEA,MAAMqM,WAAW,GAAGzM,YAAY,CAACA,YAAY,CAACyE,MAAM,GAAG,CAAC,CAE3C;MACb,IAAIgI,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEC,oBAAoB,EAAE;QACrCN,0BAA0B,CAAC/B,GAAG,CAACrG,KAAK,EAAEuI,WAAW,CAAC;QAClDxM,eAAe,CAAC4M,wBAAwB,CACtCH,QAAQ,EACRxM,YAAY,EACZ,OAAO4M,QAAQ,EAAEC,YAAY,KAAK;UAChC,MAAM;YAAEC;UAAS,CAAC,GAAGZ,mBAAmB,CAACjC,GAAG;UAC5C,MAAM;YAAE8C;UAAS,CAAC,GAAGH,QAAQ;UAC7B;UACA,IACE,CAACtN,aAAa,CAACwN,QAAQ,EAAEC,QAAQ,CAAC,IAClC,CAAC/M,YAAY,CAACgN,KAAK,CAAEpM,KAAK,IAAK;YAC7B,IAAIqM,SAA6B;YACjC,IAAIC,QAA4B;YAChC,OACE,CAACD,SAAS,GAAGlP,UAAU,CACrB6C,KAAK,EACLkM,QAAQ,EACRD,YAAY,CAACE,QACf,CAAC,MACAG,QAAQ,GAAGnP,UAAU,CAAC6C,KAAK,EAAEkM,QAAQ,EAAEC,QAAQ,CAAC,CAAC,KACjDnM,KAAK,KAAK6L,WAAW,IACpBlP,OAAO,CAAC0P,SAAS,CAACE,MAAM,EAAED,QAAQ,CAACC,MAAM,CAAC,CAAC;UAEjD,CAAC,CAAC,EACF;YACA,OAAO,KAAK;UACd;UAEA,MAAM,CACJvE,oBAAoB,EACpBpB,kBAAkB,EAClBC,mBAAmB,CACpB,GAAGoB,0BAA0B,CAAC;YAC7B,GAAGqD,mBAAmB;YACtBU,QAAQ;YACRQ,KAAK,EAAE,IAAIC,eAAe,CAACT,QAAQ,CAACU,MAAM;UAC5C,CAAC,CAAC;UAEF,IAAIC,MAAM,GAAG,KAAK;UAClB,IAAIC,iBAA+B;UACnC,IAAIxF,YAAiD,GAAG,EAAE;UAE1D,IAAI;YACFwF,iBAAiB,GAAG,MAAM7N,YAAY,CACpCmF,KAAK,EACL0H,QAAQ,CAAC3M,MAAM,EACf+I,oBAAoB,EACpB7I,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBsM,WAAW,EACX,IACF,CAAC;;YAED;YACA;YACA,IAAIiB,iBAAiB,CAAC5M,KAAK,EAAE;cAC3B;cACA,IAAIb,eAAe,CAAC0N,SAAS,CAACD,iBAAiB,CAAC,EAAE;gBAChD,OAAO,IAAI;cACb;cAEAxF,YAAY,GAAG,CACb,GAAGR,kBAAkB,EACrB,GAAGC,mBAAmB,CACvB;cACD,MAAMQ,eAAe,CACnBuF,iBAAiB,EACjB5E,oBAAoB,EACpB,CAACA,oBAAoB,CAAC3H,QAAQ,EAAE,GAAG+G,YAAY,CACjD,CAAC;YACH;YAEA,MAAMjI,eAAe,CAAC2N,uBAAuB,CAC3CzN,qBAAqB,EACrBuM,QAAQ,CAAC3M,MAAM,EACf2N,iBAAiB,CAAChN,eACpB,CAAC;UACH,CAAC,CAAC,OAAO+B,KAAK,EAAE;YACd;YACAD,OAAO,CAACC,KAAK,CAAC,gCAAgC,EAAEA,KAAK,CAAC;YAEtD,MAAMoL,MAAM,GAAG,MAAM5N,eAAe,CAAC6N,OAAO,CAACrL,KAAK,EAAEuC,KAAK,CAAC;YAC1D,IAAI,CAAC6I,MAAM,EAAE;cACX,OAAO,IAAI;YACb;YACA,CAAC;cAAEJ,MAAM;cAAEjN,MAAM,EAAEkN;YAAkB,CAAC,GAAGG,MAAM;;YAE/C;YACA,MAAM5N,eAAe,CAAC2N,uBAAuB,CAC3CzN,qBAAqB,EACrBuM,QAAQ,CAAC3M,MAAM,EACf2N,iBAAiB,CAAChN,eACpB,CAAC;UACH;UAEAT,eAAe,CAACmJ,QAAQ,CACtBqD,WAAW,EACX,EAAE,EACFiB,iBAAiB,CAACjJ,IAAI,EACtBO,KACF,CAAC;UAED,IAAI,CAACyI,MAAM,EAAE;YACX3E,oBAAoB,CAAC3H,QAAQ,CAACmI,cAAc,CAC1CoE,iBAAiB,CAAC5M,KACpB,CAAC;YACD,KAAK,MAAMuI,KAAK,IAAInB,YAAY,EAAE;cAChCmB,KAAK,CAACC,cAAc,CAAC,CAAC;YACxB;UACF;;UAEA;UACA,OAAO,IAAI;QACb,CACF,CAAC;MACH;MAEA,OAAOzJ,YAAY,CACjBmF,KAAK,EACL0H,QAAQ,CAAC3M,MAAM,EACfqM,mBAAmB,EACnBnM,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBsM,WAAW,EACXhL,SAAS,EACTnB,cACF,CAAC;IACH,CAAC,CACH,CAAC;IAED,MAAMyN,cAA4B,GAAG;MACnC,GAAGvN,MAAM;MACTiE,IAAI,EAAEhD,SAAS;MACfS,YAAY,EAAE,EAAE;MAChBxB,eAAe,EAAEe;IACnB,CAAC;IACDoC,QAAQ,CAACQ,OAAO,CAAC,CAACC,IAAI,EAAEJ,KAAK,KAAK;MAChC,IAAIoI,0BAA0B,CAAC0B,GAAG,CAAC9J,KAAK,CAAC,EAAE;QACzC;QACAjE,eAAe,CAACuE,OAAO,CACrB8H,0BAA0B,CAACrC,GAAG,CAAC/F,KAAK,CAAC,EACrC,EAAE,EACFI,IAAI,CAACG,IAAI,EACTO,KACF,CAAC;MACH;MACAxB,iBAAiB,CAACuK,cAAc,EAAEzJ,IAAI,CAAC;MACvC2J,6BAA6B,CAACF,cAAc,EAAEzJ,IAAI,CAAC;IACrD,CAAC,CAAC;IACF,IAAIyJ,cAAc,CAACtJ,IAAI,EAAE;MACvBO,KAAK,CAACkJ,KAAK,GAAGH,cAAc,CAACtJ,IAAI;IACnC;IACAjB,iBAAiB,CAAChD,MAAM,EAAE;MACxB,GAAGuN,cAAc;MACjBtJ,IAAI,EAAEhD;IACR,CAAC,CAAC;IAEFgC,qBAAqB,CACnBtD,qBAAqB,EACpBK,MAAM,CAACE,eAAe,GAAGqN,cAAc,CAACrN,eAC3C,CAAC;EACH,CAAC;EACDwB,YAAY,CAACP,IAAI,CAAC0K,YAAY,CAAC,CAAC,CAAC;EAEjC,MAAMvI,OAAO,CAACC,GAAG,CAAC7B,YAAY,CAAC;EAE/B,OAAO1B,MAAM;AACf;AAEA,SAAS8E,qBAAqBA,CAACH,OAAgB,EAAW;EACxD,OAAO,OAAOA,OAAO,KAAK,QAAQ,GAC9B9H,UAAU,CAAC8H,OAAO,CAAC,GACnB7F,cAAc,CAAC6F,OAAO,CAAC;EACrB;EACA9H,UAAU,CAACkC,kBAAkB,CAAC4F,OAAO,CAAC,CAAC;AAC/C;AAIA,SAASoB,uBAAuBA,CAC9BvB,KAAa,EACuB;EACpC,IAAIA,KAAK,KAAK,UAAU,IAAIA,KAAK,KAAK,KAAK,IAAIA,KAAK,KAAK,SAAS,EAAE;IAClE,MAAM,IAAItC,KAAK,CAAC,qCAAqCsC,KAAK,GAAG,CAAC;EAChE;AACF;AAEA,eAAeqC,aAAaA,CAC1BvH,UAA4B,EAC5ByF,UAAqB,EACrBhC,MAAmB,EACnBtC,cAA8B,EAC9BhB,eAAgC,EAChCC,YAAyB,EACzBC,qBAAsC,EACtCC,MAA0B,EAC1BsD,QAA6B,EAC7BC,OAAiB,EACjBrD,cAA+B,EACR;EACvB,MAAME,MAAM,GAAGC,oBAAoB,CAAC,CAAC;EAErC,MAAMwC,IAAI,GAAGsC,UAAU,CAACZ,MAAM;EAC9B,MAAMd,QAAQ,GAAG,MAAMC,OAAO,CAACC,GAAG,CAChCwB,UAAU,CAACvB,GAAG,CAAC,CAACM,IAAI,EAAE6J,CAAC,KACrBrK,OAAO,CAACC,GAAG,CACTR,MAAM,CAACS,GAAG,CAAC,CAACC,SAAS,EAAEmK,CAAC,KACtBjK,WAAW,CACTrE,UAAU,EACVmE,SAAS,EACT;IACE,GAAGhD,cAAc;IACjB+E,WAAW,EAAE1B,IAAI;IACjB2B,YAAY,EAAEkI,CAAC;IACfjI,WAAW,EAAEjD;EACf,CAAC,EACDhD,eAAe,EACfC,YAAY,EACZC,qBAAqB,EACrBC,MAAM,EACNuD,OAAO,CAACrC,MAAM,CAAC6M,CAAC,GAAGlL,IAAI,GAAGmL,CAAC,CAAC,EAC5B1K,QAAQ,IAAI,IAAIU,GAAG,CAACV,QAAQ,CAAC,EAC7BpD,cACF,CACF,CACF,CACF,CACF,CAAC;;EAED;EACAuD,QAAQ,CAACwK,IAAI,CAAC,CAAC,CAAChK,OAAO,CAAC,CAACC,IAAI,EAAEJ,KAAK,KAAK;IACvC,IAAII,IAAI,CAACC,mBAAmB,EAAE;MAC5B;MACAtE,eAAe,CAACuE,OAAO,CACrBpE,MAAM,EACNuD,OAAO,CAACrC,MAAM,CAAC4C,KAAK,CAAC,EACrBI,IAAI,CAACG,IAAI,EACT3E,UACF,CAAC;IACH;IACA0D,iBAAiB,CAAChD,MAAM,EAAE8D,IAAI,CAAC;EACjC,CAAC,CAAC;EAEF,OAAO9D,MAAM;AACf;AAEA,OAAO,SAAS8N,aAAaA,CAACrN,cAA8B,EAAE;EAC5D,OAAO,CACLA,cAAc,CAACE,QAAQ,EACvB,GAAGF,cAAc,CAACsN,gBAAgB,CAACC,MAAM,CAAC,CAAC,EAC3C,GAAGvN,cAAc,CAACwN,iBAAiB,CAACD,MAAM,CAAC,CAAC,CAC7C;AACH;AAEA,OAAO,SAASrG,eAAeA,CAC7B3H,MAAoB,EACpBS,cAA8B,EAC9ByN,MAAkC,EAClC;EACA1R,qBAAqB,CAAC,CAAC;EAEvB,OAAO8G,OAAO,CAACC,GAAG,CAAC,CACjB,GAAGvD,MAAM,CAAC0B,YAAY,EACtB,GAAGwM,MAAM,CAAC1K,GAAG,CAAEqF,KAAK,IAAKA,KAAK,CAACsF,UAAU,CAAC,CAAC,CAAC,EAC5C,GAAG1N,cAAc,CAACS,0BAA0B,CAC7C,CAAC;AACJ;AAEA,OAAO,SAASqH,0BAA0BA,CACxC9H,cAA8B,EAK9B;EACA,MAAMyG,kBAAwC,GAAG,EAAE;EACnD,MAAMC,mBAA8C,GAAG,EAAE;EACzD,MAAMmB,oBAAoC,GAAG;IAC3C,GAAG7H,cAAc;IACjByG,kBAAkB;IAClBC;EACF,CAAC;EACD,OAAO,CAACmB,oBAAoB,EAAEpB,kBAAkB,EAAEC,mBAAmB,CAAC;AACxE;AAEA,SAAS/E,QAAQA,CACfgM,QAA8B,EAC9B3N,cAA8B,EAC9B;EACA,IAAI,CAAC2N,QAAQ,EAAE;IACb;EACF;;EAEA;EACA,IAAKA,QAAQ,CAAwBzM,IAAI,KAAK,OAAO,EAAE;IACrD;IACAK,OAAO,CAACC,KAAK,CAAC,uCAAuC,EAAEmM,QAAQ,CAAC;IAChE,MAAM,IAAIlM,KAAK,CAAC,sCAAsC,CAAC;EACzD;;EAEA;EACA,IAAIkM,QAAQ,CAACzM,IAAI,KAAK,SAAS,EAAE;IAC/B;IACAK,OAAO,CAACqM,IAAI,CAAC,mDAAmD,EAAED,QAAQ,CAAC;IAC3E;EACF;EAEA,OAAO9Q,qBAAqB,CAC1B8Q,QAAQ,EACR3N,cACF,CAAC;AACH;AAEA,SAASuC,iBAAiBA,CACxBhD,MAAoB,EACpB6C,SAAuB,EACjB;EACN,MAAM;IAAEnB,YAAY;IAAEuC,IAAI;IAAE/D,eAAe;IAAE6D,mBAAmB;IAAE,GAAGuK;EAAK,CAAC,GACzEzL,SAAS;EACX7C,MAAM,CAAC0B,YAAY,CAACP,IAAI,CAAC,GAAGO,YAAY,CAAC;EAEzC,IAAIuC,IAAI,EAAE;IACR,IAAIjE,MAAM,CAACiE,IAAI,EAAE;MACf,IAAIsK,IAAI,GAAGvO,MAAM,CAACiE,IAAI;MACtB,OAAOsK,IAAI,CAACC,OAAO,EAAE;QACnBD,IAAI,GAAGA,IAAI,CAACC,OAAO;MACrB;MACAD,IAAI,CAACC,OAAO,GAAGvK,IAAI;IACrB,CAAC,MAAM;MACLjE,MAAM,CAACiE,IAAI,GAAGA,IAAI;IACpB;EACF;EAEAgB,MAAM,CAACwJ,MAAM,CAACzO,MAAM,EAAEsO,IAAI,CAAC;AAC7B;AAEA,SAASb,6BAA6BA,CACpCzN,MAAoB,EACpB6C,SAAuB,EACvB;EACA,MAAM3C,eAAe,GAAG2C,SAAS,CAAC3C,eAAe;EACjD,IAAIA,eAAe,EAAE;IACnB,IAAIF,MAAM,CAACE,eAAe,EAAE;MAC1B,IAAIqO,IAAI,GAAGvO,MAAM,CAACE,eAAe;MACjC,OAAOqO,IAAI,CAACC,OAAO,EAAE;QACnBD,IAAI,GAAGA,IAAI,CAACC,OAAO;MACrB;MACAD,IAAI,CAACC,OAAO,GAAGtO,eAAe;IAChC,CAAC,MAAM;MACLF,MAAM,CAACE,eAAe,GAAGA,eAAe;IAC1C;EACF;AACF;AAEA,SAAS+C,qBAAqBA,CAC5BtD,qBAAsC,EACtCO,eAA4C,EAC5C;EACA,IAAI,CAACA,eAAe,EAAE;IACpB;EACF;EACA,IAAIP,qBAAqB,CAAC+N,KAAK,EAAE;IAC/B,IAAIa,IAAI,GAAG5O,qBAAqB,CAAC+N,KAAK;IACtC,OAAOa,IAAI,CAACC,OAAO,EAAE;MACnBD,IAAI,GAAGA,IAAI,CAACC,OAAO;IACrB;IACAD,IAAI,CAACC,OAAO,GAAGtO,eAAe;EAChC,CAAC,MAAM;IACLP,qBAAqB,CAAC+N,KAAK,GAAGxN,eAAe;EAC/C;AACF;AAEA,SAASD,oBAAoBA,CAAA,EAAiB;EAC5C,OAAO;IAAEyB,YAAY,EAAE;EAAG,CAAC;AAC7B;AAEA,OAAO,SAASiF,eAAeA,CAC7BC,QAAiC,EACjC8H,aAAoC,EACpC;EACA,IAAIC,QAAQ,GAAGD,aAAa;EAC5B;EACA,IACEE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IACtClI,QAAQ,IACR,CAACpF,KAAK,CAACC,OAAO,CAACmF,QAAQ,CAAC,EACxB;IACA;IACA5E,OAAO,CAACqM,IAAI,CACV,yCAAyC,EACzC,IAAI,OAAOzH,QAAQ,GAAG,EACtBA,QACF,CAAC;EACH;EACA,IAAIpF,KAAK,CAACC,OAAO,CAACmF,QAAQ,CAAC,IAAI,CAAC+H,QAAQ,EAAE;IACxCA,QAAQ,GAAG,CAAC,CAAC;IACb,KAAK,MAAM;MAAElI,IAAI,EAAEsI,EAAE;MAAE,GAAGrB;IAAM,CAAC,IAAI9G,QAAQ,EAAE;MAC7C,MAAMH,IAAI,GAAGsI,EAAE,aAAFA,EAAE,cAAFA,EAAE,GAAI,EAAE;MACrB,IAAI,CAACjS,cAAc,CAAC6R,QAAQ,EAAElI,IAAI,CAAC,EAAE;QACnCkI,QAAQ,CAAClI,IAAI,CAAC,GAAG;UACf9E,IAAI,EAAE,QAAQ;UACdoB,MAAM,EAAE;QACV,CAAC;MACH;MACC4L,QAAQ,CAAClI,IAAI,CAAC,CAAsB1D,MAAM,CAAC5B,IAAI,CAACuM,KAAK,CAAC;IACzD;EACF;EACA,OAAOiB,QAAQ;AACjB;AAEA,SAASjM,SAASA,CAChBsM,OAAyB,EACzBrN,IAAsD,EACtDsN,IAAY,EACZC,aAA+C,EAC/C;EACA,OAAOA,aAAa,KAAK,QAAQ,GAC7BF,OAAO,CAACG,KAAK,CAAEC,CAAC,IAAK;IACnB;IACApN,OAAO,CAACC,KAAK,CAAC,sBAAsB,EAAEN,IAAI,EAAEsN,IAAI,EAAEG,CAAC,CAAC;EACtD,CAAC,CAAC,GACFJ,OAAO;AACb","ignoreList":[]}
|
|
@@ -202,9 +202,9 @@ function processPublicDepsPackages(brickPackages, pubDeps) {
|
|
|
202
202
|
return Array.from(bricksMap.values());
|
|
203
203
|
}
|
|
204
204
|
export function getBrickPackages() {
|
|
205
|
-
var
|
|
205
|
+
var _ref, _ref2, _bootstrapData$brickP, _bootstrapData7;
|
|
206
206
|
return (// Not necessary to process brick packages multiple times.
|
|
207
|
-
|
|
207
|
+
processedBrickPackages !== null && processedBrickPackages !== void 0 ? processedBrickPackages : processedBrickPackages = processPublicDepsPackages((_ref = (_ref2 = (_bootstrapData$brickP = (_bootstrapData7 = bootstrapData) === null || _bootstrapData7 === void 0 ? void 0 : _bootstrapData7.brickPackages) !== null && _bootstrapData$brickP !== void 0 ? _bootstrapData$brickP : injectedBrickPackages) !== null && _ref2 !== void 0 ? _ref2 : window.STANDALONE_BRICK_PACKAGES) !== null && _ref !== void 0 ? _ref : [], window.PUBLIC_DEPS)
|
|
208
208
|
);
|
|
209
209
|
}
|
|
210
210
|
export function _internalApiGetPresetBricks() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Runtime.js","names":["i18n","initializeI18n","loadBricksImperatively","deepFreeze","isObject","moment","createHistory","matchStoryboard","Router","NS","locales","loadNotificationService","loadDialogService","injectedBrickPackages","hasInstalledApp","listenDevtoolsEagerly","getV2RuntimeFromDll","customizeColorTheme","runtime","bootstrapData","router","processedBrickPackages","hooks","createRuntime","options","Error","locale","language","on","Runtime","getRuntimeV3","getRuntimeV2Factory","v2Kit","getRuntimeV2","Proxy","getRuntime","get","key","arguments","length","undefined","Reflect","_initialized","WeakMap","_bootstrapped","constructor","_classPrivateFieldInitSpec","_defineProperty","initialize","data","_data$settings","_classPrivateFieldGet","_classPrivateFieldSet","normalizeBootstrapData","notification","dialog","_internalApiGetPresetBricks","loadBricks","settings","misc","theme","bootstrap","storyboards","getRecentApps","_router$getRecentApps","_router","getCurrentApp","_router2","currentApp","appId","matchVersion","getFeatureFlags","_bootstrapData","_router3","featureFlags","config","getMiscSettings","_bootstrapData2","_router4","getBrandSettings","_bootstrapData3","base_title","brand","getLaunchpadSettings","_bootstrapData4","columns","rows","launchpad","getDesktops","_bootstrapData$deskto","_bootstrapData5","desktops","getLaunchpadSiteMap","_bootstrapData$siteSo","_bootstrapData6","siteSort","toggleLaunchpadEffect","open","document","body","classList","toggle","applyPageTitle","pageTitle","_router5","baseTitle","title","localeTitle","getNavConfig","_router6","bricks","getBrickPackages","brickPackages","processPublicDepsPackages","pubDeps","bricksMap","Map","forEach","pkg","pkgName","filePath","split","has","set","Array","from","values","_processedBrickPackag","_ref","_ref2","_bootstrapData$brickP","_bootstrapData7","window","STANDALONE_BRICK_PACKAGES","PUBLIC_DEPS","_bootstrapData$settin","_bootstrapData8","presetBricks","_internalApiGetRenderId","_router7","getRenderId","_internalApiMatchStoryboard","pathname","_bootstrapData$storyb","_bootstrapData9","_internalApiGetRuntimeContext","_router8","getRuntimeContext","_internalApiGetStoryboardInBootstrapData","_bootstrapData10","find","storyboard","app","id","_internalApiGetAppInBootstrapData","_internalApiGetStoryb","_test_only_setBootstrapData","process","env","NODE_ENV"],"sources":["../../../src/internal/Runtime.ts"],"sourcesContent":["import type {\n RuntimeStoryboard,\n BootstrapSettings,\n FeatureFlags,\n BootstrapData,\n Contract,\n Storyboard,\n BrickConf,\n RouteConf,\n ResolveConf,\n BrickPackage,\n} from \"@next-core/types\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { loadBricksImperatively } from \"@next-core/loader\";\nimport { deepFreeze, isObject } from \"@next-core/utils/general\";\nimport type { PermissionApi_validatePermissions } from \"@next-api-sdk/micro-app-sdk\";\nimport moment from \"moment\";\nimport \"moment/locale/zh-cn.js\";\nimport { createHistory } from \"../history.js\";\nimport { matchStoryboard } from \"./matchStoryboard.js\";\nimport { Router } from \"./Router.js\";\nimport { NS, locales } from \"./i18n.js\";\nimport { loadNotificationService } from \"../Notification.js\";\nimport { loadDialogService } from \"../Dialog.js\";\nimport { injectedBrickPackages } from \"./injected.js\";\nimport { type AppForCheck, hasInstalledApp } from \"./hasInstalledApp.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\nimport { listenDevtoolsEagerly } from \"./devtools.js\";\nimport { getV2RuntimeFromDll } from \"../getV2RuntimeFromDll.js\";\nimport { ThemeSettings, customizeColorTheme } from \"./customizeColorTheme.js\";\n\nlet runtime: Runtime;\n\n// Allow inject bootstrap data in a runtime other than Brick Next.\nlet bootstrapData: BootstrapData | undefined;\nlet router: Router | undefined;\nlet processedBrickPackages: BrickPackage[] | undefined;\n\nexport interface RuntimeOptions {\n hooks?: RuntimeHooks;\n}\n\nexport interface ImagesFactory {\n get(name: string): string;\n}\n\nexport interface PageViewInfo {\n status: \"ok\" | \"failed\" | \"redirected\" | \"not-found\" | \"blocked\";\n path?: string;\n pageTitle?: string;\n}\n\nexport interface RuntimeHooks {\n auth?: {\n getAuth(): object;\n isLoggedIn(): boolean;\n authenticate?(...args: unknown[]): unknown;\n logout?(...args: unknown[]): unknown;\n isBlockedPath?(pathname: string): boolean;\n };\n fulfilStoryboard?: (storyboard: RuntimeStoryboard) => Promise<void>;\n validatePermissions?: typeof PermissionApi_validatePermissions;\n checkPermissions?: {\n checkPermissions(...actions: string[]): boolean;\n preCheckPermissions(storyboard: Storyboard): Promise<void> | undefined;\n preCheckPermissionsForBrickOrRoute(\n container: BrickConf | RouteConf,\n asyncComputeRealValue: (value: unknown) => Promise<unknown>\n ): Promise<void> | undefined;\n };\n checkInstalledApps?: {\n preCheckInstalledApps(\n storyboard: Storyboard,\n hasAppInBootstrap: (appId: string) => boolean\n ): void;\n waitForCheckingApps(appIds: string[]): Promise<void>;\n getCheckedApp(appId: string): AppForCheck | undefined;\n };\n flowApi?: {\n FLOW_API_PROVIDER: string;\n registerFlowApiProvider(): void;\n isFlowApiProvider(provider: string): boolean;\n getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string,\n stream?: boolean\n ): Promise<unknown[]>;\n collectContract(contracts: Contract[] | undefined): void;\n collectWidgetContract(contracts: Contract[] | undefined): void;\n clearCollectWidgetContract(): void;\n };\n menu?: {\n getMenuById(menuId: string): unknown;\n fetchMenuById(\n menuId: string,\n runtimeContext: RuntimeContext,\n runtimeHelpers: RuntimeHooksMenuHelpers\n ): Promise<unknown>;\n };\n images?: {\n imagesFactory(\n appId: string,\n isBuildPush?: boolean,\n version?: string\n ): ImagesFactory;\n widgetImagesFactory(\n widgetId: string,\n widgetVersion?: string\n ): ImagesFactory;\n };\n messageDispatcher?: {\n subscribe(...args: unknown[]): Promise<unknown>;\n unsubscribe(...args: unknown[]): Promise<unknown>;\n onMessage(channel: string, listener: (data: unknown) => void): () => void;\n onClose(listener: () => void): () => void;\n reset(): void;\n };\n pageView?: {\n create(): (info: PageViewInfo) => void;\n };\n}\n\nexport interface RuntimeHooksMenuHelpers {\n getStoryboardByAppId(appId: string): Storyboard | undefined;\n resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext\n ): Promise<unknown>;\n asyncComputeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n options?: { ignoreSymbols?: boolean; noInject?: boolean }\n ): Promise<unknown>;\n}\n\nexport let hooks: RuntimeHooks | undefined;\n\nexport function createRuntime(options?: RuntimeOptions) {\n if (runtime) {\n throw new Error(\"Cannot create multiple runtimes\");\n }\n listenDevtoolsEagerly();\n hooks = options?.hooks;\n initializeI18n(NS, locales);\n moment.locale(i18n.language);\n i18n.on(\"languageChanged\", () => {\n moment.locale(i18n.language);\n });\n createHistory();\n runtime = new Runtime();\n return runtime;\n}\n\nfunction getRuntimeV3() {\n return runtime;\n}\n\n// istanbul ignore next\nfunction getRuntimeV2Factory() {\n const v2Kit = getV2RuntimeFromDll();\n if (v2Kit) {\n return function getRuntimeV2() {\n return new Proxy(v2Kit.getRuntime(), {\n get(...args) {\n const key = args[1];\n switch (key) {\n case \"getCurrentApp\":\n case \"getRecentApps\":\n case \"hasInstalledApp\":\n case \"getDesktops\":\n case \"getLaunchpadSettings\":\n case \"getLaunchpadSiteMap\":\n case \"toggleLaunchpadEffect\":\n case \"applyPageTitle\":\n case \"getNavConfig\":\n case \"getFeatureFlags\":\n case \"getMiscSettings\":\n case \"getBrandSettings\":\n return Reflect.get(...args);\n }\n },\n }) as unknown as Runtime;\n };\n }\n}\n\n// istanbul ignore next\nexport const getRuntime = getRuntimeV2Factory() || getRuntimeV3;\n\nexport class Runtime {\n #initialized = false;\n #bootstrapped = false;\n\n readonly version: number | undefined = 3;\n\n initialize(data: BootstrapData) {\n if (this.#initialized) {\n throw new Error(\"The runtime cannot be initialized more than once\");\n }\n this.#initialized = true;\n normalizeBootstrapData(data);\n bootstrapData = data;\n const { notification, dialog } = _internalApiGetPresetBricks();\n if (notification !== false) {\n loadNotificationService(\n notification ?? \"basic.show-notification\",\n this.loadBricks\n );\n }\n if (dialog !== false) {\n loadDialogService(dialog ?? \"basic.show-dialog\", this.loadBricks);\n }\n customizeColorTheme(data.settings?.misc?.theme as ThemeSettings);\n }\n\n async bootstrap(data?: BootstrapData) {\n if (data) {\n this.initialize(data);\n }\n if (this.#bootstrapped) {\n throw new Error(\"The runtime cannot be bootstrapped more than once\");\n }\n this.#bootstrapped = true;\n router = new Router(bootstrapData!.storyboards!);\n await router.bootstrap();\n }\n\n getRecentApps() {\n return router?.getRecentApps() ?? {};\n }\n\n getCurrentApp() {\n return router?.getRecentApps().currentApp;\n }\n\n hasInstalledApp(appId: string, matchVersion?: string): boolean {\n return hasInstalledApp(appId, matchVersion);\n }\n\n getFeatureFlags(): FeatureFlags {\n return {\n ...bootstrapData?.settings?.featureFlags,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.featureFlags,\n \"migrate-to-brick-next-v3\": true,\n };\n }\n\n getMiscSettings() {\n return {\n ...bootstrapData?.settings?.misc,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.misc,\n };\n }\n\n getBrandSettings(): Record<string, string> {\n return {\n base_title: \"DevOps 管理专家\",\n ...(bootstrapData?.settings?.brand as Record<string, string>),\n };\n }\n\n getLaunchpadSettings() {\n return {\n columns: 7,\n rows: 4,\n ...bootstrapData?.settings?.launchpad,\n };\n }\n\n getDesktops(): unknown[] {\n return bootstrapData?.desktops ?? [];\n }\n\n getLaunchpadSiteMap(): unknown[] {\n return bootstrapData?.siteSort ?? [];\n }\n\n toggleLaunchpadEffect(open: boolean): void {\n document.body.classList.toggle(\"launchpad-open\", open);\n }\n\n applyPageTitle(pageTitle: string): void {\n const baseTitle = this.getBrandSettings().base_title;\n\n document.title =\n (router?.getRecentApps().currentApp?.localeTitle as string) ||\n (pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle);\n }\n\n getNavConfig() {\n return router?.getNavConfig();\n }\n\n loadBricks(bricks: string[] | Set<string>) {\n return loadBricksImperatively(bricks, getBrickPackages());\n }\n}\n\nfunction normalizeBootstrapData(data: BootstrapData) {\n if (isObject(data.settings)) {\n deepFreeze(data.settings);\n }\n if (data.brickPackages) {\n deepFreeze(data.brickPackages);\n }\n}\n\nfunction processPublicDepsPackages(\n brickPackages: BrickPackage[],\n pubDeps: BrickPackage[] | undefined\n): BrickPackage[] {\n if (!pubDeps?.length) return brickPackages;\n\n const bricksMap = new Map();\n\n // bootstrapData 数据和 pubDeps 中可能同时存在同一个包名,需要过滤去重, 以 pubDeps 中的包为准\n [...pubDeps, ...brickPackages].forEach((pkg) => {\n const pkgName = pkg.filePath.split(\"/\")[1];\n // 始终将 pubDeps 放在前面\n if (!bricksMap.has(pkgName)) {\n bricksMap.set(pkgName, pkg);\n }\n });\n\n return Array.from(bricksMap.values());\n}\n\nexport function getBrickPackages(): BrickPackage[] {\n return (\n // Not necessary to process brick packages multiple times.\n processedBrickPackages ??\n (processedBrickPackages = processPublicDepsPackages(\n bootstrapData?.brickPackages ??\n injectedBrickPackages ??\n (window.STANDALONE_BRICK_PACKAGES as BrickPackage[] | undefined) ??\n [],\n window.PUBLIC_DEPS as BrickPackage[] | undefined\n ))\n );\n}\n\nexport function _internalApiGetPresetBricks() {\n return (bootstrapData?.settings?.presetBricks ?? {}) as {\n notification?: string | false;\n dialog?: string | false;\n error?: string | false;\n };\n}\n\nexport function _internalApiGetRenderId(): string | undefined {\n return router?.getRenderId();\n}\n\nexport function _internalApiMatchStoryboard(\n pathname: string\n): RuntimeStoryboard | undefined {\n return matchStoryboard(bootstrapData?.storyboards ?? [], pathname);\n}\n\nexport function _internalApiGetRuntimeContext() {\n return router?.getRuntimeContext();\n}\n\nexport function _internalApiGetStoryboardInBootstrapData(appId: string) {\n return bootstrapData?.storyboards?.find(\n (storyboard) => storyboard.app.id === appId\n );\n}\n\nexport function _internalApiGetAppInBootstrapData(appId: string) {\n return _internalApiGetStoryboardInBootstrapData(appId)?.app;\n}\n\nexport let _test_only_setBootstrapData: (data: BootstrapData) => void;\n\n// istanbul ignore next\nif (process.env.NODE_ENV === \"test\") {\n _test_only_setBootstrapData = (data) => {\n bootstrapData = data as BootstrapData;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Runtime.js","names":["i18n","initializeI18n","loadBricksImperatively","deepFreeze","isObject","moment","createHistory","matchStoryboard","Router","NS","locales","loadNotificationService","loadDialogService","injectedBrickPackages","hasInstalledApp","listenDevtoolsEagerly","getV2RuntimeFromDll","customizeColorTheme","runtime","bootstrapData","router","processedBrickPackages","hooks","createRuntime","options","Error","locale","language","on","Runtime","getRuntimeV3","getRuntimeV2Factory","v2Kit","getRuntimeV2","Proxy","getRuntime","get","key","arguments","length","undefined","Reflect","_initialized","WeakMap","_bootstrapped","constructor","_classPrivateFieldInitSpec","_defineProperty","initialize","data","_data$settings","_classPrivateFieldGet","_classPrivateFieldSet","normalizeBootstrapData","notification","dialog","_internalApiGetPresetBricks","loadBricks","settings","misc","theme","bootstrap","storyboards","getRecentApps","_router$getRecentApps","_router","getCurrentApp","_router2","currentApp","appId","matchVersion","getFeatureFlags","_bootstrapData","_router3","featureFlags","config","getMiscSettings","_bootstrapData2","_router4","getBrandSettings","_bootstrapData3","base_title","brand","getLaunchpadSettings","_bootstrapData4","columns","rows","launchpad","getDesktops","_bootstrapData$deskto","_bootstrapData5","desktops","getLaunchpadSiteMap","_bootstrapData$siteSo","_bootstrapData6","siteSort","toggleLaunchpadEffect","open","document","body","classList","toggle","applyPageTitle","pageTitle","_router5","baseTitle","title","localeTitle","getNavConfig","_router6","bricks","getBrickPackages","brickPackages","processPublicDepsPackages","pubDeps","bricksMap","Map","forEach","pkg","pkgName","filePath","split","has","set","Array","from","values","_ref","_ref2","_bootstrapData$brickP","_bootstrapData7","window","STANDALONE_BRICK_PACKAGES","PUBLIC_DEPS","_bootstrapData$settin","_bootstrapData8","presetBricks","_internalApiGetRenderId","_router7","getRenderId","_internalApiMatchStoryboard","pathname","_bootstrapData$storyb","_bootstrapData9","_internalApiGetRuntimeContext","_router8","getRuntimeContext","_internalApiGetStoryboardInBootstrapData","_bootstrapData10","find","storyboard","app","id","_internalApiGetAppInBootstrapData","_internalApiGetStoryb","_test_only_setBootstrapData","process","env","NODE_ENV"],"sources":["../../../src/internal/Runtime.ts"],"sourcesContent":["import type {\n RuntimeStoryboard,\n BootstrapSettings,\n FeatureFlags,\n BootstrapData,\n Contract,\n Storyboard,\n BrickConf,\n RouteConf,\n ResolveConf,\n BrickPackage,\n} from \"@next-core/types\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { loadBricksImperatively } from \"@next-core/loader\";\nimport { deepFreeze, isObject } from \"@next-core/utils/general\";\nimport type { PermissionApi_validatePermissions } from \"@next-api-sdk/micro-app-sdk\";\nimport moment from \"moment\";\nimport \"moment/locale/zh-cn.js\";\nimport { createHistory } from \"../history.js\";\nimport { matchStoryboard } from \"./matchStoryboard.js\";\nimport { Router } from \"./Router.js\";\nimport { NS, locales } from \"./i18n.js\";\nimport { loadNotificationService } from \"../Notification.js\";\nimport { loadDialogService } from \"../Dialog.js\";\nimport { injectedBrickPackages } from \"./injected.js\";\nimport { type AppForCheck, hasInstalledApp } from \"./hasInstalledApp.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\nimport { listenDevtoolsEagerly } from \"./devtools.js\";\nimport { getV2RuntimeFromDll } from \"../getV2RuntimeFromDll.js\";\nimport { ThemeSettings, customizeColorTheme } from \"./customizeColorTheme.js\";\n\nlet runtime: Runtime;\n\n// Allow inject bootstrap data in a runtime other than Brick Next.\nlet bootstrapData: BootstrapData | undefined;\nlet router: Router | undefined;\nlet processedBrickPackages: BrickPackage[] | undefined;\n\nexport interface RuntimeOptions {\n hooks?: RuntimeHooks;\n}\n\nexport interface ImagesFactory {\n get(name: string): string;\n}\n\nexport interface PageViewInfo {\n status: \"ok\" | \"failed\" | \"redirected\" | \"not-found\" | \"blocked\";\n path?: string;\n pageTitle?: string;\n}\n\nexport interface RuntimeHooks {\n auth?: {\n getAuth(): object;\n isLoggedIn(): boolean;\n authenticate?(...args: unknown[]): unknown;\n logout?(...args: unknown[]): unknown;\n isBlockedPath?(pathname: string): boolean;\n };\n fulfilStoryboard?: (storyboard: RuntimeStoryboard) => Promise<void>;\n validatePermissions?: typeof PermissionApi_validatePermissions;\n checkPermissions?: {\n checkPermissions(...actions: string[]): boolean;\n preCheckPermissions(storyboard: Storyboard): Promise<void> | undefined;\n preCheckPermissionsForBrickOrRoute(\n container: BrickConf | RouteConf,\n asyncComputeRealValue: (value: unknown) => Promise<unknown>\n ): Promise<void> | undefined;\n };\n checkInstalledApps?: {\n preCheckInstalledApps(\n storyboard: Storyboard,\n hasAppInBootstrap: (appId: string) => boolean\n ): void;\n waitForCheckingApps(appIds: string[]): Promise<void>;\n getCheckedApp(appId: string): AppForCheck | undefined;\n };\n flowApi?: {\n FLOW_API_PROVIDER: string;\n registerFlowApiProvider(): void;\n isFlowApiProvider(provider: string): boolean;\n getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string,\n stream?: boolean\n ): Promise<unknown[]>;\n collectContract(contracts: Contract[] | undefined): void;\n collectWidgetContract(contracts: Contract[] | undefined): void;\n clearCollectWidgetContract(): void;\n };\n menu?: {\n getMenuById(menuId: string): unknown;\n fetchMenuById(\n menuId: string,\n runtimeContext: RuntimeContext,\n runtimeHelpers: RuntimeHooksMenuHelpers\n ): Promise<unknown>;\n };\n images?: {\n imagesFactory(\n appId: string,\n isBuildPush?: boolean,\n version?: string\n ): ImagesFactory;\n widgetImagesFactory(\n widgetId: string,\n widgetVersion?: string\n ): ImagesFactory;\n };\n messageDispatcher?: {\n subscribe(...args: unknown[]): Promise<unknown>;\n unsubscribe(...args: unknown[]): Promise<unknown>;\n onMessage(channel: string, listener: (data: unknown) => void): () => void;\n onClose(listener: () => void): () => void;\n reset(): void;\n };\n pageView?: {\n create(): (info: PageViewInfo) => void;\n };\n}\n\nexport interface RuntimeHooksMenuHelpers {\n getStoryboardByAppId(appId: string): Storyboard | undefined;\n resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext\n ): Promise<unknown>;\n asyncComputeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n options?: { ignoreSymbols?: boolean; noInject?: boolean }\n ): Promise<unknown>;\n}\n\nexport let hooks: RuntimeHooks | undefined;\n\nexport function createRuntime(options?: RuntimeOptions) {\n if (runtime) {\n throw new Error(\"Cannot create multiple runtimes\");\n }\n listenDevtoolsEagerly();\n hooks = options?.hooks;\n initializeI18n(NS, locales);\n moment.locale(i18n.language);\n i18n.on(\"languageChanged\", () => {\n moment.locale(i18n.language);\n });\n createHistory();\n runtime = new Runtime();\n return runtime;\n}\n\nfunction getRuntimeV3() {\n return runtime;\n}\n\n// istanbul ignore next\nfunction getRuntimeV2Factory() {\n const v2Kit = getV2RuntimeFromDll();\n if (v2Kit) {\n return function getRuntimeV2() {\n return new Proxy(v2Kit.getRuntime(), {\n get(...args) {\n const key = args[1];\n switch (key) {\n case \"getCurrentApp\":\n case \"getRecentApps\":\n case \"hasInstalledApp\":\n case \"getDesktops\":\n case \"getLaunchpadSettings\":\n case \"getLaunchpadSiteMap\":\n case \"toggleLaunchpadEffect\":\n case \"applyPageTitle\":\n case \"getNavConfig\":\n case \"getFeatureFlags\":\n case \"getMiscSettings\":\n case \"getBrandSettings\":\n return Reflect.get(...args);\n }\n },\n }) as unknown as Runtime;\n };\n }\n}\n\n// istanbul ignore next\nexport const getRuntime = getRuntimeV2Factory() || getRuntimeV3;\n\nexport class Runtime {\n #initialized = false;\n #bootstrapped = false;\n\n readonly version: number | undefined = 3;\n\n initialize(data: BootstrapData) {\n if (this.#initialized) {\n throw new Error(\"The runtime cannot be initialized more than once\");\n }\n this.#initialized = true;\n normalizeBootstrapData(data);\n bootstrapData = data;\n const { notification, dialog } = _internalApiGetPresetBricks();\n if (notification !== false) {\n loadNotificationService(\n notification ?? \"basic.show-notification\",\n this.loadBricks\n );\n }\n if (dialog !== false) {\n loadDialogService(dialog ?? \"basic.show-dialog\", this.loadBricks);\n }\n customizeColorTheme(data.settings?.misc?.theme as ThemeSettings);\n }\n\n async bootstrap(data?: BootstrapData) {\n if (data) {\n this.initialize(data);\n }\n if (this.#bootstrapped) {\n throw new Error(\"The runtime cannot be bootstrapped more than once\");\n }\n this.#bootstrapped = true;\n router = new Router(bootstrapData!.storyboards!);\n await router.bootstrap();\n }\n\n getRecentApps() {\n return router?.getRecentApps() ?? {};\n }\n\n getCurrentApp() {\n return router?.getRecentApps().currentApp;\n }\n\n hasInstalledApp(appId: string, matchVersion?: string): boolean {\n return hasInstalledApp(appId, matchVersion);\n }\n\n getFeatureFlags(): FeatureFlags {\n return {\n ...bootstrapData?.settings?.featureFlags,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.featureFlags,\n \"migrate-to-brick-next-v3\": true,\n };\n }\n\n getMiscSettings() {\n return {\n ...bootstrapData?.settings?.misc,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.misc,\n };\n }\n\n getBrandSettings(): Record<string, string> {\n return {\n base_title: \"DevOps 管理专家\",\n ...(bootstrapData?.settings?.brand as Record<string, string>),\n };\n }\n\n getLaunchpadSettings() {\n return {\n columns: 7,\n rows: 4,\n ...bootstrapData?.settings?.launchpad,\n };\n }\n\n getDesktops(): unknown[] {\n return bootstrapData?.desktops ?? [];\n }\n\n getLaunchpadSiteMap(): unknown[] {\n return bootstrapData?.siteSort ?? [];\n }\n\n toggleLaunchpadEffect(open: boolean): void {\n document.body.classList.toggle(\"launchpad-open\", open);\n }\n\n applyPageTitle(pageTitle: string): void {\n const baseTitle = this.getBrandSettings().base_title;\n\n document.title =\n (router?.getRecentApps().currentApp?.localeTitle as string) ||\n (pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle);\n }\n\n getNavConfig() {\n return router?.getNavConfig();\n }\n\n loadBricks(bricks: string[] | Set<string>) {\n return loadBricksImperatively(bricks, getBrickPackages());\n }\n}\n\nfunction normalizeBootstrapData(data: BootstrapData) {\n if (isObject(data.settings)) {\n deepFreeze(data.settings);\n }\n if (data.brickPackages) {\n deepFreeze(data.brickPackages);\n }\n}\n\nfunction processPublicDepsPackages(\n brickPackages: BrickPackage[],\n pubDeps: BrickPackage[] | undefined\n): BrickPackage[] {\n if (!pubDeps?.length) return brickPackages;\n\n const bricksMap = new Map();\n\n // bootstrapData 数据和 pubDeps 中可能同时存在同一个包名,需要过滤去重, 以 pubDeps 中的包为准\n [...pubDeps, ...brickPackages].forEach((pkg) => {\n const pkgName = pkg.filePath.split(\"/\")[1];\n // 始终将 pubDeps 放在前面\n if (!bricksMap.has(pkgName)) {\n bricksMap.set(pkgName, pkg);\n }\n });\n\n return Array.from(bricksMap.values());\n}\n\nexport function getBrickPackages(): BrickPackage[] {\n return (\n // Not necessary to process brick packages multiple times.\n processedBrickPackages ??\n (processedBrickPackages = processPublicDepsPackages(\n bootstrapData?.brickPackages ??\n injectedBrickPackages ??\n (window.STANDALONE_BRICK_PACKAGES as BrickPackage[] | undefined) ??\n [],\n window.PUBLIC_DEPS as BrickPackage[] | undefined\n ))\n );\n}\n\nexport function _internalApiGetPresetBricks() {\n return (bootstrapData?.settings?.presetBricks ?? {}) as {\n notification?: string | false;\n dialog?: string | false;\n error?: string | false;\n };\n}\n\nexport function _internalApiGetRenderId(): string | undefined {\n return router?.getRenderId();\n}\n\nexport function _internalApiMatchStoryboard(\n pathname: string\n): RuntimeStoryboard | undefined {\n return matchStoryboard(bootstrapData?.storyboards ?? [], pathname);\n}\n\nexport function _internalApiGetRuntimeContext() {\n return router?.getRuntimeContext();\n}\n\nexport function _internalApiGetStoryboardInBootstrapData(appId: string) {\n return bootstrapData?.storyboards?.find(\n (storyboard) => storyboard.app.id === appId\n );\n}\n\nexport function _internalApiGetAppInBootstrapData(appId: string) {\n return _internalApiGetStoryboardInBootstrapData(appId)?.app;\n}\n\nexport let _test_only_setBootstrapData: (data: BootstrapData) => void;\n\n// istanbul ignore next\nif (process.env.NODE_ENV === \"test\") {\n _test_only_setBootstrapData = (data) => {\n bootstrapData = data as BootstrapData;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|