@next-core/runtime 1.20.3 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/internal/Renderer.js +27 -21
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +4 -4
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +7 -0
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +3 -2
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/Renderer.js +30 -23
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +4 -4
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +7 -0
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +3 -2
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/types/internal/Renderer.d.ts +2 -2
- package/dist/types/internal/RendererContext.d.ts +2 -2
- package/dist/types/internal/secret_internals.d.ts +2 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.js","names":["_history2","require","_loader","_http","_lodash","_history3","_Renderer","_DataStore","_resolveData","_mount","_matchStoryboard","_StoryboardFunctions","_RendererContext","_themeAndMode","_Runtime","_getPageInfo","_markAsComputed","_handleHttpError","_abortController","_registerCustomTemplates","_fulfilStoryboard","_enums","_insertPreviewRoutes","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","writable","value","Set","_classPrivateFieldSet2","history","getHistory","window","addEventListener","event","message","_classPrivateMethodGet2","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet6","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","initAbortController","listen","_classPrivateFieldGet2","_location$state","_classPrivateFieldGet3","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","locationsAreEqual","abortPendingRequest","dispatchPageLeave","storyboard","matchStoryboard","pathname","isOutsideApp","reload","_queuedRender2","catch","handleHttpError","exports","detail","_classPrivateFieldGet4","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","search","process","env","NODE_ENV","console","error","Error","replace","_render2","nextLocation","_hooks$flowApi","_classPrivateFieldGet5","uniqueId","resetAllComputedMarks","clearResolveCache","hooks","flowApi","clearCollectWidgetContract","app","fulfilStoryboard","appChanged","id","flags","getRuntime","getFeatureFlags","prevRendererContext","redirectTo","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","RenderTag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","unmountTree","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","setTheme","getLocalAppsTheme","theme","setMode","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","appId","_internalApiGetAppInBootstrapData","rendererContext","RendererContext","runtimeContext","query","URLSearchParams","sys","auth","getAuth","getPageInfo","settings","brand","getBrandSettings","ctxStore","DataStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","registerCustomTemplates","registerStoryboardFunctions","meta","functions","collectContract","contracts","failed","output","stores","renderRoutes","insertPreviewRoutes","routes","unauthenticated","redirect","path","flushStableLoadBricks","values","Promise","all","blockingList","map","store","waitForAll","menuConfs","menuRequests","mergeMenuConfs","isUnauthenticatedError","NO_AUTH_GUARD","HttpAbortError","node","BRICK","type","properties","textContent","httpErrorToString","return","child","route","dispatchBeforePageLoad","applyTheme","applyMode","mountTree","scrollTo","handleAsyncAfterMount","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { RenderOutput, renderRoutes } from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n history.listen((location, action) => {\n let ignoreRendering = false;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n // devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n this.#renderId = uniqueId(\"render-id-1\");\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\"\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext\n );\n if (output.unauthenticated) {\n redirectToLogin();\n return;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n\n flushStableLoadBricks();\n\n stores = [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n\n await Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n const menuConfs = await Promise.all(output.menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: renderRoot,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n for (const store of stores) {\n store.handleAsyncAfterMount();\n }\n\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n }\n}\n\nfunction mergeMenuConfs(menuConfs: (StaticMenuConf | undefined)[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n if (menuConf) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n }\n return navConfig;\n}\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAOA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,gBAAA,GAAAT,OAAA;AACA,IAAAU,oBAAA,GAAAV,OAAA;AACA,IAAAW,gBAAA,GAAAX,OAAA;AACA,IAAAY,aAAA,GAAAZ,OAAA;AAOA,IAAAa,QAAA,GAAAb,OAAA;AAKA,IAAAc,YAAA,GAAAd,OAAA;AAEA,IAAAe,eAAA,GAAAf,OAAA;AACA,IAAAgB,gBAAA,GAAAhB,OAAA;AAKA,IAAAiB,gBAAA,GAAAjB,OAAA;AACA,IAAAkB,wBAAA,GAAAlB,OAAA;AACA,IAAAmB,iBAAA,GAAAnB,OAAA;AACA,IAAAoB,MAAA,GAAApB,OAAA;AACA,IAAAqB,oBAAA,GAAArB,OAAA;AAA+D,IAAAsB,YAAA,oBAAAC,OAAA;AAAA,IAAAC,UAAA,oBAAAD,OAAA;AAAA,IAAAE,aAAA,oBAAAF,OAAA;AAAA,IAAAG,aAAA,oBAAAH,OAAA;AAAA,IAAAI,eAAA,oBAAAJ,OAAA;AAAA,IAAAK,gBAAA,oBAAAL,OAAA;AAAA,IAAAM,wBAAA,oBAAAN,OAAA;AAAA,IAAAO,cAAA,oBAAAP,OAAA;AAAA,IAAAQ,SAAA,oBAAAR,OAAA;AAAA,IAAAS,WAAA,oBAAAT,OAAA;AAAA,IAAAU,YAAA,oBAAAV,OAAA;AAAA,IAAAW,UAAA,oBAAAX,OAAA;AAAA,IAAAY,8BAAA,oBAAAC,OAAA;AAAA,IAAAC,aAAA,oBAAAD,OAAA;AAAA,IAAAE,aAAA,oBAAAF,OAAA;AAAA,IAAAG,OAAA,oBAAAH,OAAA;AAExD,MAAMI,MAAM,CAAC;EAgBlBC,WAAWA,CAACC,WAAyB,EAAE;IAAA,IAAAC,4BAAA,CAAAC,OAAA,QAAAL,OAAA;IAAA,IAAAI,4BAAA,CAAAC,OAAA,QAAAN,aAAA;IAAA,IAAAK,4BAAA,CAAAC,OAAA,QAAAP,aAAA;IAAA,IAAAM,4BAAA,CAAAC,OAAA,QAAAT,8BAAA;IAAA,IAAAU,2BAAA,CAAAD,OAAA,QAAAtB,YAAA;MAAAwB,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAApB,UAAA;MAAAsB,QAAA;MAAAC,KAAA,EAd1B;IAAK;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAnB,aAAA;MAAAqB,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAlB,aAAA;MAAAoB,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAjB,eAAA;MAAAmB,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAhB,gBAAA;MAAAkB,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAf,wBAAA;MAAAiB,QAAA;MAAAC,KAAA,EAKS,IAAIC,GAAG,CAA8B;IAAC;IAAA,IAAAH,2BAAA,CAAAD,OAAA,QAAAd,cAAA;MAAAgB,QAAA;MAAAC,KAAA,EAChD;IAAC;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAb,SAAA;MAAAe,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAZ,WAAA;MAAAc,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAX,YAAA;MAAAa,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAV,UAAA;MAAAY,QAAA;MAAAC,KAAA;IAAA;IAShB,IAAAE,sBAAA,CAAAL,OAAA,MAAI,EAAAtB,YAAA,EAAgBoB,WAAW;IAE/B,MAAMQ,QAAO,GAAG,IAAAC,oBAAU,EAAC,CAAC;IAC5BC,MAAM,CAACC,gBAAgB,CAAC,cAAc,EAAGC,KAAK,IAAK;MACjD,MAAMC,OAAO,OAAAC,uBAAA,CAAAZ,OAAA,EAAG,IAAI,EAAAT,8BAAA,EAAAsB,+BAAA,EAAAC,IAAA,CAAJ,IAAI,EAAgC,CAAC,CAAC,CAAC;MACvD;MACA,IAAIH,OAAO,EAAE;QACX;QACA;QACAD,KAAK,CAACK,cAAc,CAAC,CAAC;QACtB;QACAL,KAAK,CAACM,WAAW,GAAG,EAAE;MACxB,CAAC,MAAM;QACL;QACA,OAAON,KAAK,CAACM,WAAW;MAC1B;IACF,CAAC,CAAC;IAEFV,QAAO,CAACW,KAAK,CAAC,CAACC,QAAQ,EAAEC,MAAM,SAAAP,uBAAA,CAAAZ,OAAA,EAC7B,IAAI,EAAAT,8BAAA,EAAAsB,+BAAA,EAAAC,IAAA,CAAJ,IAAI,EAAgC;MAAEI,QAAQ;MAAEC;IAAO,CAAC,CAC1D,CAAC;EACH;EAEAC,WAAWA,CAAA,EAAG;IACZ,WAAAC,sBAAA,CAAArB,OAAA,EAAO,IAAI,EAAAb,SAAA;EACb;EAEAmC,iBAAiBA,CAAA,EAAG;IAClB,WAAAD,sBAAA,CAAArB,OAAA,EAAO,IAAI,EAAAjB,eAAA;EACb;EAEAwC,aAAaA,CAAA,EAAG;IACd,OAAO;MACLC,UAAU,MAAAH,sBAAA,CAAArB,OAAA,EAAE,IAAI,EAAAZ,WAAA,CAAY;MAC5BqC,WAAW,MAAAJ,sBAAA,CAAArB,OAAA,EAAE,IAAI,EAAAX,YAAA;IACnB,CAAC;EACH;EAEAqC,YAAYA,CAAA,EAAG;IACb,WAAAL,sBAAA,CAAArB,OAAA,EAAO,IAAI,EAAAV,UAAA;EACb;EAoCAqC,SAASA,CAAA,EAAG;IACV,IAAAC,oCAAmB,EAAC,CAAC;IACrB,MAAMtB,OAAO,GAAG,IAAAC,oBAAU,EAAC,CAAC;IAC5B,IAAAF,sBAAA,CAAAL,OAAA,MAAI,EAAAnB,aAAA,EAAiByB,OAAO,CAACY,QAAQ;IACrCZ,OAAO,CAACuB,MAAM,CAAC,CAACX,QAAQ,EAAEC,MAAM,KAAK;MAAA,IAAAW,sBAAA,EAAAC,eAAA,EAAAC,sBAAA;MACnC,IAAIC,eAAe,GAAG,KAAK;MAC3B,MAAMC,oBAA2C,GAAG;QAClDC,IAAI,EAAEC,SAAS;QACfC,KAAK,EAAED;MACT,CAAC;MACD;MACA;MACE;MACAlB,QAAQ,CAACoB,GAAG,KAAKF,SAAS;MAC1B;MACA;MACCjB,MAAM,KAAK,KAAK;MACf;MACC,IAAAE,sBAAA,CAAArB,OAAA,MAAI,EAAAnB,aAAA,EAAeyD,GAAG,KAAKF,SAAS;MACnC;MACA,EAAAN,sBAAA,OAAAT,sBAAA,CAAArB,OAAA,MAAI,EAAAnB,aAAA,EAAewD,KAAK,cAAAP,sBAAA,uBAAxBA,sBAAA,CAA0BS,MAAM,MAAK,KAAK,CAAE,EAChD;QACAL,oBAAoB,CAACI,GAAG,GAAGF,SAAS;MACtC;MACA,IACE,IAAAI,2BAAiB,EACf;QAAE,OAAAnB,sBAAA,CAAArB,OAAA,EAAG,IAAI,EAAAnB,aAAA,CAAc;QAAE,GAAGqD;MAAqB,CAAC,EAClD;QAAE,GAAGhB,QAAQ;QAAE,GAAGgB;MAAqB,CACzC,CAAC,IACAf,MAAM,KAAK,KAAK,IAAI,EAAAY,eAAA,GAAAb,QAAQ,CAACmB,KAAK,cAAAN,eAAA,uBAAdA,eAAA,CAAgBQ,MAAM,MAAK,KAAM,EACtD;QACA;QACA;QACAN,eAAe,GAAG,IAAI;MACxB;MACA,IAAIA,eAAe,EAAE;QACnB,IAAA5B,sBAAA,CAAAL,OAAA,MAAI,EAAAnB,aAAA,EAAiBqC,QAAQ;QAC7B;MACF;MACA,IAAAuB,oCAAmB,EAAC,CAAC;MACrB,IAAApC,sBAAA,CAAAL,OAAA,MAAI,EAAAnB,aAAA,EAAiBqC,QAAQ;MAC7B,CAAAc,sBAAA,OAAAX,sBAAA,CAAArB,OAAA,MAAI,EAAAhB,gBAAA,eAAAgD,sBAAA,uBAAJA,sBAAA,CAAuBU,iBAAiB,CAAC,CAAC;MAE1C,IAAIvB,MAAM,KAAK,KAAK,EAAE;QACpB,MAAMwB,UAAU,GAAG,IAAAC,gCAAe,MAAAvB,sBAAA,CAAArB,OAAA,EAChC,IAAI,EAAAtB,YAAA,GACJwC,QAAQ,CAAC2B,QACX,CAAC;QACD;QACA;QACA,IAAI,IAAAC,6BAAY,EAACH,UAAU,CAAC,EAAE;UAC5BnC,MAAM,CAACU,QAAQ,CAAC6B,MAAM,CAAC,CAAC;UACxB;QACF;MACF;MAEA,QAAA1B,sBAAA,CAAArB,OAAA,EAAI,IAAI,EAAApB,UAAA,GAAa;QACnB,IAAAyB,sBAAA,CAAAL,OAAA,MAAI,EAAAlB,aAAA,EAAiBoC,QAAQ;MAC/B,CAAC,MAAM;QACL;QACA,IAAAN,uBAAA,CAAAZ,OAAA,MAAI,EAAAN,aAAA,EAAAsD,cAAA,EAAAlC,IAAA,CAAJ,IAAI,EAAeI,QAAQ,EAAE+B,KAAK,CAACC,gCAAe,CAAC;MACrD;IACF,CAAC,CAAC;IACF,WAAAtC,uBAAA,CAAAZ,OAAA,EAAO,IAAI,EAAAN,aAAA,EAAAsD,cAAA,EAAAlC,IAAA,CAAJ,IAAI,EAAeR,OAAO,CAACY,QAAQ;EAC5C;AA0QF;AAACiC,OAAA,CAAAvD,MAAA,GAAAA,MAAA;AAAA,SAAAiB,gCA5WgCuC,MAG9B,EAAsB;EAAA,IAAAC,sBAAA;EACrB,MAAM/C,OAAO,GAAG,IAAAC,oBAAU,EAAC,CAAC;EAC5B,MAAM+C,eAAe,GAAGhD,OAAO,CAACiD,eAAe,CAAC,CAAC;EACjD,CAAAF,sBAAA,OAAAhC,sBAAA,CAAArB,OAAA,MAAI,EAAAhB,gBAAA,eAAAqE,sBAAA,uBAAJA,sBAAA,CAAuBG,uBAAuB,CAACJ,MAAM,CAAC;EACtD,MAAMzC,OAAO,GAAGL,OAAO,CAACiD,eAAe,CAAC,CAAC;EACzC,IAAI,CAACD,eAAe,IAAI3C,OAAO,EAAE;IAC/B;IACAL,OAAO,CAACmD,OAAO,CAAC,CAAC;EACnB;EACA,OAAO9C,OAAO;AAChB;AAAC,SAAA+C,eAGCC,EAAU,EACVtB,KAAmC,EACnCuB,IAAkB,EACZ;EAAA,IAAAC,mBAAA,EAAAC,oBAAA;EACN,IAAI,KAAAzD,sBAAA,CAAAL,OAAA,MAAI,EAAAd,cAAA,GAAA2E,mBAAA,OAAAxC,sBAAA,CAAArB,OAAA,EAAJ,IAAI,EAAAd,cAAA,GAAA4E,oBAAA,GAAAD,mBAAA,IAAAA,mBAAA,IAAAC,oBAAA,IAAoB,EAAE,EAAE;IAC9B,MAAMnD,OAAO,GAAI,qCAAoCiD,IAAI,CAACf,QAAS,GAAEe,IAAI,CAACG,MAAO,GAAEH,IAAI,CAACzB,IAAK,SAAQwB,EAAG,GAAE;IAC1G;IACA,IAAIK,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;MACnC;MACAC,OAAO,CAACC,KAAK,CAACzD,OAAO,CAAC;MACtB;IACF,CAAC,MAAM;MACL,MAAM,IAAI0D,KAAK,CAAC1D,OAAO,CAAC;IAC1B;EACF;EACA,IAAAJ,oBAAU,EAAC,CAAC,CAAC+D,OAAO,CAACX,EAAE,EAAEtB,KAAK,CAAC;AACjC;AAAC,eAAAW,eAoEmB9B,QAAsB,EAAiB;EACzD,IAAAb,sBAAA,CAAAL,OAAA,MAAI,EAAApB,UAAA,EAAc,IAAI;EACtB,IAAI;IACF,UAAAgC,uBAAA,CAAAZ,OAAA,EAAM,IAAI,EAAAL,OAAA,EAAA4E,QAAA,EAAAzD,IAAA,CAAJ,IAAI,EAASI,QAAQ,CAAC;EAC9B,CAAC,SAAS;IACR,IAAAb,sBAAA,CAAAL,OAAA,MAAI,EAAApB,UAAA,EAAc,KAAK;IACvB,QAAAyC,sBAAA,CAAArB,OAAA,EAAI,IAAI,EAAAlB,aAAA,GAAgB;MACtB,MAAM0F,YAAY,OAAAnD,sBAAA,CAAArB,OAAA,EAAG,IAAI,EAAAlB,aAAA,CAAc;MACvC,IAAAuB,sBAAA,CAAAL,OAAA,MAAI,EAAAlB,aAAA,EAAiBsD,SAAS;MAC9B,UAAAxB,uBAAA,CAAAZ,OAAA,EAAM,IAAI,EAAAN,aAAA,EAAAsD,cAAA,EAAAlC,IAAA,CAAJ,IAAI,EAAe0D,YAAY,CAAC;IACxC;EACF;AACF;AAAC,eAAAD,SAEarD,QAAsB,EAAiB;EAAA,IAAAuD,cAAA,EAAAC,sBAAA;EACnD,IAAArE,sBAAA,CAAAL,OAAA,MAAI,EAAAb,SAAA,EAAa,IAAAwF,gBAAQ,EAAC,aAAa,CAAC;EAExC,IAAAC,qCAAqB,EAAC,CAAC;EACvB,IAAAC,8BAAiB,EAAC,CAAC;EACnBC,cAAK,aAALA,cAAK,gBAAAL,cAAA,GAALK,cAAK,CAAEC,OAAO,cAAAN,cAAA,uBAAdA,cAAA,CAAgBO,0BAA0B,CAAC,CAAC;EAE5C,MAAM1E,OAAO,GAAG,IAAAC,oBAAU,EAAC,CAAC;EAC5BD,OAAO,CAACmD,OAAO,CAAC,CAAC;EAEjB,MAAMd,UAAU,GAAG,IAAAC,gCAAe,MAAAvB,sBAAA,CAAArB,OAAA,EAAC,IAAI,EAAAtB,YAAA,GAAewC,QAAQ,CAAC2B,QAAQ,CAAC;EAExE,MAAMpB,WAAW,IAAAiD,sBAAA,OAAArD,sBAAA,CAAArB,OAAA,EAAG,IAAI,EAAAjB,eAAA,eAAA2F,sBAAA,uBAAJA,sBAAA,CAAsBO,GAAG;EAC7C,IAAItC,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEsC,GAAG,EAAE;IACnB,MAAM,IAAAC,kCAAgB,EAACvC,UAAU,CAAC;EACpC;EACA,MAAMnB,UAAU,OAAAnB,sBAAA,CAAAL,OAAA,EAAI,IAAI,EAAAZ,WAAA,EAAeuD,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEsC,GAAG,CAAC;;EAEvD;EACA,MAAME,UAAU,GACd1D,WAAW,IAAID,UAAU,GACrBC,WAAW,CAAC2D,EAAE,KAAK5D,UAAU,CAAC4D,EAAE,GAChC3D,WAAW,KAAKD,UAAU;;EAEhC;;EAEA;EACA,MAAM6D,KAAK,GAAG,IAAAC,mBAAU,EAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EAC5C,MAAMC,mBAAmB,OAAAnE,sBAAA,CAAArB,OAAA,EAAG,IAAI,EAAAhB,gBAAA,CAAiB;EAEjD,MAAMyG,UAAU,GAAGA,CAAC9B,EAAU,EAAEtB,KAAwB,KAAW;IACjE,IAAAhB,sBAAA,CAAArB,OAAA,MAAI,EAAAf,wBAAA,EAA0ByG,GAAG,CAACF,mBAAmB,CAAC;IACtD,IAAA5E,uBAAA,CAAAZ,OAAA,MAAI,EAAAP,aAAA,EAAAiE,cAAA,EAAA5C,IAAA,CAAJ,IAAI,EAAe6C,EAAE,EAAEtB,KAAK,EAAEnB,QAAQ;EACxC,CAAC;EAED,MAAMyE,eAAe,GAAGA,CAAA,KAAY;IAClC,MAAMhC,EAAE,GAAG0B,KAAK,CAAC,aAAa,CAAC,GAAG,iBAAiB,GAAG,aAAa;IACnEI,UAAU,CAAC9B,EAAE,EAAE;MAAEC,IAAI,EAAE1C;IAAS,CAAC,CAAC;EACpC,CAAC;EAED,MAAM0E,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,mBAAmB,CAAgB;EACvE,MAAMC,MAAM,GAAGF,QAAQ,CAACC,aAAa,CAAC,qBAAqB,CAAgB;EAE3E,MAAME,UAAsB,GAAG;IAC7BC,GAAG,EAAEC,gBAAS,CAACC,IAAI;IACnBC,SAAS,EAAER,IAAI;IACfS,YAAY,EAAEN;EAChB,CAAC;EAED,MAAMO,qBAAqB,GAAGA,CAAA,KAAY;IAAA,IAAAC,qBAAA;IACxC,IAAAC,kBAAW,EAACZ,IAAI,CAAC;IACjB,IAAAY,kBAAW,EAACT,MAAM,CAAC;;IAEnB;IACA,IAAA1E,sBAAA,CAAArB,OAAA,MAAI,EAAAf,wBAAA,EAA0ByG,GAAG,CAACF,mBAAmB,CAAC;IACtD,KAAK,MAAMiB,IAAI,QAAApF,sBAAA,CAAArB,OAAA,EAAI,IAAI,EAAAf,wBAAA,GAA2B;MAChD,IAAIwH,IAAI,EAAE;QACRA,IAAI,CAACC,iBAAiB,CAAC,CAAC;QACxBD,IAAI,CAACE,OAAO,CAAC,CAAC;MAChB;IACF;IACA,IAAAtF,sBAAA,CAAArB,OAAA,MAAI,EAAAf,wBAAA,EAA0B2H,KAAK,CAAC,CAAC;IACrC9B,cAAK,aAALA,cAAK,gBAAAyB,qBAAA,GAALzB,cAAK,CAAE+B,iBAAiB,cAAAN,qBAAA,uBAAxBA,qBAAA,CAA0BO,KAAK,CAAC,CAAC;IAEjC,IAAI3B,UAAU,EAAE;MACd,IAAA9E,sBAAA,CAAAL,OAAA,MAAI,EAAAX,YAAA,EAAgBoC,WAAW;MAC/BjB,MAAM,CAACuG,aAAa,CAClB,IAAIC,WAAW,CAAC,YAAY,EAAE;QAC5B5D,MAAM,EAAE;UACN3B,WAAW;UACXD;QACF;MACF,CAAC,CACH,CAAC;IACH;EACF,CAAC;EAED,IAAAyF,sBAAQ,EACLzF,UAAU,KACR,IAAA0F,+BAAiB,EAAC,CAAC,CAAC1F,UAAU,CAAC4D,EAAE,CAAC,IAAI5D,UAAU,CAAC2F,KAAK,CAAC,IACxD,OACJ,CAAC;EACD,IAAAC,qBAAO,EAAC,SAAS,CAAC;EAElB,IAAI5F,UAAU,EAAE;IAAA,IAAA6F,qBAAA,EAAAC,WAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,eAAA,EAAAC,iBAAA;IACd5C,cAAK,aAALA,cAAK,gBAAAuC,qBAAA,GAALvC,cAAK,CAAE6C,kBAAkB,cAAAN,qBAAA,uBAAzBA,qBAAA,CAA2BO,qBAAqB,CAC9CjF,UAAU,EACTkF,KAAK,IAAK,CAAC,CAAC,IAAAC,0CAAiC,EAACD,KAAK,CACtD,CAAC;IAED,MAAME,eAAe,OAAA1H,sBAAA,CAAAL,OAAA,EAAI,IAAI,EAAAhB,gBAAA,EAAoB,IAAIgJ,gCAAe,CAClE,MACF,CAAC,CAAC;IAEF,MAAMC,cAA8B,OAAA5H,sBAAA,CAAAL,OAAA,EAAI,IAAI,EAAAjB,eAAA,EAAmB;MAC7DkG,GAAG,EAAEzD,UAAU;MACfN,QAAQ;MACRgH,KAAK,EAAE,IAAIC,eAAe,CAACjH,QAAQ,CAAC6C,MAAM,CAAC;MAC3CsB,KAAK;MACL+C,GAAG,EAAE;QACH,IAAGtD,cAAK,aAALA,cAAK,gBAAAwC,WAAA,GAALxC,cAAK,CAAEuD,IAAI,cAAAf,WAAA,uBAAXA,WAAA,CAAagB,OAAO,CAAC,CAAC;QACzB,GAAG,IAAAC,wBAAW,EAAC,CAAC;QAChBC,QAAQ,EAAE;UACRC,KAAK,EAAE,IAAAnD,mBAAU,EAAC,CAAC,CAACoD,gBAAgB,CAAC;QACvC;MACF,CAAC;MACDC,QAAQ,EAAE,IAAIC,oBAAS,CAAC,KAAK,EAAExG,SAAS,EAAE2F,eAAe,CAAC;MAC1Dc,0BAA0B,EAAE,CAC1B/D,cAAK,aAALA,cAAK,gBAAAyC,qBAAA,GAALzC,cAAK,CAAEgE,gBAAgB,cAAAvB,qBAAA,uBAAvBA,qBAAA,CAAyBwB,mBAAmB,CAACpG,UAAU,CAAC,CACzD;MACDqG,gBAAgB,EAAE,IAAIC,GAAG,CAA6B,CAAC;MACvDC,iBAAiB,EAAE,IAAID,GAAG,CAAkC;IAC9D,CAAC,CAAC;IAEF,IAAA5I,sBAAA,CAAAL,OAAA,MAAI,EAAAV,UAAA,EAAc8C,SAAS;IAE3B,IAAA+G,gDAAuB,EAACxG,UAAU,CAAC;IACnC,IAAAyG,gDAA2B,GAAA5B,gBAAA,GAAC7E,UAAU,CAAC0G,IAAI,cAAA7B,gBAAA,uBAAfA,gBAAA,CAAiB8B,SAAS,EAAE9H,UAAU,CAAC;IACnEsD,cAAK,aAALA,cAAK,gBAAA2C,eAAA,GAAL3C,cAAK,CAAEC,OAAO,cAAA0C,eAAA,uBAAdA,eAAA,CAAgB8B,eAAe,EAAA7B,iBAAA,GAAC/E,UAAU,CAAC0G,IAAI,cAAA3B,iBAAA,uBAAfA,iBAAA,CAAiB8B,SAAS,CAAC;IAE3D,IAAIC,MAAM,GAAG,KAAK;IAClB,IAAIC,MAAoB;IACxB,IAAIC,MAAmD,GAAG,EAAE;IAE5D,IAAI;MACFD,MAAM,GAAG,MAAM,IAAAE,sBAAY,EACzB5D,UAAU,EACV,IAAA6D,wCAAmB,EAAClH,UAAU,CAACmH,MAAM,CAAC,EACtC7B,cAAc,EACdF,eACF,CAAC;MACD,IAAI2B,MAAM,CAACK,eAAe,EAAE;QAC1BpE,eAAe,CAAC,CAAC;QACjB;MACF;MACA,IAAI+D,MAAM,CAACM,QAAQ,EAAE;QACnBvE,UAAU,CAACiE,MAAM,CAACM,QAAQ,CAACC,IAAI,EAAEP,MAAM,CAACM,QAAQ,CAAC3H,KAAK,CAAC;QACvD;MACF;MACA;MACA,IAAAhC,sBAAA,CAAAL,OAAA,MAAI,EAAAd,cAAA,EAAkB,CAAC;MAEvB,IAAAgL,6BAAqB,EAAC,CAAC;MAEvBP,MAAM,GAAG,CACP1B,cAAc,CAACU,QAAQ,EACvB,GAAGV,cAAc,CAACe,gBAAgB,CAACmB,MAAM,CAAC,CAAC,EAC3C,GAAGlC,cAAc,CAACiB,iBAAiB,CAACiB,MAAM,CAAC,CAAC,CAC7C;MAED,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChB,GAAGX,MAAM,CAACY,YAAY,EACtB,GAAGX,MAAM,CAACY,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,UAAU,CAAC,CAAC,CAAC,EAC5C,GAAGxC,cAAc,CAACY,0BAA0B,CAC7C,CAAC;MAEF,MAAM6B,SAAS,GAAG,MAAMN,OAAO,CAACC,GAAG,CAACX,MAAM,CAACiB,YAAY,CAAC;MACxD,IAAAtK,sBAAA,CAAAL,OAAA,MAAI,EAAAV,UAAA,EAAcsL,cAAc,CAACF,SAAS,CAAC;IAC7C,CAAC,CAAC,OAAOtG,KAAK,EAAE;MACd;MACAD,OAAO,CAACC,KAAK,CAAC,gBAAgB,EAAEA,KAAK,CAAC;MAEtC,IAAI,IAAAyG,uCAAsB,EAACzG,KAAK,CAAC,IAAI,CAAC5D,MAAM,CAACsK,aAAa,EAAE;QAC1DnF,eAAe,CAAC,CAAC;QACjB;MACF,CAAC,MAAM,IAAIvB,KAAK,YAAY2G,oBAAc,EAAE;QAC1C,IAAA1J,sBAAA,CAAArB,OAAA,MAAI,EAAAf,wBAAA,EAA0ByG,GAAG,CAACF,mBAAmB,CAAC;QACtD;MACF,CAAC,MAAM;QACLiE,MAAM,GAAG,IAAI;QACbC,MAAM,GAAG;UACPsB,IAAI,EAAE;YACJ/E,GAAG,EAAEC,gBAAS,CAAC+E,KAAK;YACpBC,IAAI,EAAE,KAAK;YACXC,UAAU,EAAE;cACVC,WAAW,EAAE,IAAAC,kCAAiB,EAACjH,KAAK;YACtC,CAAC;YACD6D,cAAc,EAAE,IAAK;YACrBqD,MAAM,EAAEtF;UACV,CAAC;UACDsE,YAAY,EAAE,EAAE;UAChBK,YAAY,EAAE;QAChB,CAAC;MACH;IACF;IACA3E,UAAU,CAACuF,KAAK,GAAG7B,MAAM,CAACsB,IAAI;IAE9B1E,qBAAqB,CAAC,CAAC;IAEvB,IAAKoD,MAAM,CAAC8B,KAAK,IAAI9B,MAAM,CAAC8B,KAAK,CAACN,IAAI,KAAK,QAAQ,IAAKzB,MAAM,EAAE;MAC9D,IAAI,CAACA,MAAM,EAAE;QACX;QACA1B,eAAe,CAAC0D,sBAAsB,CAAC,CAAC;MAC1C;MACA,IAAAC,wBAAU,EAAC,CAAC;MACZ,IAAAC,uBAAS,EAAC,CAAC;MAEX,IAAAC,gBAAS,EAAC5F,UAAU,CAAC;;MAErB;MACA;MACAxF,MAAM,CAACqL,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;MAErB,IAAI,CAACpC,MAAM,EAAE;QACX,KAAK,MAAMe,KAAK,IAAIb,MAAM,EAAE;UAC1Ba,KAAK,CAACsB,qBAAqB,CAAC,CAAC;QAC/B;QAEA/D,eAAe,CAACgE,gBAAgB,CAAC,CAAC;QAClChE,eAAe,CAACiE,kBAAkB,CAAC,CAAC;QACpCjE,eAAe,CAACkE,eAAe,CAAC,CAAC;QACjClE,eAAe,CAACmE,wBAAwB,CAAC,CAAC;QAC1CnE,eAAe,CAACoE,qBAAqB,CAAC,CAAC;QACvCpE,eAAe,CAACqE,2BAA2B,CAAC,CAAC;MAC/C;MAEA;IACF;EACF,CAAC,MAAM,IACL,CAAC5L,MAAM,CAACsK,aAAa,IACrBhG,cAAK,aAALA,cAAK,eAALA,cAAK,CAAEuD,IAAI,IACX,CAACvD,cAAK,CAACuD,IAAI,CAACgE,UAAU,CAAC,CAAC,EACxB;IACA;IACA;IACA1G,eAAe,CAAC,CAAC;IACjB;EACF,CAAC,MAAM;IACLW,qBAAqB,CAAC,CAAC;EACzB;EAEA,IAAAoF,wBAAU,EAAC,CAAC;EACZ,IAAAC,uBAAS,EAAC,CAAC;EAEX,MAAMX,IAAiB,GAAG;IACxB/E,GAAG,EAAEC,gBAAS,CAAC+E,KAAK;IACpBC,IAAI,EAAE,KAAK;IACXC,UAAU,EAAE;MACVC,WAAW,EAAE;IACf,CAAC;IACDnD,cAAc,EAAE,IAAK;IACrBqD,MAAM,EAAEtF;EACV,CAAC;EACDA,UAAU,CAACuF,KAAK,GAAGP,IAAI;EAEvB,IAAAY,gBAAS,EAAC5F,UAAU,CAAC;;EAErB;EACAxF,MAAM,CAACqL,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACvB;AAGF,SAASjB,cAAcA,CAACF,SAAyC,EAAE;EACjE,MAAM4B,SAAS,GAAG;IAChBC,UAAU,EAAE;EACd,CAAC;EACD,KAAK,MAAMC,QAAQ,IAAI9B,SAAS,EAAE;IAChC,IAAI8B,QAAQ,EAAE;MACZ,MAAM;QAAED;MAAW,CAAC,GAAGC,QAAQ;MAC/B,IAAID,UAAU,EAAE;QACd,IAAIA,UAAU,CAACE,SAAS,EAAE;UACxBH,SAAS,CAACC,UAAU,GAAGA,UAAU,CAACG,KAAK;QACzC,CAAC,MAAM;UACLJ,SAAS,CAACC,UAAU,CAACI,IAAI,CAAC,GAAGJ,UAAU,CAACG,KAAK,CAAC;QAChD;MACF;IACF;EACF;EACA,OAAOJ,SAAS;AAClB"}
|
|
1
|
+
{"version":3,"file":"Router.js","names":["_history2","require","_loader","_http","_lodash","_history3","_Renderer","_DataStore","_resolveData","_mount","_matchStoryboard","_StoryboardFunctions","_RendererContext","_themeAndMode","_Runtime","_getPageInfo","_markAsComputed","_handleHttpError","_abortController","_registerCustomTemplates","_fulfilStoryboard","_enums","_insertPreviewRoutes","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","writable","value","Set","_classPrivateFieldSet2","history","getHistory","window","addEventListener","event","message","_classPrivateMethodGet2","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet6","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","initAbortController","listen","_classPrivateFieldGet2","_location$state","_classPrivateFieldGet3","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","locationsAreEqual","abortPendingRequest","dispatchPageLeave","storyboard","matchStoryboard","pathname","isOutsideApp","reload","_queuedRender2","catch","handleHttpError","exports","detail","_classPrivateFieldGet4","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","search","process","env","NODE_ENV","console","error","Error","replace","_render2","nextLocation","_hooks$flowApi","_classPrivateFieldGet5","uniqueId","resetAllComputedMarks","clearResolveCache","hooks","flowApi","clearCollectWidgetContract","renderStartTime","performance","now","app","fulfilStoryboard","appChanged","id","flags","getRuntime","getFeatureFlags","prevRendererContext","redirectTo","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","RenderTag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","unmountTree","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","setTheme","getLocalAppsTheme","theme","setMode","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","appId","_internalApiGetAppInBootstrapData","rendererContext","RendererContext","runtimeContext","query","URLSearchParams","sys","auth","getAuth","getPageInfo","settings","brand","getBrandSettings","ctxStore","DataStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","registerCustomTemplates","registerStoryboardFunctions","meta","functions","collectContract","contracts","failed","output","stores","renderRoutes","insertPreviewRoutes","routes","unauthenticated","redirect","path","flushStableLoadBricks","values","Promise","all","blockingList","map","store","waitForAll","menuConfs","menuRequests","mergeMenuConfs","isUnauthenticatedError","NO_AUTH_GUARD","HttpAbortError","node","BRICK","type","properties","textContent","httpErrorToString","return","child","route","dispatchBeforePageLoad","applyTheme","applyMode","mountTree","scrollTo","handleAsyncAfterMount","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","renderTime","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { RenderOutput, renderRoutes } from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n history.listen((location, action) => {\n let ignoreRendering = false;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n // devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n this.#renderId = uniqueId(\"render-id-1\");\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n const renderStartTime = performance.now();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\"\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext\n );\n if (output.unauthenticated) {\n redirectToLogin();\n return;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n\n flushStableLoadBricks();\n\n stores = [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n\n await Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n const menuConfs = await Promise.all(output.menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: renderRoot,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n for (const store of stores) {\n store.handleAsyncAfterMount();\n }\n\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n\n const renderTime = performance.now() - renderStartTime;\n window.dispatchEvent(\n new CustomEvent(\"route.render\", {\n detail: {\n renderTime,\n },\n })\n );\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n }\n}\n\nfunction mergeMenuConfs(menuConfs: (StaticMenuConf | undefined)[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n if (menuConf) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
|
|
@@ -184,11 +184,11 @@ function updateStoryboardBySnippet(appId, snippetData) {
|
|
|
184
184
|
var _snippetData$bricks;
|
|
185
185
|
_updatePreviewSettings(appId, getSnippetPreviewPath(snippetData.snippetId), (_snippetData$bricks = snippetData.bricks) !== null && _snippetData$bricks !== void 0 && _snippetData$bricks.length ? snippetData.bricks : [{
|
|
186
186
|
brick: "span"
|
|
187
|
-
}]);
|
|
187
|
+
}], snippetData.context);
|
|
188
188
|
}
|
|
189
189
|
const updateSnippetPreviewSettings = updateStoryboardBySnippet;
|
|
190
190
|
exports.updateSnippetPreviewSettings = updateSnippetPreviewSettings;
|
|
191
|
-
function _updatePreviewSettings(appId, path, bricks) {
|
|
191
|
+
function _updatePreviewSettings(appId, path, bricks, context) {
|
|
192
192
|
const {
|
|
193
193
|
routes
|
|
194
194
|
} = (0, _Runtime._internalApiGetStoryboardInBootstrapData)(appId);
|
|
@@ -196,6 +196,7 @@ function _updatePreviewSettings(appId, path, bricks) {
|
|
|
196
196
|
const newPreviewRoute = {
|
|
197
197
|
path,
|
|
198
198
|
bricks,
|
|
199
|
+
context,
|
|
199
200
|
menu: false,
|
|
200
201
|
exact: true
|
|
201
202
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret_internals.js","names":["_loader","require","_lodash","_Runtime","_Renderer","_RendererContext","_mount","_enums","_computeRealValue","_isStrictMode","_CustomTemplates","_registerAppI18n","_utils","renderUseBrick","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_internalApiGetRuntimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","createPortal","transform","strict","isStrictMode","warnAboutStrictMode","output","renderBrick","properties","flushStableLoadBricks","scopedStores","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","element","portalRoot","document","querySelector","createElement","appendChild","mountTree","handleAsyncAfterMount","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmountUseBrick","mountResult","unmountTree","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","computeRealValue","noInject","updateStoryboard","appId","storyboardPatch","storyboard","_internalApiGetStoryboardInBootstrapData","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","registerAppI18n","updateStoryboardByRoute","newRoute","match","getKey","route","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","customTemplates","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","pick","getSnippetPreviewPath","snippetId","updateStoryboardBySnippet","snippetData","_snippetData$bricks","length","updateSnippetPreviewSettings","exports","previewRouteIndex","findIndex","newPreviewRoute","menu","splice","getContextValue","tplStateStoreId","tplStateStore","getTplStateStore","getValue","ctxStore","getAllContextValues","getAllValues","getBrickPackagesById","id","getBrickPackages","find","pkg","filePath","startsWith","getRenderId","_internalApiGetRenderId","getAddedContracts","updateStoryboardType","provider","collectContractProvider","updatedStoryboard","meta","_storyboard$routes","snippetPreviewPath","currentRoute","addedContracts","loadBricksImperatively","contractApis","resolve","forEach","api","_storyboard$meta","_","namespaceId","contracts","some","contract","push"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n RuntimeSnippet,\n} from \"@next-core/types\";\nimport {\n flushStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRenderId,\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n} from \"./Runtime.js\";\nimport { renderBrick } from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type {\n DataValueOption,\n PreviewOption,\n PreviewStoryboardPatch,\n RenderRoot,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\n\nexport type { DataValueOption, RuntimeContext } from \"./interfaces.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[];\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const runtimeContext: RuntimeContext = {\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n tplStateStoreScope,\n formStateStoreScope,\n };\n\n runtimeContext.tplStateStoreMap ??= new Map();\n runtimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n const scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n\n await Promise.all([\n ...output.blockingList,\n // Wait for local tpl state stores belong to current `useBrick` only.\n ...scopedStores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext, scopedStores };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext, scopedStores }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n for (const store of scopedStores) {\n store.handleAsyncAfterMount();\n }\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\n/** For v2 compatibility of `doTransform` from brick-kit. */\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nfunction getSnippetPreviewPath(snippetId: string): string {\n return `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetId}`;\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n getSnippetPreviewPath(snippetData.snippetId),\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }]\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n\nexport function getContextValue(\n name: string,\n { tplStateStoreId }: DataValueOption\n): unknown {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getValue(name);\n }\n\n return runtimeContext.ctxStore.getValue(name);\n}\n\nexport function getAllContextValues({\n tplStateStoreId,\n}: DataValueOption): Record<string, unknown> {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getAllValues();\n }\n\n return runtimeContext.ctxStore.getAllValues();\n}\n\nexport function getBrickPackagesById(id: string) {\n return getBrickPackages().find((pkg) =>\n pkg.id ? pkg.id === id : pkg.filePath.startsWith(id)\n );\n}\n\nexport function getRenderId() {\n return _internalApiGetRenderId();\n}\n\nexport async function getAddedContracts(\n storyboardPatch: PreviewStoryboardPatch,\n {\n appId,\n updateStoryboardType,\n provider: collectContractProvider,\n }: PreviewOption\n): Promise<string[]> {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId);\n let updatedStoryboard;\n\n // 拿到更新部分的 storyboard 配置,然后扫描一遍,找到新增的 contracts\n if (updateStoryboardType === \"route\") {\n updatedStoryboard = {\n routes: [storyboardPatch as RouteConf],\n } as Storyboard;\n } else if (updateStoryboardType === \"template\") {\n updatedStoryboard = {\n meta: {\n customTemplates: [storyboardPatch as CustomTemplate],\n },\n } as Storyboard;\n } else if (updateStoryboardType === \"snippet\") {\n // snippet 是放在挂载 route 里预览,通过 previewPath 拿到当前修改 route\n const snippetPreviewPath = getSnippetPreviewPath(\n (storyboardPatch as RuntimeSnippet).snippetId\n );\n const currentRoute = storyboard?.routes?.find(\n (route) => route.path === snippetPreviewPath\n );\n\n updatedStoryboard = {\n routes: [currentRoute],\n } as Storyboard;\n }\n\n const addedContracts: string[] = [];\n\n if (updatedStoryboard && collectContractProvider) {\n await loadBricksImperatively([collectContractProvider], getBrickPackages());\n\n const provider = document.createElement(collectContractProvider) as any;\n const contractApis = await provider.resolve(updatedStoryboard);\n\n contractApis.forEach((api: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, namespaceId, name] = api.match(\n /(.*)@(.*):\\d\\.\\d\\.\\d/\n ) as string[];\n\n if (\n !storyboard?.meta?.contracts?.some(\n (contract) =>\n contract.namespaceId === namespaceId && contract.name === name\n )\n ) {\n addedContracts.push(api);\n }\n });\n }\n\n return addedContracts;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"secret_internals.js","names":["_loader","require","_lodash","_Runtime","_Renderer","_RendererContext","_mount","_enums","_computeRealValue","_isStrictMode","_CustomTemplates","_registerAppI18n","_utils","renderUseBrick","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_internalApiGetRuntimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","createPortal","transform","strict","isStrictMode","warnAboutStrictMode","output","renderBrick","properties","flushStableLoadBricks","scopedStores","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","element","portalRoot","document","querySelector","createElement","appendChild","mountTree","handleAsyncAfterMount","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmountUseBrick","mountResult","unmountTree","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","computeRealValue","noInject","updateStoryboard","appId","storyboardPatch","storyboard","_internalApiGetStoryboardInBootstrapData","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","registerAppI18n","updateStoryboardByRoute","newRoute","match","getKey","route","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","customTemplates","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","pick","getSnippetPreviewPath","snippetId","updateStoryboardBySnippet","snippetData","_snippetData$bricks","length","context","updateSnippetPreviewSettings","exports","previewRouteIndex","findIndex","newPreviewRoute","menu","splice","getContextValue","tplStateStoreId","tplStateStore","getTplStateStore","getValue","ctxStore","getAllContextValues","getAllValues","getBrickPackagesById","id","getBrickPackages","find","pkg","filePath","startsWith","getRenderId","_internalApiGetRenderId","getAddedContracts","updateStoryboardType","provider","collectContractProvider","updatedStoryboard","meta","_storyboard$routes","snippetPreviewPath","currentRoute","addedContracts","loadBricksImperatively","contractApis","resolve","forEach","api","_storyboard$meta","_","namespaceId","contracts","some","contract","push"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n RuntimeSnippet,\n ContextConf,\n} from \"@next-core/types\";\nimport {\n flushStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRenderId,\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n} from \"./Runtime.js\";\nimport { renderBrick } from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type {\n DataValueOption,\n PreviewOption,\n PreviewStoryboardPatch,\n RenderRoot,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\n\nexport type { DataValueOption, RuntimeContext } from \"./interfaces.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[];\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const runtimeContext: RuntimeContext = {\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n tplStateStoreScope,\n formStateStoreScope,\n };\n\n runtimeContext.tplStateStoreMap ??= new Map();\n runtimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n const scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n\n await Promise.all([\n ...output.blockingList,\n // Wait for local tpl state stores belong to current `useBrick` only.\n ...scopedStores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext, scopedStores };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext, scopedStores }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n for (const store of scopedStores) {\n store.handleAsyncAfterMount();\n }\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\n/** For v2 compatibility of `doTransform` from brick-kit. */\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nfunction getSnippetPreviewPath(snippetId: string): string {\n return `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetId}`;\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n context?: ContextConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n getSnippetPreviewPath(snippetData.snippetId),\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }],\n snippetData.context\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[],\n context?: ContextConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n context,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n\nexport function getContextValue(\n name: string,\n { tplStateStoreId }: DataValueOption\n): unknown {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getValue(name);\n }\n\n return runtimeContext.ctxStore.getValue(name);\n}\n\nexport function getAllContextValues({\n tplStateStoreId,\n}: DataValueOption): Record<string, unknown> {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getAllValues();\n }\n\n return runtimeContext.ctxStore.getAllValues();\n}\n\nexport function getBrickPackagesById(id: string) {\n return getBrickPackages().find((pkg) =>\n pkg.id ? pkg.id === id : pkg.filePath.startsWith(id)\n );\n}\n\nexport function getRenderId() {\n return _internalApiGetRenderId();\n}\n\nexport async function getAddedContracts(\n storyboardPatch: PreviewStoryboardPatch,\n {\n appId,\n updateStoryboardType,\n provider: collectContractProvider,\n }: PreviewOption\n): Promise<string[]> {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId);\n let updatedStoryboard;\n\n // 拿到更新部分的 storyboard 配置,然后扫描一遍,找到新增的 contracts\n if (updateStoryboardType === \"route\") {\n updatedStoryboard = {\n routes: [storyboardPatch as RouteConf],\n } as Storyboard;\n } else if (updateStoryboardType === \"template\") {\n updatedStoryboard = {\n meta: {\n customTemplates: [storyboardPatch as CustomTemplate],\n },\n } as Storyboard;\n } else if (updateStoryboardType === \"snippet\") {\n // snippet 是放在挂载 route 里预览,通过 previewPath 拿到当前修改 route\n const snippetPreviewPath = getSnippetPreviewPath(\n (storyboardPatch as RuntimeSnippet).snippetId\n );\n const currentRoute = storyboard?.routes?.find(\n (route) => route.path === snippetPreviewPath\n );\n\n updatedStoryboard = {\n routes: [currentRoute],\n } as Storyboard;\n }\n\n const addedContracts: string[] = [];\n\n if (updatedStoryboard && collectContractProvider) {\n await loadBricksImperatively([collectContractProvider], getBrickPackages());\n\n const provider = document.createElement(collectContractProvider) as any;\n const contractApis = await provider.resolve(updatedStoryboard);\n\n contractApis.forEach((api: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, namespaceId, name] = api.match(\n /(.*)@(.*):\\d\\.\\d\\.\\d/\n ) as string[];\n\n if (\n !storyboard?.meta?.contracts?.some(\n (contract) =>\n contract.namespaceId === namespaceId && contract.name === name\n )\n ) {\n addedContracts.push(api);\n }\n });\n }\n\n return addedContracts;\n}\n"],"mappings":"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"}
|
|
@@ -109,17 +109,18 @@ export function renderBricks(_x6, _x7, _x8, _x9, _x10, _x11, _x12) {
|
|
|
109
109
|
return _renderBricks.apply(this, arguments);
|
|
110
110
|
}
|
|
111
111
|
function _renderBricks() {
|
|
112
|
-
_renderBricks = _asyncToGenerator(function* (returnNode, bricks, runtimeContext, rendererContext, slotId, tplStack,
|
|
112
|
+
_renderBricks = _asyncToGenerator(function* (returnNode, bricks, runtimeContext, rendererContext, slotId, tplStack, keyPath) {
|
|
113
113
|
var output = {
|
|
114
114
|
blockingList: [],
|
|
115
115
|
menuRequests: []
|
|
116
116
|
};
|
|
117
|
+
var kPath = keyPath !== null && keyPath !== void 0 ? keyPath : [];
|
|
117
118
|
// 多个构件并行异步转换,但转换的结果按原顺序串行合并。
|
|
118
|
-
var rendered = yield Promise.all(bricks.map((brickConf, index) => renderBrick(returnNode, brickConf, runtimeContext, rendererContext, slotId, index, tplStack && new Map(tplStack))));
|
|
119
|
+
var rendered = yield Promise.all(bricks.map((brickConf, index) => renderBrick(returnNode, brickConf, runtimeContext, rendererContext, slotId, kPath.concat(index), tplStack && new Map(tplStack))));
|
|
119
120
|
rendered.forEach((item, index) => {
|
|
120
|
-
if (
|
|
121
|
+
if (item.hasTrackingControls) {
|
|
121
122
|
// Memoize a render node before it's been merged.
|
|
122
|
-
rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);
|
|
123
|
+
rendererContext.memoizeControlNode(slotId, kPath.concat(index), item.node, returnNode);
|
|
123
124
|
}
|
|
124
125
|
mergeRenderOutput(output, item);
|
|
125
126
|
});
|
|
@@ -127,12 +128,13 @@ function _renderBricks() {
|
|
|
127
128
|
});
|
|
128
129
|
return _renderBricks.apply(this, arguments);
|
|
129
130
|
}
|
|
130
|
-
export function renderBrick(_x13, _x14, _x15, _x16, _x17
|
|
131
|
+
export function renderBrick(_x13, _x14, _x15, _x16, _x17) {
|
|
131
132
|
return _renderBrick.apply(this, arguments);
|
|
132
133
|
}
|
|
133
134
|
function _renderBrick() {
|
|
134
|
-
_renderBrick = _asyncToGenerator(function* (returnNode, brickConf, _runtimeContext, rendererContext, slotId
|
|
135
|
+
_renderBrick = _asyncToGenerator(function* (returnNode, brickConf, _runtimeContext, rendererContext, slotId) {
|
|
135
136
|
var _hooks$checkPermissio2, _runtimeContext$app;
|
|
137
|
+
var keyPath = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];
|
|
136
138
|
var tplStack = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new Map();
|
|
137
139
|
var output = {
|
|
138
140
|
blockingList: [],
|
|
@@ -170,7 +172,7 @@ function _renderBrick() {
|
|
|
170
172
|
}
|
|
171
173
|
}, Object.getOwnPropertySymbols(brickConf).reduce((acc, symbol) => _objectSpread(_objectSpread({}, acc), {}, {
|
|
172
174
|
[symbol]: brickConf[symbol]
|
|
173
|
-
}), {})), _runtimeContext, rendererContext, slotId,
|
|
175
|
+
}), {})), _runtimeContext, rendererContext, slotId, keyPath, tplStack);
|
|
174
176
|
}
|
|
175
177
|
var tplStateStoreId = brickConf[symbolForTplStateStoreId];
|
|
176
178
|
var formStateStoreId = brickConf[symbolForFormStateStoreId];
|
|
@@ -227,12 +229,12 @@ function _renderBrick() {
|
|
|
227
229
|
if (!Array.isArray(computedDataSource)) {
|
|
228
230
|
return output;
|
|
229
231
|
}
|
|
230
|
-
return renderForEach(returnNode, computedDataSource, bricks, runtimeContext, rendererContext, slotId, tplStack);
|
|
232
|
+
return renderForEach(returnNode, computedDataSource, bricks, runtimeContext, rendererContext, slotId, tplStack, keyPath);
|
|
231
233
|
}
|
|
232
234
|
case ":if":
|
|
233
235
|
case ":switch":
|
|
234
236
|
{
|
|
235
|
-
return renderBricks(returnNode, bricks, runtimeContext, rendererContext, slotId, tplStack,
|
|
237
|
+
return renderBricks(returnNode, bricks, runtimeContext, rendererContext, slotId, tplStack, keyPath);
|
|
236
238
|
}
|
|
237
239
|
}
|
|
238
240
|
});
|
|
@@ -256,7 +258,7 @@ function _renderBrick() {
|
|
|
256
258
|
yield Promise.all(controlOutput.blockingList);
|
|
257
259
|
// Ignore stale renders
|
|
258
260
|
if (renderId === currentRenderId) {
|
|
259
|
-
rendererContext.rerenderControlNode(slotId,
|
|
261
|
+
rendererContext.rerenderControlNode(slotId, keyPath, controlOutput.node, returnNode);
|
|
260
262
|
}
|
|
261
263
|
});
|
|
262
264
|
return function listener() {
|
|
@@ -281,7 +283,7 @@ function _renderBrick() {
|
|
|
281
283
|
|
|
282
284
|
// Widgets need to be defined before rendering.
|
|
283
285
|
if (/\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {
|
|
284
|
-
yield
|
|
286
|
+
yield catchLoad(loadBricksImperatively([brickName], getBrickPackages()), "brick", brickName, rendererContext.unknownBricks);
|
|
285
287
|
}
|
|
286
288
|
var tplTagName = getTagNameOfCustomTemplate(brickName, (_runtimeContext$app = runtimeContext.app) === null || _runtimeContext$app === void 0 ? void 0 : _runtimeContext$app.id);
|
|
287
289
|
if (tplTagName) {
|
|
@@ -299,7 +301,7 @@ function _renderBrick() {
|
|
|
299
301
|
}
|
|
300
302
|
});
|
|
301
303
|
} else {
|
|
302
|
-
output.blockingList.push(
|
|
304
|
+
output.blockingList.push(catchLoad(enqueueStableLoadBricks([brickName], getBrickPackages()), "brick", brickName, rendererContext.unknownBricks));
|
|
303
305
|
}
|
|
304
306
|
}
|
|
305
307
|
var formData;
|
|
@@ -332,13 +334,13 @@ function _renderBrick() {
|
|
|
332
334
|
src
|
|
333
335
|
} = props,
|
|
334
336
|
attrs = _objectWithoutProperties(props, _excluded4);
|
|
335
|
-
yield loadScript(src, prefix, attrs);
|
|
337
|
+
yield catchLoad(loadScript(src, prefix, attrs), "script", src, "silent");
|
|
336
338
|
} else {
|
|
337
339
|
var {
|
|
338
340
|
href
|
|
339
341
|
} = props,
|
|
340
342
|
attrs = _objectWithoutProperties(props, _excluded5);
|
|
341
|
-
yield loadStyle(href, prefix, attrs);
|
|
343
|
+
yield catchLoad(loadStyle(href, prefix, attrs), "stylesheet", href, "silent");
|
|
342
344
|
}
|
|
343
345
|
return output;
|
|
344
346
|
}
|
|
@@ -359,7 +361,7 @@ function _renderBrick() {
|
|
|
359
361
|
// 在最终挂载前,先加载所有可能用到的 processors。
|
|
360
362
|
var usedProcessors = strictCollectMemberUsage([brickConf.events, brickConf.lifeCycle], "PROCESSORS", 2);
|
|
361
363
|
if (usedProcessors.size > 0) {
|
|
362
|
-
output.blockingList.push(loadProcessorsImperatively(usedProcessors, getBrickPackages()));
|
|
364
|
+
output.blockingList.push(catchLoad(loadProcessorsImperatively(usedProcessors, getBrickPackages()), "processors", [...usedProcessors].join(", "), rendererContext.unknownBricks));
|
|
363
365
|
}
|
|
364
366
|
|
|
365
367
|
// 加载构件属性和加载子构件等任务,可以并行。
|
|
@@ -437,23 +439,28 @@ function ensureValidControlBrick(brick) {
|
|
|
437
439
|
throw new Error("Unknown storyboard control node: \"".concat(brick, "\""));
|
|
438
440
|
}
|
|
439
441
|
}
|
|
440
|
-
function renderForEach(_x19, _x20, _x21, _x22, _x23, _x24, _x25) {
|
|
442
|
+
function renderForEach(_x18, _x19, _x20, _x21, _x22, _x23, _x24, _x25) {
|
|
441
443
|
return _renderForEach.apply(this, arguments);
|
|
442
444
|
}
|
|
443
445
|
function _renderForEach() {
|
|
444
|
-
_renderForEach = _asyncToGenerator(function* (returnNode, dataSource, bricks, runtimeContext, rendererContext, slotId, tplStack) {
|
|
446
|
+
_renderForEach = _asyncToGenerator(function* (returnNode, dataSource, bricks, runtimeContext, rendererContext, slotId, tplStack, keyPath) {
|
|
445
447
|
var output = {
|
|
446
448
|
blockingList: [],
|
|
447
449
|
menuRequests: []
|
|
448
450
|
};
|
|
451
|
+
var rows = dataSource.length;
|
|
449
452
|
var rendered = yield Promise.all(dataSource.map((item, i) => Promise.all(bricks.map((brickConf, j) => renderBrick(returnNode, brickConf, _objectSpread(_objectSpread({}, runtimeContext), {}, {
|
|
450
453
|
forEachItem: item
|
|
451
|
-
}), rendererContext, slotId, i * j, tplStack && new Map(tplStack))))));
|
|
454
|
+
}), rendererContext, slotId, keyPath.concat(i * rows + j), tplStack && new Map(tplStack))))));
|
|
452
455
|
|
|
453
456
|
// 多层构件并行异步转换,但转换的结果按原顺序串行合并。
|
|
454
|
-
|
|
457
|
+
rendered.flat().forEach((item, index) => {
|
|
458
|
+
if (item.hasTrackingControls) {
|
|
459
|
+
// Memoize a render node before it's been merged.
|
|
460
|
+
rendererContext.memoizeControlNode(slotId, keyPath.concat(index), item.node, returnNode);
|
|
461
|
+
}
|
|
455
462
|
mergeRenderOutput(output, item);
|
|
456
|
-
}
|
|
463
|
+
});
|
|
457
464
|
return output;
|
|
458
465
|
});
|
|
459
466
|
return _renderForEach.apply(this, arguments);
|
|
@@ -525,10 +532,10 @@ export function childrenToSlots(children, originalSlots) {
|
|
|
525
532
|
}
|
|
526
533
|
return newSlots;
|
|
527
534
|
}
|
|
528
|
-
function
|
|
529
|
-
return
|
|
535
|
+
function catchLoad(promise, type, name, unknownPolicy) {
|
|
536
|
+
return unknownPolicy === "silent" ? promise.catch(e => {
|
|
530
537
|
// eslint-disable-next-line no-console
|
|
531
|
-
console.error("Load
|
|
538
|
+
console.error("Load ".concat(type, " \"").concat(name, "\" failed:"), e);
|
|
532
539
|
}) : promise;
|
|
533
540
|
}
|
|
534
541
|
//# sourceMappingURL=Renderer.js.map
|