@next-core/runtime 1.0.2
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/CustomProcessors.js +29 -0
- package/dist/cjs/CustomProcessors.js.map +1 -0
- package/dist/cjs/CustomTemplates.js +179 -0
- package/dist/cjs/CustomTemplates.js.map +1 -0
- package/dist/cjs/StoryboardFunctionRegistry.js +118 -0
- package/dist/cjs/StoryboardFunctionRegistry.js.map +1 -0
- package/dist/cjs/auth.js +67 -0
- package/dist/cjs/auth.js.map +1 -0
- package/dist/cjs/fetchByProvider.js +13 -0
- package/dist/cjs/fetchByProvider.js.map +1 -0
- package/dist/cjs/getBasePath.js +15 -0
- package/dist/cjs/getBasePath.js.map +1 -0
- package/dist/cjs/getPageInfo.js +45 -0
- package/dist/cjs/getPageInfo.js.map +1 -0
- package/dist/cjs/handleHttpError.js +97 -0
- package/dist/cjs/handleHttpError.js.map +1 -0
- package/dist/cjs/history.js +27 -0
- package/dist/cjs/history.js.map +1 -0
- package/dist/cjs/index.js +199 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js +72 -0
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -0
- package/dist/cjs/internal/CustomTemplates/constants.js +13 -0
- package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -0
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +122 -0
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -0
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +113 -0
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -0
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js +44 -0
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -0
- package/dist/cjs/internal/CustomTemplates/utils.js +44 -0
- package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -0
- package/dist/cjs/internal/Renderer.js +392 -0
- package/dist/cjs/internal/Renderer.js.map +1 -0
- package/dist/cjs/internal/RendererContext.js +433 -0
- package/dist/cjs/internal/RendererContext.js.map +1 -0
- package/dist/cjs/internal/Router.js +448 -0
- package/dist/cjs/internal/Router.js.map +1 -0
- package/dist/cjs/internal/Runtime.js +140 -0
- package/dist/cjs/internal/Runtime.js.map +1 -0
- package/dist/cjs/internal/abortController.js +32 -0
- package/dist/cjs/internal/abortController.js.map +1 -0
- package/dist/cjs/internal/bindListeners.js +433 -0
- package/dist/cjs/internal/bindListeners.js.map +1 -0
- package/dist/cjs/internal/checkInstalledApps.js +105 -0
- package/dist/cjs/internal/checkInstalledApps.js.map +1 -0
- package/dist/cjs/internal/checkPermissions.js +102 -0
- package/dist/cjs/internal/checkPermissions.js.map +1 -0
- package/dist/cjs/internal/compute/StoryboardFunctions.js +16 -0
- package/dist/cjs/internal/compute/StoryboardFunctions.js.map +1 -0
- package/dist/cjs/internal/compute/WidgetFunctions.js +31 -0
- package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -0
- package/dist/cjs/internal/compute/WidgetI18n.js +21 -0
- package/dist/cjs/internal/compute/WidgetI18n.js.map +1 -0
- package/dist/cjs/internal/compute/checkIf.js +36 -0
- package/dist/cjs/internal/compute/checkIf.js.map +1 -0
- package/dist/cjs/internal/compute/collectMemberCallUsage.js +30 -0
- package/dist/cjs/internal/compute/collectMemberCallUsage.js.map +1 -0
- package/dist/cjs/internal/compute/computeRealProperties.js +80 -0
- package/dist/cjs/internal/compute/computeRealProperties.js.map +1 -0
- package/dist/cjs/internal/compute/computeRealValue.js +78 -0
- package/dist/cjs/internal/compute/computeRealValue.js.map +1 -0
- package/dist/cjs/internal/compute/evaluate.js +390 -0
- package/dist/cjs/internal/compute/evaluate.js.map +1 -0
- package/dist/cjs/internal/compute/getGeneralGlobals.js +87 -0
- package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -0
- package/dist/cjs/internal/compute/getNextStateOfUseBrick.js +87 -0
- package/dist/cjs/internal/compute/getNextStateOfUseBrick.js.map +1 -0
- package/dist/cjs/internal/compute/getStorageItem.js +14 -0
- package/dist/cjs/internal/compute/getStorageItem.js.map +1 -0
- package/dist/cjs/internal/compute/getTracks.js +26 -0
- package/dist/cjs/internal/compute/getTracks.js.map +1 -0
- package/dist/cjs/internal/compute/images.js +23 -0
- package/dist/cjs/internal/compute/images.js.map +1 -0
- package/dist/cjs/internal/compute/listenOnTrackingContext.js +40 -0
- package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -0
- package/dist/cjs/internal/compute/markAsComputed.js +36 -0
- package/dist/cjs/internal/compute/markAsComputed.js.map +1 -0
- package/dist/cjs/internal/compute/setProperties.js +18 -0
- package/dist/cjs/internal/compute/setProperties.js.map +1 -0
- package/dist/cjs/internal/compute/setRealProperties.js +29 -0
- package/dist/cjs/internal/compute/setRealProperties.js.map +1 -0
- package/dist/cjs/internal/data/CollectContracts.js +29 -0
- package/dist/cjs/internal/data/CollectContracts.js.map +1 -0
- package/dist/cjs/internal/data/DataStore.js +190 -0
- package/dist/cjs/internal/data/DataStore.js.map +1 -0
- package/dist/cjs/internal/data/FlowApi.js +150 -0
- package/dist/cjs/internal/data/FlowApi.js.map +1 -0
- package/dist/cjs/internal/data/FlowApiProvider.js +122 -0
- package/dist/cjs/internal/data/FlowApiProvider.js.map +1 -0
- package/dist/cjs/internal/data/getProviderBrick.js +32 -0
- package/dist/cjs/internal/data/getProviderBrick.js.map +1 -0
- package/dist/cjs/internal/data/resolveData.js +96 -0
- package/dist/cjs/internal/data/resolveData.js.map +1 -0
- package/dist/cjs/internal/data/resolveDataStore.js +127 -0
- package/dist/cjs/internal/data/resolveDataStore.js.map +1 -0
- package/dist/cjs/internal/devtools.js +10 -0
- package/dist/cjs/internal/devtools.js.map +1 -0
- package/dist/cjs/internal/enums.js +13 -0
- package/dist/cjs/internal/enums.js.map +1 -0
- package/dist/cjs/internal/historyExtended.js +140 -0
- package/dist/cjs/internal/historyExtended.js.map +1 -0
- package/dist/cjs/internal/interfaces.js +6 -0
- package/dist/cjs/internal/interfaces.js.map +1 -0
- package/dist/cjs/internal/loadBootstrapData.js +227 -0
- package/dist/cjs/internal/loadBootstrapData.js.map +1 -0
- package/dist/cjs/internal/loadCheckLogin.js +17 -0
- package/dist/cjs/internal/loadCheckLogin.js.map +1 -0
- package/dist/cjs/internal/matchPath.js +88 -0
- package/dist/cjs/internal/matchPath.js.map +1 -0
- package/dist/cjs/internal/matchRoutes.js +34 -0
- package/dist/cjs/internal/matchRoutes.js.map +1 -0
- package/dist/cjs/internal/matchStoryboard.js +40 -0
- package/dist/cjs/internal/matchStoryboard.js.map +1 -0
- package/dist/cjs/internal/mediaQuery.js +55 -0
- package/dist/cjs/internal/mediaQuery.js.map +1 -0
- package/dist/cjs/internal/menu/computeMenuData.js +37 -0
- package/dist/cjs/internal/menu/computeMenuData.js.map +1 -0
- package/dist/cjs/internal/menu/constants.js +13 -0
- package/dist/cjs/internal/menu/constants.js.map +1 -0
- package/dist/cjs/internal/menu/fetchMenuById.js +102 -0
- package/dist/cjs/internal/menu/fetchMenuById.js.map +1 -0
- package/dist/cjs/internal/menu/fetchMenuTitle.js +37 -0
- package/dist/cjs/internal/menu/fetchMenuTitle.js.map +1 -0
- package/dist/cjs/internal/menu/getMenusOfStandaloneApp.js +27 -0
- package/dist/cjs/internal/menu/getMenusOfStandaloneApp.js.map +1 -0
- package/dist/cjs/internal/menu/interfaces.js +4 -0
- package/dist/cjs/internal/menu/interfaces.js.map +1 -0
- package/dist/cjs/internal/menu/loadDynamicMenuItems.js +28 -0
- package/dist/cjs/internal/menu/loadDynamicMenuItems.js.map +1 -0
- package/dist/cjs/internal/menu/mergeMenu.js +74 -0
- package/dist/cjs/internal/menu/mergeMenu.js.map +1 -0
- package/dist/cjs/internal/menu/reorderMenuItems.js +20 -0
- package/dist/cjs/internal/menu/reorderMenuItems.js.map +1 -0
- package/dist/cjs/internal/mount.js +90 -0
- package/dist/cjs/internal/mount.js.map +1 -0
- package/dist/cjs/internal/poll.js +83 -0
- package/dist/cjs/internal/poll.js.map +1 -0
- package/dist/cjs/internal/proxyFactories.js +39 -0
- package/dist/cjs/internal/proxyFactories.js.map +1 -0
- package/dist/cjs/internal/registerAppI18n.js +25 -0
- package/dist/cjs/internal/registerAppI18n.js.map +1 -0
- package/dist/cjs/internal/registerCustomTemplates.js +22 -0
- package/dist/cjs/internal/registerCustomTemplates.js.map +1 -0
- package/dist/cjs/internal/secret_internals.js +140 -0
- package/dist/cjs/internal/secret_internals.js.map +1 -0
- package/dist/cjs/themeAndMode.js +97 -0
- package/dist/cjs/themeAndMode.js.map +1 -0
- package/dist/esm/CustomProcessors.js +30 -0
- package/dist/esm/CustomProcessors.js.map +1 -0
- package/dist/esm/CustomTemplates.js +187 -0
- package/dist/esm/CustomTemplates.js.map +1 -0
- package/dist/esm/StoryboardFunctionRegistry.js +116 -0
- package/dist/esm/StoryboardFunctionRegistry.js.map +1 -0
- package/dist/esm/auth.js +57 -0
- package/dist/esm/auth.js.map +1 -0
- package/dist/esm/fetchByProvider.js +14 -0
- package/dist/esm/fetchByProvider.js.map +1 -0
- package/dist/esm/getBasePath.js +9 -0
- package/dist/esm/getBasePath.js.map +1 -0
- package/dist/esm/getPageInfo.js +39 -0
- package/dist/esm/getPageInfo.js.map +1 -0
- package/dist/esm/handleHttpError.js +90 -0
- package/dist/esm/handleHttpError.js.map +1 -0
- package/dist/esm/history.js +20 -0
- package/dist/esm/history.js.map +1 -0
- package/dist/esm/index.js +17 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js +68 -0
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -0
- package/dist/esm/internal/CustomTemplates/constants.js +4 -0
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -0
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +117 -0
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -0
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +110 -0
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -0
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js +43 -0
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -0
- package/dist/esm/internal/CustomTemplates/utils.js +37 -0
- package/dist/esm/internal/CustomTemplates/utils.js.map +1 -0
- package/dist/esm/internal/Renderer.js +427 -0
- package/dist/esm/internal/Renderer.js.map +1 -0
- package/dist/esm/internal/RendererContext.js +425 -0
- package/dist/esm/internal/RendererContext.js.map +1 -0
- package/dist/esm/internal/Router.js +445 -0
- package/dist/esm/internal/Router.js.map +1 -0
- package/dist/esm/internal/Runtime.js +116 -0
- package/dist/esm/internal/Runtime.js.map +1 -0
- package/dist/esm/internal/abortController.js +24 -0
- package/dist/esm/internal/abortController.js.map +1 -0
- package/dist/esm/internal/bindListeners.js +434 -0
- package/dist/esm/internal/bindListeners.js.map +1 -0
- package/dist/esm/internal/checkInstalledApps.js +100 -0
- package/dist/esm/internal/checkInstalledApps.js.map +1 -0
- package/dist/esm/internal/checkPermissions.js +107 -0
- package/dist/esm/internal/checkPermissions.js.map +1 -0
- package/dist/esm/internal/compute/StoryboardFunctions.js +7 -0
- package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -0
- package/dist/esm/internal/compute/WidgetFunctions.js +23 -0
- package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -0
- package/dist/esm/internal/compute/WidgetI18n.js +14 -0
- package/dist/esm/internal/compute/WidgetI18n.js.map +1 -0
- package/dist/esm/internal/compute/checkIf.js +39 -0
- package/dist/esm/internal/compute/checkIf.js.map +1 -0
- package/dist/esm/internal/compute/collectMemberCallUsage.js +22 -0
- package/dist/esm/internal/compute/collectMemberCallUsage.js.map +1 -0
- package/dist/esm/internal/compute/computeRealProperties.js +87 -0
- package/dist/esm/internal/compute/computeRealProperties.js.map +1 -0
- package/dist/esm/internal/compute/computeRealValue.js +86 -0
- package/dist/esm/internal/compute/computeRealValue.js.map +1 -0
- package/dist/esm/internal/compute/evaluate.js +387 -0
- package/dist/esm/internal/compute/evaluate.js.map +1 -0
- package/dist/esm/internal/compute/getGeneralGlobals.js +82 -0
- package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -0
- package/dist/esm/internal/compute/getNextStateOfUseBrick.js +78 -0
- package/dist/esm/internal/compute/getNextStateOfUseBrick.js.map +1 -0
- package/dist/esm/internal/compute/getStorageItem.js +8 -0
- package/dist/esm/internal/compute/getStorageItem.js.map +1 -0
- package/dist/esm/internal/compute/getTracks.js +20 -0
- package/dist/esm/internal/compute/getTracks.js.map +1 -0
- package/dist/esm/internal/compute/images.js +16 -0
- package/dist/esm/internal/compute/images.js.map +1 -0
- package/dist/esm/internal/compute/listenOnTrackingContext.js +37 -0
- package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -0
- package/dist/esm/internal/compute/markAsComputed.js +28 -0
- package/dist/esm/internal/compute/markAsComputed.js.map +1 -0
- package/dist/esm/internal/compute/setProperties.js +12 -0
- package/dist/esm/internal/compute/setProperties.js.map +1 -0
- package/dist/esm/internal/compute/setRealProperties.js +23 -0
- package/dist/esm/internal/compute/setRealProperties.js.map +1 -0
- package/dist/esm/internal/data/CollectContracts.js +20 -0
- package/dist/esm/internal/data/CollectContracts.js.map +1 -0
- package/dist/esm/internal/data/DataStore.js +203 -0
- package/dist/esm/internal/data/DataStore.js.map +1 -0
- package/dist/esm/internal/data/FlowApi.js +156 -0
- package/dist/esm/internal/data/FlowApi.js.map +1 -0
- package/dist/esm/internal/data/FlowApiProvider.js +122 -0
- package/dist/esm/internal/data/FlowApiProvider.js.map +1 -0
- package/dist/esm/internal/data/getProviderBrick.js +33 -0
- package/dist/esm/internal/data/getProviderBrick.js.map +1 -0
- package/dist/esm/internal/data/resolveData.js +101 -0
- package/dist/esm/internal/data/resolveData.js.map +1 -0
- package/dist/esm/internal/data/resolveDataStore.js +134 -0
- package/dist/esm/internal/data/resolveDataStore.js.map +1 -0
- package/dist/esm/internal/devtools.js +4 -0
- package/dist/esm/internal/devtools.js.map +1 -0
- package/dist/esm/internal/enums.js +6 -0
- package/dist/esm/internal/enums.js.map +1 -0
- package/dist/esm/internal/historyExtended.js +132 -0
- package/dist/esm/internal/historyExtended.js.map +1 -0
- package/dist/esm/internal/interfaces.js +2 -0
- package/dist/esm/internal/interfaces.js.map +1 -0
- package/dist/esm/internal/loadBootstrapData.js +243 -0
- package/dist/esm/internal/loadBootstrapData.js.map +1 -0
- package/dist/esm/internal/loadCheckLogin.js +18 -0
- package/dist/esm/internal/loadCheckLogin.js.map +1 -0
- package/dist/esm/internal/matchPath.js +81 -0
- package/dist/esm/internal/matchPath.js.map +1 -0
- package/dist/esm/internal/matchRoutes.js +35 -0
- package/dist/esm/internal/matchRoutes.js.map +1 -0
- package/dist/esm/internal/matchStoryboard.js +33 -0
- package/dist/esm/internal/matchStoryboard.js.map +1 -0
- package/dist/esm/internal/mediaQuery.js +44 -0
- package/dist/esm/internal/mediaQuery.js.map +1 -0
- package/dist/esm/internal/menu/computeMenuData.js +38 -0
- package/dist/esm/internal/menu/computeMenuData.js.map +1 -0
- package/dist/esm/internal/menu/constants.js +4 -0
- package/dist/esm/internal/menu/constants.js.map +1 -0
- package/dist/esm/internal/menu/fetchMenuById.js +104 -0
- package/dist/esm/internal/menu/fetchMenuById.js.map +1 -0
- package/dist/esm/internal/menu/fetchMenuTitle.js +38 -0
- package/dist/esm/internal/menu/fetchMenuTitle.js.map +1 -0
- package/dist/esm/internal/menu/getMenusOfStandaloneApp.js +19 -0
- package/dist/esm/internal/menu/getMenusOfStandaloneApp.js.map +1 -0
- package/dist/esm/internal/menu/interfaces.js +4 -0
- package/dist/esm/internal/menu/interfaces.js.map +1 -0
- package/dist/esm/internal/menu/loadDynamicMenuItems.js +28 -0
- package/dist/esm/internal/menu/loadDynamicMenuItems.js.map +1 -0
- package/dist/esm/internal/menu/mergeMenu.js +77 -0
- package/dist/esm/internal/menu/mergeMenu.js.map +1 -0
- package/dist/esm/internal/menu/reorderMenuItems.js +14 -0
- package/dist/esm/internal/menu/reorderMenuItems.js.map +1 -0
- package/dist/esm/internal/mount.js +83 -0
- package/dist/esm/internal/mount.js.map +1 -0
- package/dist/esm/internal/poll.js +85 -0
- package/dist/esm/internal/poll.js.map +1 -0
- package/dist/esm/internal/proxyFactories.js +34 -0
- package/dist/esm/internal/proxyFactories.js.map +1 -0
- package/dist/esm/internal/registerAppI18n.js +20 -0
- package/dist/esm/internal/registerAppI18n.js.map +1 -0
- package/dist/esm/internal/registerCustomTemplates.js +16 -0
- package/dist/esm/internal/registerCustomTemplates.js.map +1 -0
- package/dist/esm/internal/secret_internals.js +145 -0
- package/dist/esm/internal/secret_internals.js.map +1 -0
- package/dist/esm/themeAndMode.js +80 -0
- package/dist/esm/themeAndMode.js.map +1 -0
- package/dist/types/CustomProcessors.d.ts +7 -0
- package/dist/types/CustomTemplates.d.ts +8 -0
- package/dist/types/StoryboardFunctionRegistry.d.ts +44 -0
- package/dist/types/auth.d.ts +19 -0
- package/dist/types/fetchByProvider.d.ts +2 -0
- package/dist/types/getBasePath.d.ts +4 -0
- package/dist/types/getPageInfo.d.ts +14 -0
- package/dist/types/handleHttpError.d.ts +19 -0
- package/dist/types/history.d.ts +7 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/internal/CustomTemplates/bindTemplateProxy.d.ts +3 -0
- package/dist/types/internal/CustomTemplates/constants.d.ts +11 -0
- package/dist/types/internal/CustomTemplates/expandCustomTemplate.d.ts +3 -0
- package/dist/types/internal/CustomTemplates/setupTemplateProxy.d.ts +7 -0
- package/dist/types/internal/CustomTemplates/setupUseBrickInTemplate.d.ts +2 -0
- package/dist/types/internal/CustomTemplates/utils.d.ts +7 -0
- package/dist/types/internal/Renderer.d.ts +21 -0
- package/dist/types/internal/RendererContext.d.ts +25 -0
- package/dist/types/internal/Router.d.ts +16 -0
- package/dist/types/internal/Runtime.d.ts +35 -0
- package/dist/types/internal/abortController.d.ts +2 -0
- package/dist/types/internal/bindListeners.d.ts +11 -0
- package/dist/types/internal/checkInstalledApps.d.ts +6 -0
- package/dist/types/internal/checkPermissions.d.ts +17 -0
- package/dist/types/internal/compute/StoryboardFunctions.d.ts +1 -0
- package/dist/types/internal/compute/WidgetFunctions.d.ts +3 -0
- package/dist/types/internal/compute/WidgetI18n.d.ts +3 -0
- package/dist/types/internal/compute/checkIf.d.ts +23 -0
- package/dist/types/internal/compute/collectMemberCallUsage.d.ts +8 -0
- package/dist/types/internal/compute/computeRealProperties.d.ts +4 -0
- package/dist/types/internal/compute/computeRealValue.d.ts +9 -0
- package/dist/types/internal/compute/evaluate.d.ts +21 -0
- package/dist/types/internal/compute/getGeneralGlobals.d.ts +12 -0
- package/dist/types/internal/compute/getNextStateOfUseBrick.d.ts +16 -0
- package/dist/types/internal/compute/getStorageItem.d.ts +1 -0
- package/dist/types/internal/compute/getTracks.d.ts +5 -0
- package/dist/types/internal/compute/images.d.ts +5 -0
- package/dist/types/internal/compute/listenOnTrackingContext.d.ts +9 -0
- package/dist/types/internal/compute/markAsComputed.d.ts +3 -0
- package/dist/types/internal/compute/setProperties.d.ts +2 -0
- package/dist/types/internal/compute/setRealProperties.d.ts +1 -0
- package/dist/types/internal/data/CollectContracts.d.ts +5 -0
- package/dist/types/internal/data/DataStore.d.ts +26 -0
- package/dist/types/internal/data/FlowApi.d.ts +30 -0
- package/dist/types/internal/data/FlowApiProvider.d.ts +20 -0
- package/dist/types/internal/data/getProviderBrick.d.ts +1 -0
- package/dist/types/internal/data/resolveData.d.ts +16 -0
- package/dist/types/internal/data/resolveDataStore.d.ts +11 -0
- package/dist/types/internal/devtools.d.ts +6 -0
- package/dist/types/internal/enums.d.ts +4 -0
- package/dist/types/internal/historyExtended.d.ts +58 -0
- package/dist/types/internal/interfaces.d.ts +92 -0
- package/dist/types/internal/loadBootstrapData.d.ts +10 -0
- package/dist/types/internal/loadCheckLogin.d.ts +1 -0
- package/dist/types/internal/matchPath.d.ts +18 -0
- package/dist/types/internal/matchRoutes.d.ts +9 -0
- package/dist/types/internal/matchStoryboard.d.ts +10 -0
- package/dist/types/internal/mediaQuery.d.ts +14 -0
- package/dist/types/internal/menu/computeMenuData.d.ts +7 -0
- package/dist/types/internal/menu/constants.d.ts +3 -0
- package/dist/types/internal/menu/fetchMenuById.d.ts +3 -0
- package/dist/types/internal/menu/fetchMenuTitle.d.ts +2 -0
- package/dist/types/internal/menu/getMenusOfStandaloneApp.d.ts +2 -0
- package/dist/types/internal/menu/interfaces.d.ts +74 -0
- package/dist/types/internal/menu/loadDynamicMenuItems.d.ts +3 -0
- package/dist/types/internal/menu/mergeMenu.d.ts +3 -0
- package/dist/types/internal/menu/reorderMenuItems.d.ts +2 -0
- package/dist/types/internal/mount.d.ts +3 -0
- package/dist/types/internal/poll.d.ts +10 -0
- package/dist/types/internal/proxyFactories.d.ts +2 -0
- package/dist/types/internal/registerAppI18n.d.ts +3 -0
- package/dist/types/internal/registerCustomTemplates.d.ts +2 -0
- package/dist/types/internal/secret_internals.d.ts +21 -0
- package/dist/types/themeAndMode.d.ts +16 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Renderer.js","names":["_loader","require","_general","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_checkPermissions","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","matchRoutes","output","blockingList","menuRequests","unauthenticated","route","runtimeContext","match","ctxStore","define","context","pendingPermissionsPreCheck","push","preCheckPermissionsForBrickOrRoute","type","redirectTo","redirect","asyncComputeRealValue","resolved","resolveData","transform","console","error","Error","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","key","_runtimeContext$app","brick","tplStateStoreId","symbolForTplStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","Array","isArray","length","asyncCheckBrickIf","brickName","startsWith","ensureValidControlBrick","dataSource","renderControlNode","_slots$slot","computedDataSource","slot","String","slots","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","tplStateStoreMap","values","store","waitForAll","rerenderControlNode","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","test","customTemplates","get","loadBricksImperatively","getBrickPackages","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","enqueueStableLoadBricks","tag","RenderTag","BRICK","return","events","portal","iid","ref","trackingContextList","loadProperties","properties","asyncComputeRealProperties","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","_brick$properties","computed","propName","propValue","Object","entries","asyncProperties","then","listenOnTrackingContext","registerBrickLifeCycle","lifeCycle","expandedBrickConf","expandCustomTemplate","undefined","childRuntimeContext","loadChildren","childSlotId","slotConf","childrenOutput","child","i","j","flat","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport { asyncComputeRealProperties } from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport { preCheckPermissionsForBrickOrRoute } from \"./checkPermissions.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoutes } from \"./matchRoutes.js\";\nimport {\n RuntimeBrickConfWithTplSymbols,\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type { RenderBrick, RenderNode, RuntimeContext } 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 } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: (Promise<StaticMenuConf | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\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 const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n runtimeContext.ctxStore.define(route.context, runtimeContext);\n runtimeContext.pendingPermissionsPreCheck.push(\n preCheckPermissionsForBrickOrRoute(route, runtimeContext)\n );\n switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n }\n }\n }\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithTplSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n key?: number,\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are not supported in v3:\", brickConf);\n return output;\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n // eslint-disable-next-line no-console\n console.error(\n \"Defining context on bricks will be dropped in v3:\",\n brickConf\n );\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n preCheckPermissionsForBrickOrRoute(brickConf, runtimeContext)\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\n const renderControlNode = async () => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\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 output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const output = await renderControlNode();\n output.blockingList.push(\n ...[...runtimeContext.tplStateStoreMap.values()].map((store) =>\n store.waitForAll()\n ),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\n );\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n return controlledOutput;\n }\n\n // Custom templates need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await loadBricksImperatively([brickName], getBrickPackages());\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 }\n\n if (brickName.includes(\".\")) {\n output.blockingList.push(\n enqueueStableLoadBricks([brickName], getBrickPackages())\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 // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const trackingContextList: TrackingContextItem[] = [];\n const loadProperties = async () => {\n brick.properties = await asyncComputeRealProperties(\n brickConf.properties,\n runtimeContext,\n trackingContextList\n );\n const computedPropsFromHost =\n brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n brick.properties ??= {};\n const computed = await computedPropsFromHost;\n for (const [propName, propValue] of Object.entries(computed)) {\n brick.properties[propName] = propValue;\n }\n }\n return brick.properties;\n };\n const asyncProperties = loadProperties();\n blockingList.push(asyncProperties);\n\n asyncProperties.then(() => {\n listenOnTrackingContext(brick, trackingContextList);\n });\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 asyncProperties\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 } 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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\n mergeRenderOutput(childrenOutput, item);\n }\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\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: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\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\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 child of children) {\n const slot = child.slot ?? \"\";\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"],"mappings":"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"}
|
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.RendererContext = void 0;
|
|
8
|
+
var _classPrivateMethodInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateMethodInitSpec"));
|
|
9
|
+
var _classPrivateFieldInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldInitSpec"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet"));
|
|
12
|
+
var _classPrivateMethodGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateMethodGet"));
|
|
13
|
+
var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet"));
|
|
14
|
+
var _lodash = require("lodash");
|
|
15
|
+
var _bindListeners = require("./bindListeners.js");
|
|
16
|
+
var _history = require("../history.js");
|
|
17
|
+
var _proxyFactories = require("./proxyFactories.js");
|
|
18
|
+
var _mediaQuery = require("./mediaQuery.js");
|
|
19
|
+
var _mount = require("./mount.js");
|
|
20
|
+
var _enums = require("./enums.js");
|
|
21
|
+
var _bindTemplateProxy = require("./CustomTemplates/bindTemplateProxy.js");
|
|
22
|
+
const commonLifeCycles = ["onMount", "onUnmount", "onMediaChange", "onScrollIntoView"];
|
|
23
|
+
const routerOnlyLifeCycles = ["onBeforePageLoad", "onPageLoad", "onPageLeave", "onBeforePageLeave", "onAnchorLoad", "onAnchorUnload"];
|
|
24
|
+
var _memoizedLifeCycle = /*#__PURE__*/new WeakMap();
|
|
25
|
+
var _observers = /*#__PURE__*/new WeakMap();
|
|
26
|
+
var _mediaListener = /*#__PURE__*/new WeakMap();
|
|
27
|
+
var _memoizedControlNodes = /*#__PURE__*/new WeakMap();
|
|
28
|
+
var _unmountBricks = /*#__PURE__*/new WeakSet();
|
|
29
|
+
var _initializeRerenderBricks = /*#__PURE__*/new WeakSet();
|
|
30
|
+
var _dispatchGeneralLifeCycle = /*#__PURE__*/new WeakSet();
|
|
31
|
+
var _addObserver = /*#__PURE__*/new WeakSet();
|
|
32
|
+
class RendererContext {
|
|
33
|
+
constructor(_type) {
|
|
34
|
+
(0, _classPrivateMethodInitSpec2.default)(this, _addObserver);
|
|
35
|
+
// Note: no `onScrollIntoView`
|
|
36
|
+
(0, _classPrivateMethodInitSpec2.default)(this, _dispatchGeneralLifeCycle);
|
|
37
|
+
(0, _classPrivateMethodInitSpec2.default)(this, _initializeRerenderBricks);
|
|
38
|
+
(0, _classPrivateMethodInitSpec2.default)(this, _unmountBricks);
|
|
39
|
+
(0, _defineProperty2.default)(this, "type", void 0);
|
|
40
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _memoizedLifeCycle, {
|
|
41
|
+
writable: true,
|
|
42
|
+
value: {
|
|
43
|
+
onBeforePageLoad: [],
|
|
44
|
+
onPageLoad: [],
|
|
45
|
+
onPageLeave: [],
|
|
46
|
+
onBeforePageLeave: [],
|
|
47
|
+
onAnchorLoad: [],
|
|
48
|
+
onAnchorUnload: [],
|
|
49
|
+
onMediaChange: [],
|
|
50
|
+
onScrollIntoView: [],
|
|
51
|
+
onMount: [],
|
|
52
|
+
onUnmount: []
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
// #observers: IntersectionObserver[] = [];
|
|
56
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _observers, {
|
|
57
|
+
writable: true,
|
|
58
|
+
value: new Map()
|
|
59
|
+
});
|
|
60
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _mediaListener, {
|
|
61
|
+
writable: true,
|
|
62
|
+
value: void 0
|
|
63
|
+
});
|
|
64
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _memoizedControlNodes, {
|
|
65
|
+
writable: true,
|
|
66
|
+
value: void 0
|
|
67
|
+
});
|
|
68
|
+
this.type = _type;
|
|
69
|
+
}
|
|
70
|
+
registerBrickLifeCycle(brick, lifeCycle) {
|
|
71
|
+
if (!lifeCycle) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const lifeCycleTypes = [...commonLifeCycles, ...(this.type === "router" ? routerOnlyLifeCycles : [])];
|
|
75
|
+
for (const key of lifeCycleTypes) {
|
|
76
|
+
const handlers = lifeCycle[key];
|
|
77
|
+
if (handlers) {
|
|
78
|
+
(0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle)[key].push({
|
|
79
|
+
brick,
|
|
80
|
+
handlers: handlers
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// istanbul ignore next
|
|
85
|
+
if (!(0, _lodash.isEmpty)(lifeCycle.useResolves)) {
|
|
86
|
+
// eslint-disable-next-line no-console
|
|
87
|
+
console.error("`lifeCycle.useResolves` is not supported in v3:", lifeCycle);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
memoizeControlNode(slotId, key, node, returnNode) {
|
|
91
|
+
if (!(0, _classPrivateFieldGet2.default)(this, _memoizedControlNodes)) {
|
|
92
|
+
(0, _classPrivateFieldSet2.default)(this, _memoizedControlNodes, new WeakMap());
|
|
93
|
+
}
|
|
94
|
+
const memKey = `${slotId !== null && slotId !== void 0 ? slotId : ""}.${key}`;
|
|
95
|
+
let mem = (0, _classPrivateFieldGet2.default)(this, _memoizedControlNodes).get(returnNode);
|
|
96
|
+
if (!mem) {
|
|
97
|
+
mem = new Map();
|
|
98
|
+
(0, _classPrivateFieldGet2.default)(this, _memoizedControlNodes).set(returnNode, mem);
|
|
99
|
+
}
|
|
100
|
+
mem.set(memKey, {
|
|
101
|
+
node,
|
|
102
|
+
last: getLastNode(node),
|
|
103
|
+
lastNormal: getLastNormalNode(node),
|
|
104
|
+
lastPortal: getLastPortalNode(node)
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
rerenderControlNode(slotId, key, node, returnNode) {
|
|
108
|
+
var _prevLastNormal$eleme, _prevLastNormal$eleme2, _prevLastPortal$eleme, _prevLastPortal$eleme2;
|
|
109
|
+
const memKey = `${slotId !== null && slotId !== void 0 ? slotId : ""}.${key}`;
|
|
110
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
111
|
+
const memoized = (0, _classPrivateFieldGet2.default)(this, _memoizedControlNodes).get(returnNode).get(memKey);
|
|
112
|
+
const {
|
|
113
|
+
node: prevNode,
|
|
114
|
+
last: prevLast,
|
|
115
|
+
lastNormal: prevLastNormal,
|
|
116
|
+
lastPortal: prevLastPortal
|
|
117
|
+
} = memoized;
|
|
118
|
+
const insertBeforeChild = (_prevLastNormal$eleme = prevLastNormal === null || prevLastNormal === void 0 ? void 0 : (_prevLastNormal$eleme2 = prevLastNormal.element) === null || _prevLastNormal$eleme2 === void 0 ? void 0 : _prevLastNormal$eleme2.nextSibling) !== null && _prevLastNormal$eleme !== void 0 ? _prevLastNormal$eleme : null;
|
|
119
|
+
const insertPortalBeforeChild = (_prevLastPortal$eleme = prevLastPortal === null || prevLastPortal === void 0 ? void 0 : (_prevLastPortal$eleme2 = prevLastPortal.element) === null || _prevLastPortal$eleme2 === void 0 ? void 0 : _prevLastPortal$eleme2.nextSibling) !== null && _prevLastPortal$eleme !== void 0 ? _prevLastPortal$eleme : null;
|
|
120
|
+
const last = getLastNode(node);
|
|
121
|
+
memoized.node = node;
|
|
122
|
+
memoized.last = last;
|
|
123
|
+
memoized.lastNormal = getLastNormalNode(node);
|
|
124
|
+
memoized.lastPortal = getLastPortalNode(node);
|
|
125
|
+
|
|
126
|
+
// Figure out the unchanged prev sibling and next sibling
|
|
127
|
+
let prevSibling;
|
|
128
|
+
let current = returnNode.child;
|
|
129
|
+
while (current && current !== prevLast) {
|
|
130
|
+
if (current.sibling === prevNode) {
|
|
131
|
+
prevSibling = current;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
current = current.sibling;
|
|
135
|
+
}
|
|
136
|
+
const fragment = document.createDocumentFragment();
|
|
137
|
+
const portalFragment = document.createDocumentFragment();
|
|
138
|
+
const renderRoot = {
|
|
139
|
+
tag: _enums.RenderTag.ROOT,
|
|
140
|
+
container: fragment,
|
|
141
|
+
createPortal: portalFragment,
|
|
142
|
+
child: node
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
// Override `return`
|
|
146
|
+
current = node;
|
|
147
|
+
while (current) {
|
|
148
|
+
current.return = renderRoot;
|
|
149
|
+
current = current.sibling;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Unmount previous bricks, including their descendants
|
|
153
|
+
const removeBricks = getBrickRange(prevNode, prevLast);
|
|
154
|
+
(0, _classPrivateMethodGet2.default)(this, _unmountBricks, _unmountBricks2).call(this, removeBricks);
|
|
155
|
+
(0, _mount.mountTree)(renderRoot);
|
|
156
|
+
|
|
157
|
+
// Connect back
|
|
158
|
+
if (prevSibling) {
|
|
159
|
+
prevSibling.sibling = node;
|
|
160
|
+
} else {
|
|
161
|
+
returnNode.child = node;
|
|
162
|
+
}
|
|
163
|
+
if (last) {
|
|
164
|
+
last.sibling = prevLast === null || prevLast === void 0 ? void 0 : prevLast.sibling;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Resume `return`
|
|
168
|
+
current = node;
|
|
169
|
+
while (current) {
|
|
170
|
+
current.return = returnNode;
|
|
171
|
+
current = current.sibling;
|
|
172
|
+
}
|
|
173
|
+
if (returnNode.tag === _enums.RenderTag.ROOT) {
|
|
174
|
+
var _returnNode$container;
|
|
175
|
+
(_returnNode$container = returnNode.container) === null || _returnNode$container === void 0 ? void 0 : _returnNode$container.insertBefore(fragment, insertBeforeChild);
|
|
176
|
+
} else {
|
|
177
|
+
var _returnNode$element;
|
|
178
|
+
(_returnNode$element = returnNode.element) === null || _returnNode$element === void 0 ? void 0 : _returnNode$element.insertBefore(fragment, insertBeforeChild);
|
|
179
|
+
}
|
|
180
|
+
if (portalFragment.childNodes.length > 0) {
|
|
181
|
+
var _root;
|
|
182
|
+
let root = node;
|
|
183
|
+
while (root && root.return) {
|
|
184
|
+
root = root.return;
|
|
185
|
+
}
|
|
186
|
+
if (((_root = root) === null || _root === void 0 ? void 0 : _root.tag) !== _enums.RenderTag.ROOT) {
|
|
187
|
+
throw new Error("Cannot find render root node");
|
|
188
|
+
}
|
|
189
|
+
const portal = typeof root.createPortal === "function" ? root.createPortal() : root.createPortal;
|
|
190
|
+
portal.insertBefore(portalFragment, insertPortalBeforeChild);
|
|
191
|
+
}
|
|
192
|
+
const newBricks = getBrickRange(node, last);
|
|
193
|
+
(0, _classPrivateMethodGet2.default)(this, _initializeRerenderBricks, _initializeRerenderBricks2).call(this, newBricks);
|
|
194
|
+
}
|
|
195
|
+
dispose() {
|
|
196
|
+
for (const list of Object.values((0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle))) {
|
|
197
|
+
list.length = 0;
|
|
198
|
+
}
|
|
199
|
+
for (const list of (0, _classPrivateFieldGet2.default)(this, _observers).values()) {
|
|
200
|
+
for (const observer of list) {
|
|
201
|
+
observer.disconnect();
|
|
202
|
+
}
|
|
203
|
+
list.length = 0;
|
|
204
|
+
}
|
|
205
|
+
(0, _classPrivateFieldGet2.default)(this, _observers).clear();
|
|
206
|
+
if ((0, _classPrivateFieldGet2.default)(this, _mediaListener)) {
|
|
207
|
+
_mediaQuery.mediaEventTarget.removeEventListener("change", (0, _classPrivateFieldGet2.default)(this, _mediaListener));
|
|
208
|
+
(0, _classPrivateFieldSet2.default)(this, _mediaListener, undefined);
|
|
209
|
+
}
|
|
210
|
+
(0, _classPrivateFieldSet2.default)(this, _memoizedControlNodes, undefined);
|
|
211
|
+
}
|
|
212
|
+
dispatchBeforePageLoad() {
|
|
213
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onBeforePageLoad", new CustomEvent("page.beforeLoad"));
|
|
214
|
+
}
|
|
215
|
+
dispatchPageLoad() {
|
|
216
|
+
const event = new CustomEvent("page.load");
|
|
217
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onPageLoad", event);
|
|
218
|
+
// Currently only for e2e testing
|
|
219
|
+
window.dispatchEvent(event);
|
|
220
|
+
}
|
|
221
|
+
dispatchBeforePageLeave(detail) {
|
|
222
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onBeforePageLeave", new CustomEvent("page.beforeLeave", {
|
|
223
|
+
detail
|
|
224
|
+
}));
|
|
225
|
+
}
|
|
226
|
+
dispatchPageLeave() {
|
|
227
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onPageLeave", new CustomEvent("page.leave"));
|
|
228
|
+
}
|
|
229
|
+
dispatchAnchorLoad() {
|
|
230
|
+
const {
|
|
231
|
+
hash
|
|
232
|
+
} = (0, _history.getHistory)().location;
|
|
233
|
+
if (hash && hash !== "#") {
|
|
234
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onAnchorLoad", new CustomEvent("anchor.load", {
|
|
235
|
+
detail: {
|
|
236
|
+
hash,
|
|
237
|
+
anchor: hash.substring(1)
|
|
238
|
+
}
|
|
239
|
+
}));
|
|
240
|
+
} else {
|
|
241
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onAnchorUnload", new CustomEvent("anchor.unload"));
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
initializeScrollIntoView() {
|
|
245
|
+
for (const {
|
|
246
|
+
brick,
|
|
247
|
+
handlers: conf
|
|
248
|
+
} of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle).onScrollIntoView) {
|
|
249
|
+
(0, _classPrivateMethodGet2.default)(this, _addObserver, _addObserver2).call(this, brick, conf);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
initializeMediaChange() {
|
|
253
|
+
(0, _classPrivateFieldSet2.default)(this, _mediaListener, event => {
|
|
254
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onMediaChange", new CustomEvent("media.change", {
|
|
255
|
+
detail: (0, _proxyFactories.getReadOnlyProxy)(event.detail)
|
|
256
|
+
}));
|
|
257
|
+
});
|
|
258
|
+
_mediaQuery.mediaEventTarget.addEventListener("change", (0, _classPrivateFieldGet2.default)(this, _mediaListener));
|
|
259
|
+
}
|
|
260
|
+
dispatchOnMount() {
|
|
261
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onMount", new CustomEvent("mount"));
|
|
262
|
+
}
|
|
263
|
+
dispatchOnUnmount() {
|
|
264
|
+
(0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onUnmount", new CustomEvent("unmount"));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
exports.RendererContext = RendererContext;
|
|
268
|
+
function _unmountBricks2(bricks) {
|
|
269
|
+
const lifeCycleTypes = [...commonLifeCycles, ...(this.type === "router" ? routerOnlyLifeCycles : [])];
|
|
270
|
+
const unmountList = [];
|
|
271
|
+
|
|
272
|
+
// Clear life cycle handlers, record `onUnmount` at the same time
|
|
273
|
+
for (const key of lifeCycleTypes) {
|
|
274
|
+
const removed = (0, _lodash.remove)((0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle)[key], item => bricks.has(item.brick));
|
|
275
|
+
if (key === "onUnmount") {
|
|
276
|
+
unmountList.push(...removed);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// Clear intersection observers
|
|
281
|
+
for (const brick of bricks) {
|
|
282
|
+
var _brick$element, _brick$element2;
|
|
283
|
+
const observers = (0, _classPrivateFieldGet2.default)(this, _observers).get(brick);
|
|
284
|
+
if (observers !== null && observers !== void 0 && observers.length) {
|
|
285
|
+
for (const observer of observers) {
|
|
286
|
+
observer.disconnect();
|
|
287
|
+
}
|
|
288
|
+
observers.length = 0;
|
|
289
|
+
(0, _classPrivateFieldGet2.default)(this, _observers).delete(brick);
|
|
290
|
+
}
|
|
291
|
+
(0, _bindTemplateProxy.unbindTemplateProxy)(brick);
|
|
292
|
+
(_brick$element = brick.element) === null || _brick$element === void 0 ? true : delete _brick$element.$$tplStateStore;
|
|
293
|
+
|
|
294
|
+
// Also remove the element
|
|
295
|
+
(_brick$element2 = brick.element) === null || _brick$element2 === void 0 ? void 0 : _brick$element2.remove();
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Dispatch unmount events
|
|
299
|
+
const unmountEvent = new CustomEvent("unmount");
|
|
300
|
+
for (const {
|
|
301
|
+
brick,
|
|
302
|
+
handlers
|
|
303
|
+
} of unmountList) {
|
|
304
|
+
(0, _bindListeners.listenerFactory)(handlers, brick.runtimeContext, brick)(unmountEvent);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
function _initializeRerenderBricks2(bricks) {
|
|
308
|
+
const mountEvent = new CustomEvent("mount");
|
|
309
|
+
for (const {
|
|
310
|
+
brick,
|
|
311
|
+
handlers
|
|
312
|
+
} of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle).onMount) {
|
|
313
|
+
if (bricks.has(brick)) {
|
|
314
|
+
(0, _bindListeners.listenerFactory)(handlers, brick.runtimeContext, brick)(mountEvent);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
for (const {
|
|
318
|
+
brick,
|
|
319
|
+
handlers: conf
|
|
320
|
+
} of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle).onScrollIntoView) {
|
|
321
|
+
if (bricks.has(brick)) {
|
|
322
|
+
(0, _classPrivateMethodGet2.default)(this, _addObserver, _addObserver2).call(this, brick, conf);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
function _dispatchGeneralLifeCycle2(type, event) {
|
|
327
|
+
// istanbul ignore next
|
|
328
|
+
if (process.env.NODE_ENV === "development" && this.type === "useBrick" && routerOnlyLifeCycles.includes(type)) {
|
|
329
|
+
throw new Error(`\`lifeCycle.${type}\` cannot be used in ${this.type}.\nThis is a bug of Brick Next, please report it.`);
|
|
330
|
+
}
|
|
331
|
+
for (const {
|
|
332
|
+
brick,
|
|
333
|
+
handlers
|
|
334
|
+
} of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle)[type]) {
|
|
335
|
+
(0, _bindListeners.listenerFactory)(handlers, brick.runtimeContext, brick)(event);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
function _addObserver2(brick, conf) {
|
|
339
|
+
var _conf$threshold;
|
|
340
|
+
const threshold = (_conf$threshold = conf.threshold) !== null && _conf$threshold !== void 0 ? _conf$threshold : 0.1;
|
|
341
|
+
const observer = new IntersectionObserver((entries, observer) => {
|
|
342
|
+
entries.forEach(entry => {
|
|
343
|
+
if (entry.isIntersecting) {
|
|
344
|
+
if (entry.intersectionRatio >= threshold) {
|
|
345
|
+
(0, _bindListeners.listenerFactory)(conf.handlers, brick.runtimeContext, brick)(new CustomEvent("scroll.into.view"));
|
|
346
|
+
observer.disconnect();
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
}, {
|
|
351
|
+
threshold
|
|
352
|
+
});
|
|
353
|
+
observer.observe(brick.element);
|
|
354
|
+
let list = (0, _classPrivateFieldGet2.default)(this, _observers).get(brick);
|
|
355
|
+
if (!list) {
|
|
356
|
+
list = [];
|
|
357
|
+
(0, _classPrivateFieldGet2.default)(this, _observers).set(brick, list);
|
|
358
|
+
}
|
|
359
|
+
list.push(observer);
|
|
360
|
+
}
|
|
361
|
+
function getLastNode(node) {
|
|
362
|
+
let last = node;
|
|
363
|
+
while ((_last = last) !== null && _last !== void 0 && _last.sibling) {
|
|
364
|
+
var _last;
|
|
365
|
+
last = last.sibling;
|
|
366
|
+
}
|
|
367
|
+
return last;
|
|
368
|
+
}
|
|
369
|
+
function getLastNormalNode(node) {
|
|
370
|
+
let last;
|
|
371
|
+
let current = node;
|
|
372
|
+
while (current) {
|
|
373
|
+
if (!current.portal) {
|
|
374
|
+
last = current;
|
|
375
|
+
}
|
|
376
|
+
current = current.sibling;
|
|
377
|
+
}
|
|
378
|
+
return last;
|
|
379
|
+
}
|
|
380
|
+
function getLastPortalNode(node) {
|
|
381
|
+
let last;
|
|
382
|
+
let current = node;
|
|
383
|
+
while (current) {
|
|
384
|
+
if (current.portal) {
|
|
385
|
+
last = current;
|
|
386
|
+
}
|
|
387
|
+
if (current.child) {
|
|
388
|
+
current = current.child;
|
|
389
|
+
} else if (current.sibling) {
|
|
390
|
+
current = current.sibling;
|
|
391
|
+
} else {
|
|
392
|
+
var _currentReturn;
|
|
393
|
+
let currentReturn = current.return;
|
|
394
|
+
while (currentReturn) {
|
|
395
|
+
if (currentReturn.sibling) {
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
currentReturn = currentReturn.return;
|
|
399
|
+
}
|
|
400
|
+
current = (_currentReturn = currentReturn) === null || _currentReturn === void 0 ? void 0 : _currentReturn.sibling;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return last;
|
|
404
|
+
}
|
|
405
|
+
function getBrickRange(from, to) {
|
|
406
|
+
const range = new Set();
|
|
407
|
+
let current = from;
|
|
408
|
+
while (current) {
|
|
409
|
+
range.add(current);
|
|
410
|
+
if (current.child) {
|
|
411
|
+
current = current.child;
|
|
412
|
+
} else if (current === to) {
|
|
413
|
+
break;
|
|
414
|
+
} else if (current.sibling) {
|
|
415
|
+
current = current.sibling;
|
|
416
|
+
} else {
|
|
417
|
+
var _currentReturn2;
|
|
418
|
+
let currentReturn = current.return;
|
|
419
|
+
while (currentReturn && currentReturn !== to) {
|
|
420
|
+
if (currentReturn.sibling) {
|
|
421
|
+
break;
|
|
422
|
+
}
|
|
423
|
+
currentReturn = currentReturn.return;
|
|
424
|
+
}
|
|
425
|
+
if (currentReturn === to) {
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
current = (_currentReturn2 = currentReturn) === null || _currentReturn2 === void 0 ? void 0 : _currentReturn2.sibling;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return range;
|
|
432
|
+
}
|
|
433
|
+
//# sourceMappingURL=RendererContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RendererContext.js","names":["_lodash","require","_bindListeners","_history","_proxyFactories","_mediaQuery","_mount","_enums","_bindTemplateProxy","commonLifeCycles","routerOnlyLifeCycles","_memoizedLifeCycle","WeakMap","_observers","_mediaListener","_memoizedControlNodes","_unmountBricks","WeakSet","_initializeRerenderBricks","_dispatchGeneralLifeCycle","_addObserver","RendererContext","constructor","type","_classPrivateMethodInitSpec2","default","_defineProperty2","_classPrivateFieldInitSpec2","writable","value","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","Map","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","_classPrivateFieldGet2","push","isEmpty","useResolves","console","error","memoizeControlNode","slotId","node","returnNode","_classPrivateFieldSet2","memKey","mem","get","set","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","rerenderControlNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","_prevLastPortal$eleme2","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","element","nextSibling","insertPortalBeforeChild","prevSibling","current","child","sibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","tag","RenderTag","ROOT","container","createPortal","return","removeBricks","getBrickRange","_classPrivateMethodGet2","_unmountBricks2","call","mountTree","_returnNode$container","insertBefore","_returnNode$element","childNodes","length","_root","root","Error","portal","newBricks","_initializeRerenderBricks2","dispose","list","Object","values","observer","disconnect","clear","mediaEventTarget","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle2","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","getHistory","location","anchor","substring","initializeScrollIntoView","conf","_addObserver2","initializeMediaChange","getReadOnlyProxy","addEventListener","dispatchOnMount","dispatchOnUnmount","exports","bricks","unmountList","removed","remove","item","has","_brick$element","_brick$element2","observers","delete","unbindTemplateProxy","$$tplStateStore","unmountEvent","listenerFactory","runtimeContext","mountEvent","process","env","NODE_ENV","includes","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","_currentReturn","currentReturn","from","to","range","Set","add","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n ScrollIntoViewConf,\n UseBrickLifeCycle,\n} from \"@next-core/types\";\nimport type { Action } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type { RenderBrick, RenderNode, RenderRoot } from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n] as const;\n\nconst routerOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport class RendererContext {\n public readonly type: \"router\" | \"useBrick\";\n\n constructor(type: \"router\" | \"useBrick\") {\n this.type = type;\n }\n\n #memoizedLifeCycle: MemoizedLifeCycle<\n Required<\n Pick<\n BrickLifeCycle,\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onScrollIntoView\"\n | \"onMount\"\n | \"onUnmount\"\n // Omitted:\n // \"onMessage\"\n // \"onMessageClose\"\n >\n >\n > = {\n onBeforePageLoad: [],\n onPageLoad: [],\n onPageLeave: [],\n onBeforePageLeave: [],\n onAnchorLoad: [],\n onAnchorUnload: [],\n onMediaChange: [],\n onScrollIntoView: [],\n onMount: [],\n onUnmount: [],\n };\n // #observers: IntersectionObserver[] = [];\n #observers = new Map<RenderBrick, IntersectionObserver[]>();\n #mediaListener: EventListener | undefined;\n\n #memoizedControlNodes?: WeakMap<\n RenderNode,\n Map<\n string,\n {\n node?: RenderBrick;\n last?: RenderBrick;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | UseBrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.type === \"router\" ? routerOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\n \"`lifeCycle.useResolves` is not supported in v3:\",\n lifeCycle\n );\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.type === \"router\" ? routerOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoizeControlNode(\n slotId: string | undefined,\n key: number,\n node: RenderBrick | undefined,\n returnNode: RenderNode\n ) {\n if (!this.#memoizedControlNodes) {\n this.#memoizedControlNodes = new WeakMap();\n }\n const memKey = `${slotId ?? \"\"}.${key}`;\n let mem = this.#memoizedControlNodes.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoizedControlNodes.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n rerenderControlNode(\n slotId: string | undefined,\n key: number,\n node: RenderBrick | undefined,\n returnNode: RenderNode\n ) {\n const memKey = `${slotId ?? \"\"}.${key}`;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoizedControlNodes!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n const insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n const insertPortalBeforeChild =\n prevLastPortal?.element?.nextSibling ?? null;\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderBrick | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\"Cannot find render root node\");\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoizedControlNodes = undefined;\n }\n\n // Note: no `onScrollIntoView`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMount\"\n | \"onUnmount\",\n event: CustomEvent\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.type === \"useBrick\" &&\n routerOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.type}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(node: RenderBrick | undefined): RenderBrick | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (!current.portal) {\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.portal) {\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderBrick | undefined,\n to: RenderBrick | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n range.add(current);\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
|