@saolabs/client 1.0.0 → 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/README.md +52 -195
- package/dist/index.d.ts +20 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/plugins.d.ts +2 -2
- package/dist/plugins.js +2 -2
- package/dist/src/core/app/Application.d.ts +17 -15
- package/dist/src/core/app/Application.d.ts.map +1 -1
- package/dist/src/core/app/Application.js +41 -18
- package/dist/src/core/app/Application.js.map +1 -1
- package/dist/src/core/bootstrap/app.d.ts +1 -1
- package/dist/src/core/bootstrap/app.d.ts.map +1 -1
- package/dist/src/core/bootstrap/app.js +74 -4
- package/dist/src/core/bootstrap/app.js.map +1 -1
- package/dist/src/core/bootstrap/bundle.d.ts +41 -0
- package/dist/src/core/bootstrap/bundle.d.ts.map +1 -0
- package/dist/src/core/bootstrap/bundle.js +98 -0
- package/dist/src/core/bootstrap/bundle.js.map +1 -0
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.js +3 -3
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.js +11 -8
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts +3 -1
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.js +8 -3
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts +2 -1
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.js +14 -4
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts +4 -4
- package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/ServiceProvider.js +5 -5
- package/dist/src/core/bootstrap/providers/ServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.js +3 -3
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/default-providers.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/default-providers.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/default-providers.js +44 -11
- package/dist/src/core/bootstrap/providers/default-providers.js.map +1 -1
- package/dist/src/core/bootstrap/providers/index.d.ts +9 -9
- package/dist/src/core/bootstrap/providers/index.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/index.js +8 -8
- package/dist/src/core/bootstrap/providers/index.js.map +1 -1
- package/dist/src/core/bootstrap/providers/provider-order.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/provider-order.d.ts.map +1 -1
- package/dist/src/core/bootstrap/ssr.d.ts +47 -0
- package/dist/src/core/bootstrap/ssr.d.ts.map +1 -0
- package/dist/src/core/bootstrap/ssr.js +125 -0
- package/dist/src/core/bootstrap/ssr.js.map +1 -0
- package/dist/src/core/cache/ViewCache.d.ts +1 -1
- package/dist/src/core/cache/ViewCache.d.ts.map +1 -1
- package/dist/src/core/cache/index.d.ts +1 -1
- package/dist/src/core/cache/index.d.ts.map +1 -1
- package/dist/src/core/cache/index.js +1 -1
- package/dist/src/core/cache/index.js.map +1 -1
- package/dist/src/core/contracts/ApplicationInterface.d.ts +13 -11
- package/dist/src/core/contracts/ApplicationInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/BlockInterface.d.ts +10 -10
- package/dist/src/core/contracts/BlockInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/BundleInterface.d.ts +38 -0
- package/dist/src/core/contracts/BundleInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/BundleInterface.js +2 -0
- package/dist/src/core/contracts/BundleInterface.js.map +1 -0
- package/dist/src/core/contracts/ComponentInterface.d.ts +7 -6
- package/dist/src/core/contracts/ComponentInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ElementInterface.d.ts +91 -27
- package/dist/src/core/contracts/ElementInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/HeadServiceInterface.d.ts +37 -0
- package/dist/src/core/contracts/HeadServiceInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/HeadServiceInterface.js +3 -0
- package/dist/src/core/contracts/HeadServiceInterface.js.map +1 -0
- package/dist/src/core/contracts/HelperInterface.d.ts +9 -1
- package/dist/src/core/contracts/HelperInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/HttpServiceInterface.d.ts +3 -0
- package/dist/src/core/contracts/HttpServiceInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/MarkerInterface.d.ts +29 -44
- package/dist/src/core/contracts/MarkerInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ReactiveInterface.d.ts +9 -9
- package/dist/src/core/contracts/ReactiveInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/RouterInterface.d.ts +5 -2
- package/dist/src/core/contracts/RouterInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/SectionInterface.d.ts +48 -0
- package/dist/src/core/contracts/SectionInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/SectionInterface.js +2 -0
- package/dist/src/core/contracts/SectionInterface.js.map +1 -0
- package/dist/src/core/contracts/ServiceProviderInterface.d.ts +3 -3
- package/dist/src/core/contracts/ServiceProviderInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewControllerInterface.d.ts +116 -15
- package/dist/src/core/contracts/ViewControllerInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewInterface.d.ts +31 -5
- package/dist/src/core/contracts/ViewInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewManagerInterface.d.ts +47 -5
- package/dist/src/core/contracts/ViewManagerInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewStateInterface.d.ts +39 -2
- package/dist/src/core/contracts/ViewStateInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/common.d.ts +3 -3
- package/dist/src/core/contracts/common.js +3 -3
- package/dist/src/core/contracts/utils.d.ts +19 -19
- package/dist/src/core/contracts/utils.d.ts.map +1 -1
- package/dist/src/core/contracts/views.d.ts +1 -22
- package/dist/src/core/contracts/views.d.ts.map +1 -1
- package/dist/src/core/devtools/hook.d.ts +66 -0
- package/dist/src/core/devtools/hook.d.ts.map +1 -0
- package/dist/src/core/devtools/hook.js +114 -0
- package/dist/src/core/devtools/hook.js.map +1 -0
- package/dist/src/core/devtools/index.d.ts +34 -0
- package/dist/src/core/devtools/index.d.ts.map +1 -0
- package/dist/src/core/devtools/index.js +33 -0
- package/dist/src/core/devtools/index.js.map +1 -0
- package/dist/src/core/devtools/inspector.d.ts +31 -0
- package/dist/src/core/devtools/inspector.d.ts.map +1 -0
- package/dist/src/core/devtools/inspector.js +249 -0
- package/dist/src/core/devtools/inspector.js.map +1 -0
- package/dist/src/core/elements/Block.d.ts +9 -7
- package/dist/src/core/elements/Block.d.ts.map +1 -1
- package/dist/src/core/elements/Block.js +33 -9
- package/dist/src/core/elements/Block.js.map +1 -1
- package/dist/src/core/elements/BlockOutlet.d.ts +19 -8
- package/dist/src/core/elements/BlockOutlet.d.ts.map +1 -1
- package/dist/src/core/elements/BlockOutlet.js +57 -13
- package/dist/src/core/elements/BlockOutlet.js.map +1 -1
- package/dist/src/core/elements/Component.d.ts +83 -11
- package/dist/src/core/elements/Component.d.ts.map +1 -1
- package/dist/src/core/elements/Component.js +334 -13
- package/dist/src/core/elements/Component.js.map +1 -1
- package/dist/src/core/elements/ForeachSlotCache.d.ts +95 -0
- package/dist/src/core/elements/ForeachSlotCache.d.ts.map +1 -0
- package/dist/src/core/elements/ForeachSlotCache.js +149 -0
- package/dist/src/core/elements/ForeachSlotCache.js.map +1 -0
- package/dist/src/core/elements/Fragment.d.ts +19 -13
- package/dist/src/core/elements/Fragment.d.ts.map +1 -1
- package/dist/src/core/elements/Fragment.js +43 -20
- package/dist/src/core/elements/Fragment.js.map +1 -1
- package/dist/src/core/elements/Html.d.ts +89 -12
- package/dist/src/core/elements/Html.d.ts.map +1 -1
- package/dist/src/core/elements/Html.js +707 -106
- package/dist/src/core/elements/Html.js.map +1 -1
- package/dist/src/core/elements/Output.d.ts +34 -10
- package/dist/src/core/elements/Output.d.ts.map +1 -1
- package/dist/src/core/elements/Output.js +141 -26
- package/dist/src/core/elements/Output.js.map +1 -1
- package/dist/src/core/elements/Reactive.d.ts +85 -14
- package/dist/src/core/elements/Reactive.d.ts.map +1 -1
- package/dist/src/core/elements/Reactive.js +315 -41
- package/dist/src/core/elements/Reactive.js.map +1 -1
- package/dist/src/core/elements/TextElement.d.ts +11 -7
- package/dist/src/core/elements/TextElement.d.ts.map +1 -1
- package/dist/src/core/elements/TextElement.js +18 -11
- package/dist/src/core/elements/TextElement.js.map +1 -1
- package/dist/src/core/elements/Wrapper.d.ts +24 -13
- package/dist/src/core/elements/Wrapper.d.ts.map +1 -1
- package/dist/src/core/elements/Wrapper.js +65 -8
- package/dist/src/core/elements/Wrapper.js.map +1 -1
- package/dist/src/core/elements/Yield.d.ts +10 -9
- package/dist/src/core/elements/Yield.d.ts.map +1 -1
- package/dist/src/core/elements/Yield.js +31 -19
- package/dist/src/core/elements/Yield.js.map +1 -1
- package/dist/src/core/elements/helpers.d.ts +7 -7
- package/dist/src/core/elements/helpers.d.ts.map +1 -1
- package/dist/src/core/elements/helpers.js +4 -4
- package/dist/src/core/elements/index.d.ts +12 -11
- package/dist/src/core/elements/index.d.ts.map +1 -1
- package/dist/src/core/elements/index.js +12 -11
- package/dist/src/core/elements/index.js.map +1 -1
- package/dist/src/core/elements/reconcileChildren.d.ts +7 -0
- package/dist/src/core/elements/reconcileChildren.d.ts.map +1 -0
- package/dist/src/core/elements/reconcileChildren.js +74 -0
- package/dist/src/core/elements/reconcileChildren.js.map +1 -0
- package/dist/src/core/hellpers/utils.d.ts +2 -2
- package/dist/src/core/hellpers/utils.js +4 -4
- package/dist/src/core/helpers/ApiClient.d.ts +58 -0
- package/dist/src/core/helpers/ApiClient.d.ts.map +1 -0
- package/dist/src/core/helpers/ApiClient.js +131 -0
- package/dist/src/core/helpers/ApiClient.js.map +1 -0
- package/dist/src/core/helpers/app.d.ts +3 -0
- package/dist/src/core/helpers/app.d.ts.map +1 -0
- package/dist/src/core/helpers/app.js +63 -0
- package/dist/src/core/helpers/app.js.map +1 -0
- package/dist/src/core/helpers/transition.d.ts +34 -0
- package/dist/src/core/helpers/transition.d.ts.map +1 -0
- package/dist/src/core/helpers/transition.js +118 -0
- package/dist/src/core/helpers/transition.js.map +1 -0
- package/dist/src/core/helpers/utils.d.ts +26 -0
- package/dist/src/core/helpers/utils.d.ts.map +1 -0
- package/dist/src/core/helpers/utils.js +96 -0
- package/dist/src/core/helpers/utils.js.map +1 -0
- package/dist/src/core/helpers/view.d.ts +39 -0
- package/dist/src/core/helpers/view.d.ts.map +1 -0
- package/dist/src/core/helpers/view.js +286 -0
- package/dist/src/core/helpers/view.js.map +1 -0
- package/dist/src/core/routers/Router.d.ts +108 -7
- package/dist/src/core/routers/Router.d.ts.map +1 -1
- package/dist/src/core/routers/Router.js +444 -68
- package/dist/src/core/routers/Router.js.map +1 -1
- package/dist/src/core/routers/index.d.ts +2 -2
- package/dist/src/core/routers/index.d.ts.map +1 -1
- package/dist/src/core/routers/index.js +1 -1
- package/dist/src/core/routers/index.js.map +1 -1
- package/dist/src/core/services/AssetManager.d.ts +112 -0
- package/dist/src/core/services/AssetManager.d.ts.map +1 -0
- package/dist/src/core/services/AssetManager.js +361 -0
- package/dist/src/core/services/AssetManager.js.map +1 -0
- package/dist/src/core/services/BlockManager.d.ts +73 -2
- package/dist/src/core/services/BlockManager.d.ts.map +1 -1
- package/dist/src/core/services/BlockManager.js +270 -48
- package/dist/src/core/services/BlockManager.js.map +1 -1
- package/dist/src/core/services/DomService.js +3 -3
- package/dist/src/core/services/DomService.js.map +1 -1
- package/dist/src/core/services/HeadService.d.ts +24 -0
- package/dist/src/core/services/HeadService.d.ts.map +1 -0
- package/dist/src/core/services/HeadService.js +120 -0
- package/dist/src/core/services/HeadService.js.map +1 -0
- package/dist/src/core/services/HelperService.d.ts +14 -3
- package/dist/src/core/services/HelperService.d.ts.map +1 -1
- package/dist/src/core/services/HelperService.js +32 -2
- package/dist/src/core/services/HelperService.js.map +1 -1
- package/dist/src/core/services/HttpService.d.ts +8 -0
- package/dist/src/core/services/HttpService.d.ts.map +1 -1
- package/dist/src/core/services/HttpService.js +121 -47
- package/dist/src/core/services/HttpService.js.map +1 -1
- package/dist/src/core/services/MarkerRegistry.d.ts +51 -8
- package/dist/src/core/services/MarkerRegistry.d.ts.map +1 -1
- package/dist/src/core/services/MarkerRegistry.js +135 -14
- package/dist/src/core/services/MarkerRegistry.js.map +1 -1
- package/dist/src/core/services/PageCache.d.ts +101 -0
- package/dist/src/core/services/PageCache.d.ts.map +1 -0
- package/dist/src/core/services/PageCache.js +184 -0
- package/dist/src/core/services/PageCache.js.map +1 -0
- package/dist/src/core/services/SectionManager.d.ts +100 -0
- package/dist/src/core/services/SectionManager.d.ts.map +1 -0
- package/dist/src/core/services/SectionManager.js +408 -0
- package/dist/src/core/services/SectionManager.js.map +1 -0
- package/dist/src/core/services/StorageService.js +1 -1
- package/dist/src/core/services/TranslationService.d.ts +21 -0
- package/dist/src/core/services/TranslationService.d.ts.map +1 -0
- package/dist/src/core/services/TranslationService.js +95 -0
- package/dist/src/core/services/TranslationService.js.map +1 -0
- package/dist/src/core/services/index.d.ts +11 -8
- package/dist/src/core/services/index.d.ts.map +1 -1
- package/dist/src/core/services/index.js +11 -8
- package/dist/src/core/services/index.js.map +1 -1
- package/dist/src/core/types/utils.d.ts +8 -8
- package/dist/src/core/types/utils.d.ts.map +1 -1
- package/dist/src/core/view/LoopContext.d.ts +21 -1
- package/dist/src/core/view/LoopContext.d.ts.map +1 -1
- package/dist/src/core/view/LoopContext.js +36 -0
- package/dist/src/core/view/LoopContext.js.map +1 -1
- package/dist/src/core/view/ResourceScope.d.ts +38 -0
- package/dist/src/core/view/ResourceScope.d.ts.map +1 -0
- package/dist/src/core/view/ResourceScope.js +167 -0
- package/dist/src/core/view/ResourceScope.js.map +1 -0
- package/dist/src/core/view/Section.d.ts +17 -32
- package/dist/src/core/view/Section.d.ts.map +1 -1
- package/dist/src/core/view/Section.js +14 -55
- package/dist/src/core/view/Section.js.map +1 -1
- package/dist/src/core/view/View.d.ts +43 -7
- package/dist/src/core/view/View.d.ts.map +1 -1
- package/dist/src/core/view/View.js +22 -4
- package/dist/src/core/view/View.js.map +1 -1
- package/dist/src/core/view/ViewController.d.ts +313 -40
- package/dist/src/core/view/ViewController.d.ts.map +1 -1
- package/dist/src/core/view/ViewController.js +1002 -147
- package/dist/src/core/view/ViewController.js.map +1 -1
- package/dist/src/core/view/ViewManager.d.ts +318 -27
- package/dist/src/core/view/ViewManager.d.ts.map +1 -1
- package/dist/src/core/view/ViewManager.js +1199 -258
- package/dist/src/core/view/ViewManager.js.map +1 -1
- package/dist/src/core/view/ViewState.d.ts +185 -6
- package/dist/src/core/view/ViewState.d.ts.map +1 -1
- package/dist/src/core/view/ViewState.js +851 -123
- package/dist/src/core/view/ViewState.js.map +1 -1
- package/dist/src/core/view/index.d.ts +5 -5
- package/dist/src/core/view/index.d.ts.map +1 -1
- package/dist/src/core/view/index.js +5 -5
- package/dist/src/core/view/index.js.map +1 -1
- package/dist/src/testing/index.d.ts +69 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +140 -0
- package/dist/src/testing/index.js.map +1 -0
- package/index.ts +29 -5
- package/package.json +30 -21
- package/plugins.ts +2 -2
- package/src/core/app/Application.ts +58 -31
- package/src/core/bootstrap/app.ts +80 -6
- package/src/core/bootstrap/bundle.ts +101 -0
- package/src/core/bootstrap/providers/ApiServiceProvider.ts +4 -4
- package/src/core/bootstrap/providers/CoreServiceProvider.ts +14 -8
- package/src/core/bootstrap/providers/HelperServiceProvider.ts +8 -3
- package/src/core/bootstrap/providers/RouteServiceProvider.ts +15 -4
- package/src/core/bootstrap/providers/ServiceProvider.ts +8 -8
- package/src/core/bootstrap/providers/ViewServiceProvider.ts +3 -3
- package/src/core/bootstrap/providers/default-providers.ts +51 -16
- package/src/core/bootstrap/providers/index.ts +9 -9
- package/src/core/bootstrap/providers/provider-order.test.ts +16 -27
- package/src/core/bootstrap/providers/provider-order.ts +1 -1
- package/src/core/bootstrap/ssr.ts +136 -0
- package/src/core/cache/ViewCache.ts +1 -1
- package/src/core/cache/index.ts +1 -1
- package/src/core/contracts/ApplicationInterface.ts +13 -11
- package/src/core/contracts/BlockInterface.ts +18 -18
- package/src/core/contracts/BundleInterface.ts +40 -0
- package/src/core/contracts/ComponentInterface.ts +7 -6
- package/src/core/contracts/ElementInterface.ts +95 -27
- package/src/core/contracts/HeadServiceInterface.ts +41 -0
- package/src/core/contracts/HelperInterface.ts +9 -1
- package/src/core/contracts/HttpServiceInterface.ts +3 -0
- package/src/core/contracts/MarkerInterface.ts +22 -49
- package/src/core/contracts/ReactiveInterface.ts +9 -9
- package/src/core/contracts/RouterInterface.ts +5 -2
- package/src/core/contracts/SectionInterface.ts +49 -0
- package/src/core/contracts/ServiceProviderInterface.ts +3 -3
- package/src/core/contracts/ViewControllerInterface.ts +124 -16
- package/src/core/contracts/ViewInterface.ts +34 -5
- package/src/core/contracts/ViewManagerInterface.ts +40 -5
- package/src/core/contracts/ViewStateInterface.ts +39 -2
- package/src/core/contracts/common.ts +3 -3
- package/src/core/contracts/utils.ts +19 -19
- package/src/core/contracts/views.ts +2 -22
- package/src/core/devtools/hook.ts +142 -0
- package/src/core/devtools/index.ts +38 -0
- package/src/core/devtools/inspector.ts +270 -0
- package/src/core/elements/Block.ts +43 -21
- package/src/core/elements/BlockOutlet.ts +61 -21
- package/src/core/elements/Component.ts +352 -18
- package/src/core/elements/ElementManager.ts +9 -9
- package/src/core/elements/ForeachSlotCache.ts +170 -0
- package/src/core/elements/Fragment.ts +50 -32
- package/src/core/elements/Html.ts +696 -117
- package/src/core/elements/Output.ts +147 -30
- package/src/core/elements/Reactive.ts +329 -52
- package/src/core/elements/TextElement.ts +25 -16
- package/src/core/elements/Wrapper.ts +84 -18
- package/src/core/elements/Yield.ts +35 -24
- package/src/core/elements/helpers.ts +12 -12
- package/src/core/elements/index.ts +25 -24
- package/src/core/elements/reconcileChildren.ts +70 -0
- package/src/core/{hellpers → helpers}/ApiClient.ts +8 -1
- package/src/core/{hellpers → helpers}/app.ts +13 -2
- package/src/core/helpers/transition.ts +127 -0
- package/src/core/{hellpers → helpers}/utils.ts +4 -4
- package/src/core/helpers/view.ts +283 -0
- package/src/core/routers/Router.ts +458 -64
- package/src/core/routers/index.ts +2 -2
- package/src/core/services/AssetManager.ts +387 -0
- package/src/core/services/BlockManager.ts +272 -50
- package/src/core/services/DomService.ts +3 -3
- package/src/core/services/HeadService.ts +124 -0
- package/src/core/services/HelperService.ts +34 -4
- package/src/core/services/HttpService.ts +116 -55
- package/src/core/services/MarkerRegistry.ts +142 -16
- package/src/core/services/PageCache.ts +239 -0
- package/src/core/services/SectionManager.ts +387 -0
- package/src/core/services/StorageService.ts +1 -1
- package/src/core/services/TranslationService.ts +91 -0
- package/src/core/services/index.ts +11 -8
- package/src/core/types/utils.ts +8 -8
- package/src/core/view/LoopContext.ts +38 -1
- package/src/core/view/ResourceScope.ts +174 -0
- package/src/core/view/Section.ts +21 -68
- package/src/core/view/View.ts +57 -8
- package/src/core/view/ViewController.ts +1070 -186
- package/src/core/view/ViewManager.ts +1346 -272
- package/src/core/view/ViewState.ts +834 -116
- package/src/core/view/index.ts +5 -5
- package/src/testing/index.ts +184 -0
- package/dist/src/core/services/MarkerService.d.ts +0 -299
- package/dist/src/core/services/MarkerService.d.ts.map +0 -1
- package/dist/src/core/services/MarkerService.js +0 -723
- package/dist/src/core/services/MarkerService.js.map +0 -1
- package/src/core/services/MarkerService.ts +0 -923
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BlockInterface, BlockManagerInterface, BlockOutletInterface } from "../contracts/BlockInterface";
|
|
1
|
+
import type { BlockInterface, BlockManagerInterface, BlockOutletInterface } from "../contracts/BlockInterface.js";
|
|
2
2
|
/**
|
|
3
3
|
* BlockManager — manages all block slots in a layout view.
|
|
4
4
|
*
|
|
@@ -39,16 +39,87 @@ export declare class BlockManagerService implements BlockManagerInterface {
|
|
|
39
39
|
* viewId:blockName), and inserts block content between outlet markers.
|
|
40
40
|
*/
|
|
41
41
|
mountAll(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Mount only blocks owned by one Page/Layout controller. Nested layout
|
|
44
|
+
* chains call this from outer to inner, so an inner outlet exists before
|
|
45
|
+
* the next owner is mounted and retained layouts are not rebuilt.
|
|
46
|
+
*/
|
|
47
|
+
mountViewBlocks(viewId: string): void;
|
|
48
|
+
/** Hydration counterpart of mountViewBlocks(). */
|
|
49
|
+
hydrateViewBlocks(viewId: string): void;
|
|
42
50
|
/**
|
|
43
51
|
* Mount a single block's content into an outlet.
|
|
44
|
-
*
|
|
52
|
+
* Clear nội dung cũ trước, render content mới GIỮA outlet markers
|
|
53
|
+
* (cùng insertion model với Reactive — RUNTIME_CONTRACT.md §2).
|
|
45
54
|
*/
|
|
46
55
|
private mountBlockIntoOutlet;
|
|
56
|
+
/**
|
|
57
|
+
* Hydrate version của mountAll — dùng khi SSR.
|
|
58
|
+
* KHÁC mountAll: KHÔNG clearOutlet (giữ DOM server), KHÔNG insertBefore.
|
|
59
|
+
* Chạy block factory ở HYDRATE mode → Html/Output/Reactive con CLAIM
|
|
60
|
+
* DOM server đã render sẵn giữa cặp marker của outlet.
|
|
61
|
+
*
|
|
62
|
+
* Tiền đề: page ctrl.initMode === HYDRATE khi gọi (để this.html() trong
|
|
63
|
+
* factory tạo element claim DOM thay vì tạo mới).
|
|
64
|
+
*/
|
|
65
|
+
mountAllHydrate(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Claim block content vào outlet (hydrate). Chạy factory, gọi render() đệ quy
|
|
68
|
+
* trên children để claim DOM, KHÔNG chèn node mới. Track children cho lifecycle.
|
|
69
|
+
*/
|
|
70
|
+
private hydrateBlockIntoOutlet;
|
|
71
|
+
/** Tìm outlet theo tên (outlet key = `${layoutViewId}-ob-${name}`) */
|
|
72
|
+
private findOutletByName;
|
|
73
|
+
/**
|
|
74
|
+
* Detach block content của một page (rời trang, vào PageCache):
|
|
75
|
+
* gỡ DOM giữa markers của từng outlet vào DocumentFragment, lấy children
|
|
76
|
+
* đang track ra khỏi manager (KHÔNG destroy — instance sống trong cache).
|
|
77
|
+
*
|
|
78
|
+
* Trả Map<outletName, {fragment, children}> để restore sau này.
|
|
79
|
+
*/
|
|
80
|
+
detachPageContent(viewId: string): Map<string, {
|
|
81
|
+
fragment: DocumentFragment;
|
|
82
|
+
children: any[];
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Restore block content của một page từ PageCache vào outlets hiện tại.
|
|
86
|
+
* Tiền đề: layout đang mount trùng với layout lúc detach (ViewManager guard).
|
|
87
|
+
*/
|
|
88
|
+
restorePageContent(viewId: string, contents: Map<string, {
|
|
89
|
+
fragment: DocumentFragment;
|
|
90
|
+
children: any[];
|
|
91
|
+
}>): void;
|
|
92
|
+
/** Start toàn bộ block content đang mounted (gọi sau mountAll) */
|
|
93
|
+
startAll(): void;
|
|
94
|
+
/** Stop toàn bộ block content (trước khi swap page) */
|
|
95
|
+
stopAll(): void;
|
|
96
|
+
/**
|
|
97
|
+
* Gỡ mọi dấu vết của một view (page bị destroy):
|
|
98
|
+
* clear outlet đang chứa content của nó + xoá block đăng ký.
|
|
99
|
+
*/
|
|
100
|
+
unmountView(viewId: string): void;
|
|
101
|
+
/**
|
|
102
|
+
* Gỡ outlets của một layout khỏi registry mà KHÔNG destroy — layout pause
|
|
103
|
+
* vào PageCache. Nếu để lại, mountAll/findOutletByName có thể đụng outlet
|
|
104
|
+
* (trùng tên) của layout đang detached. Re-register khi resume qua
|
|
105
|
+
* addOutlet (ViewManager.reregisterLayoutOutlets).
|
|
106
|
+
*/
|
|
107
|
+
detachOutletsOfView(viewId: string): void;
|
|
108
|
+
/**
|
|
109
|
+
* Gỡ outlets của một layout bị destroy — XOÁ THẬT, khác hẳn
|
|
110
|
+
* `detachOutletsOfView` ở ngay trên (layout chỉ pause vào PageCache và sẽ
|
|
111
|
+
* được re-register, nên KHÔNG được destroy ở đó).
|
|
112
|
+
* `destroy()` idempotent nên gọi ở đây an toàn kể cả khi teardown cây
|
|
113
|
+
* element đã destroy outlet trước đó.
|
|
114
|
+
*/
|
|
115
|
+
removeOutletsOfView(viewId: string): void;
|
|
47
116
|
/**
|
|
48
117
|
* Clear content from a specific outlet (for page swap).
|
|
49
118
|
* Removes all DOM nodes between a named outlet's markers.
|
|
50
119
|
*/
|
|
51
120
|
clearOutlet(name: string): void;
|
|
121
|
+
private outletKey;
|
|
122
|
+
private clearOutletInstance;
|
|
52
123
|
/**
|
|
53
124
|
* Clear all outlets (for full layout teardown).
|
|
54
125
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockManager.d.ts","sourceRoot":"","sources":["../../../../src/core/services/BlockManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,oBAAoB,EAAsB,MAAM,
|
|
1
|
+
{"version":3,"file":"BlockManager.d.ts","sourceRoot":"","sources":["../../../../src/core/services/BlockManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,oBAAoB,EAAsB,MAAM,gCAAgC,CAAC;AAKtI;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,mBAAoB,YAAW,qBAAqB;IAC7D,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IAChD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAC5D,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IACtD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC,EAAE,CAAC,CAAa;IAExE,2DAA2D;IAC3D,OAAO,CAAC,eAAe,CAAiC;;IAIxD,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAQhC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAY1C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAQ9E,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI;IAe3E,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAM1D,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIxD;;;;;;OAMG;IACH,QAAQ,IAAI,IAAI;IAYhB;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUrC,kDAAkD;IAClD,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUvC;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAyD5B;;;;;;;;OAQG;IACH,eAAe,IAAI,IAAI;IAUvB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAyB9B,sEAAsE;IACtE,OAAO,CAAC,gBAAgB;IASxB;;;;;;OAMG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAyB/F;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI;IAehH,kEAAkE;IAClE,QAAQ,IAAI,IAAI;IAQhB,uDAAuD;IACvD,OAAO,IAAI,IAAI;IAQf;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAoBjC;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQzC;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUzC;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,eAAe,IAAI,IAAI;IAMvB;;OAEG;IACH,OAAO,IAAI,IAAI;CAQlB;AAED,eAAO,MAAM,YAAY,qBAA4B,CAAC;AACtD,eAAe,YAAY,CAAC"}
|
|
@@ -83,95 +83,317 @@ export class BlockManagerService {
|
|
|
83
83
|
* viewId:blockName), and inserts block content between outlet markers.
|
|
84
84
|
*/
|
|
85
85
|
mountAll() {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
86
|
+
// Mount block content vào outlet cùng tên; outlet không có block active → clear về rỗng
|
|
87
|
+
for (const [, outlet] of this.blockOutlets) {
|
|
88
|
+
const block = this.activeBlocks.get(outlet.name);
|
|
89
|
+
if (block && block.contentRenderFactory) {
|
|
90
|
+
this.mountBlockIntoOutlet(block, outlet);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.clearOutletInstance(outlet);
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Mount only blocks owned by one Page/Layout controller. Nested layout
|
|
99
|
+
* chains call this from outer to inner, so an inner outlet exists before
|
|
100
|
+
* the next owner is mounted and retained layouts are not rebuilt.
|
|
101
|
+
*/
|
|
102
|
+
mountViewBlocks(viewId) {
|
|
103
|
+
for (const [, block] of this.blocks) {
|
|
104
|
+
if (block.viewId !== viewId || !block.contentRenderFactory)
|
|
105
|
+
continue;
|
|
106
|
+
const outlet = this.findOutletByName(block.name);
|
|
107
|
+
if (!outlet)
|
|
108
|
+
continue;
|
|
109
|
+
this.activeBlocks.set(block.name, block);
|
|
110
|
+
this.mountBlockIntoOutlet(block, outlet);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** Hydration counterpart of mountViewBlocks(). */
|
|
114
|
+
hydrateViewBlocks(viewId) {
|
|
115
|
+
for (const [, block] of this.blocks) {
|
|
116
|
+
if (block.viewId !== viewId || !block.contentRenderFactory)
|
|
117
|
+
continue;
|
|
118
|
+
const outlet = this.findOutletByName(block.name);
|
|
119
|
+
if (!outlet)
|
|
120
|
+
continue;
|
|
121
|
+
this.activeBlocks.set(block.name, block);
|
|
122
|
+
this.hydrateBlockIntoOutlet(block, outlet);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
98
125
|
/**
|
|
99
126
|
* Mount a single block's content into an outlet.
|
|
100
|
-
*
|
|
127
|
+
* Clear nội dung cũ trước, render content mới GIỮA outlet markers
|
|
128
|
+
* (cùng insertion model với Reactive — RUNTIME_CONTRACT.md §2).
|
|
101
129
|
*/
|
|
102
130
|
mountBlockIntoOutlet(block, outlet) {
|
|
103
|
-
if (!outlet.
|
|
104
|
-
return;
|
|
105
|
-
|
|
131
|
+
if (!outlet.openTag.parentNode)
|
|
132
|
+
return; // outlet chưa nằm trong DOM
|
|
133
|
+
// Clear nội dung cũ (page trước) trước khi mount page mới
|
|
134
|
+
this.clearOutletInstance(outlet);
|
|
106
135
|
const children = [];
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
136
|
+
const insertBeforeClose = (node) => {
|
|
137
|
+
outlet.closeTag.parentNode?.insertBefore(node, outlet.closeTag);
|
|
138
|
+
};
|
|
139
|
+
// Render block content using the factory — elements thuộc về PAGE ctrl
|
|
140
|
+
const content = block.contentRenderFactory(outlet.parentElement);
|
|
141
|
+
// Marker `s:b:` của chính block phải bao quanh content — Blade emit cặp này
|
|
142
|
+
// trong @block (ViewStorageManager::getMarkerOpenTag), nên thiếu nó ở đây là
|
|
143
|
+
// DOM sau SPA nav khác DOM từ server: hydrate lần sau không tìm ra block để
|
|
144
|
+
// claim, và cổng tests/e2e/ssr-csr-parity thấy marker lệch một phía.
|
|
145
|
+
// Block dựng sẵn openTag/closeTag trong constructor; chỗ chèn là ở đây, cùng
|
|
146
|
+
// insertion model với content (RUNTIME_CONTRACT.md §2).
|
|
147
|
+
insertBeforeClose(block.openTag);
|
|
148
|
+
// Content không phải mảng vẫn phải đóng marker — block rỗng ở server là cặp
|
|
149
|
+
// marker liền nhau, không phải không có marker.
|
|
150
|
+
for (const child of Array.isArray(content) ? content : []) {
|
|
151
|
+
if (child === null || child === undefined)
|
|
152
|
+
continue;
|
|
113
153
|
if (typeof child === 'string' || typeof child === 'number') {
|
|
114
|
-
|
|
115
|
-
parentEl.insertBefore(textNode, outlet.closeTag);
|
|
154
|
+
insertBeforeClose(document.createTextNode(String(child)));
|
|
116
155
|
}
|
|
117
|
-
else if (child
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
156
|
+
else if (child instanceof Node) {
|
|
157
|
+
insertBeforeClose(child);
|
|
158
|
+
}
|
|
159
|
+
else if (typeof child === 'object') {
|
|
160
|
+
if ('element' in child && child.element) {
|
|
161
|
+
insertBeforeClose(child.element);
|
|
121
162
|
children.push(child);
|
|
122
163
|
child.render();
|
|
123
164
|
}
|
|
124
165
|
else if ('openTag' in child) {
|
|
125
|
-
//
|
|
166
|
+
// Marker-based: đặt markers đúng vị trí trước, render sau (idempotent)
|
|
126
167
|
if ('parent' in child) {
|
|
127
168
|
child.parent = outlet.parentElement;
|
|
128
169
|
}
|
|
129
170
|
if ('parentElement' in child) {
|
|
130
171
|
child.parentElement = outlet.parentElement;
|
|
131
172
|
}
|
|
173
|
+
insertBeforeClose(child.openTag);
|
|
174
|
+
insertBeforeClose(child.closeTag);
|
|
132
175
|
children.push(child);
|
|
133
176
|
child.render();
|
|
134
177
|
}
|
|
135
178
|
}
|
|
136
179
|
}
|
|
137
|
-
|
|
138
|
-
|
|
180
|
+
insertBeforeClose(block.closeTag);
|
|
181
|
+
// Track mounted children for lifecycle (start/stop/destroy)
|
|
182
|
+
this.mountedChildren.set(this.outletKey(outlet), children);
|
|
139
183
|
}
|
|
140
184
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
185
|
+
* Hydrate version của mountAll — dùng khi SSR.
|
|
186
|
+
* KHÁC mountAll: KHÔNG clearOutlet (giữ DOM server), KHÔNG insertBefore.
|
|
187
|
+
* Chạy block factory ở HYDRATE mode → Html/Output/Reactive con CLAIM
|
|
188
|
+
* DOM server đã render sẵn giữa cặp marker của outlet.
|
|
189
|
+
*
|
|
190
|
+
* Tiền đề: page ctrl.initMode === HYDRATE khi gọi (để this.html() trong
|
|
191
|
+
* factory tạo element claim DOM thay vì tạo mới).
|
|
143
192
|
*/
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
193
|
+
mountAllHydrate() {
|
|
194
|
+
for (const [, outlet] of this.blockOutlets) {
|
|
195
|
+
const block = this.activeBlocks.get(outlet.name);
|
|
196
|
+
if (block && block.contentRenderFactory) {
|
|
197
|
+
this.hydrateBlockIntoOutlet(block, outlet);
|
|
198
|
+
}
|
|
199
|
+
// outlet không có block active → để nguyên DOM server (thường rỗng)
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Claim block content vào outlet (hydrate). Chạy factory, gọi render() đệ quy
|
|
204
|
+
* trên children để claim DOM, KHÔNG chèn node mới. Track children cho lifecycle.
|
|
205
|
+
*/
|
|
206
|
+
hydrateBlockIntoOutlet(block, outlet) {
|
|
207
|
+
const children = [];
|
|
208
|
+
const content = block.contentRenderFactory(outlet.parentElement);
|
|
209
|
+
if (!Array.isArray(content))
|
|
210
|
+
return;
|
|
211
|
+
for (const child of content) {
|
|
212
|
+
if (child === null || child === undefined)
|
|
213
|
+
continue;
|
|
214
|
+
if (typeof child === 'string' || typeof child === 'number')
|
|
215
|
+
continue; // text: giữ server
|
|
216
|
+
if (child instanceof Node)
|
|
217
|
+
continue;
|
|
218
|
+
if (typeof child === 'object') {
|
|
219
|
+
if ('element' in child && child.element) {
|
|
220
|
+
children.push(child);
|
|
221
|
+
child.render(); // HYDRATE: Html claim DOM, không chèn
|
|
222
|
+
}
|
|
223
|
+
else if ('openTag' in child) {
|
|
224
|
+
if ('parent' in child)
|
|
225
|
+
child.parent = outlet.parentElement;
|
|
226
|
+
if ('parentElement' in child)
|
|
227
|
+
child.parentElement = outlet.parentElement;
|
|
228
|
+
children.push(child);
|
|
229
|
+
child.render(); // HYDRATE: Output/Reactive claim markers
|
|
157
230
|
}
|
|
158
|
-
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
this.mountedChildren.set(this.outletKey(outlet), children);
|
|
234
|
+
}
|
|
235
|
+
/** Tìm outlet theo tên (outlet key = `${layoutViewId}-ob-${name}`) */
|
|
236
|
+
findOutletByName(name) {
|
|
237
|
+
let found = null;
|
|
238
|
+
for (const [, outlet] of this.blockOutlets) {
|
|
239
|
+
if (outlet.name === name)
|
|
240
|
+
found = outlet;
|
|
241
|
+
}
|
|
242
|
+
// Nearest/deepest outlet is registered last while mounting a nested chain.
|
|
243
|
+
return found;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Detach block content của một page (rời trang, vào PageCache):
|
|
247
|
+
* gỡ DOM giữa markers của từng outlet vào DocumentFragment, lấy children
|
|
248
|
+
* đang track ra khỏi manager (KHÔNG destroy — instance sống trong cache).
|
|
249
|
+
*
|
|
250
|
+
* Trả Map<outletName, {fragment, children}> để restore sau này.
|
|
251
|
+
*/
|
|
252
|
+
detachPageContent(viewId) {
|
|
253
|
+
const result = new Map();
|
|
254
|
+
for (const [name, block] of Array.from(this.activeBlocks)) {
|
|
255
|
+
if (block.viewId !== viewId)
|
|
256
|
+
continue;
|
|
257
|
+
const fragment = document.createDocumentFragment();
|
|
258
|
+
const outlet = this.findOutletByName(name);
|
|
259
|
+
if (outlet && outlet.openTag.parentNode) {
|
|
159
260
|
let current = outlet.openTag.nextSibling;
|
|
160
261
|
while (current && current !== outlet.closeTag) {
|
|
161
262
|
const next = current.nextSibling;
|
|
162
|
-
|
|
263
|
+
fragment.appendChild(current); // appendChild tự remove khỏi DOM
|
|
163
264
|
current = next;
|
|
164
265
|
}
|
|
165
|
-
break;
|
|
166
266
|
}
|
|
267
|
+
const outletKey = outlet ? this.outletKey(outlet) : name;
|
|
268
|
+
const children = this.mountedChildren.get(outletKey) ?? [];
|
|
269
|
+
this.mountedChildren.delete(outletKey);
|
|
270
|
+
this.activeBlocks.delete(name); // page rời đi — không còn active ở outlet này
|
|
271
|
+
result.set(name, { fragment, children });
|
|
272
|
+
}
|
|
273
|
+
return result;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Restore block content của một page từ PageCache vào outlets hiện tại.
|
|
277
|
+
* Tiền đề: layout đang mount trùng với layout lúc detach (ViewManager guard).
|
|
278
|
+
*/
|
|
279
|
+
restorePageContent(viewId, contents) {
|
|
280
|
+
for (const [name, { fragment, children }] of contents) {
|
|
281
|
+
const outlet = this.findOutletByName(name);
|
|
282
|
+
if (outlet && outlet.closeTag.parentNode) {
|
|
283
|
+
outlet.closeTag.parentNode.insertBefore(fragment, outlet.closeTag);
|
|
284
|
+
}
|
|
285
|
+
if (outlet)
|
|
286
|
+
this.mountedChildren.set(this.outletKey(outlet), children);
|
|
287
|
+
// Re-activate block của page này (blocks map còn giữ — pause không xoá)
|
|
288
|
+
const block = this.blocks.get(name + viewId);
|
|
289
|
+
if (block) {
|
|
290
|
+
this.activeBlocks.set(name, block);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/** Start toàn bộ block content đang mounted (gọi sau mountAll) */
|
|
295
|
+
startAll() {
|
|
296
|
+
for (const [, children] of this.mountedChildren) {
|
|
297
|
+
for (const child of children) {
|
|
298
|
+
if (child && typeof child.start === 'function')
|
|
299
|
+
child.start();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/** Stop toàn bộ block content (trước khi swap page) */
|
|
304
|
+
stopAll() {
|
|
305
|
+
for (const [, children] of this.mountedChildren) {
|
|
306
|
+
for (const child of children) {
|
|
307
|
+
if (child && typeof child.stop === 'function')
|
|
308
|
+
child.stop();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Gỡ mọi dấu vết của một view (page bị destroy):
|
|
314
|
+
* clear outlet đang chứa content của nó + xoá block đăng ký.
|
|
315
|
+
*/
|
|
316
|
+
unmountView(viewId) {
|
|
317
|
+
for (const [name, block] of this.activeBlocks) {
|
|
318
|
+
if (block.viewId === viewId) {
|
|
319
|
+
this.clearOutlet(name);
|
|
320
|
+
this.activeBlocks.delete(name);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
for (const [key, block] of this.blocks) {
|
|
324
|
+
if (block.viewId === viewId) {
|
|
325
|
+
// destroy TRƯỚC khi rời Map. Block KHÔNG nằm trong ctrl.elements
|
|
326
|
+
// nên teardown cây element không bao giờ chạm tới nó — đây là chỗ
|
|
327
|
+
// DUY NHẤT gỡ được record marker toàn cục của nó. Thiếu dòng này
|
|
328
|
+
// thì MarkerRegistry (singleton, sống qua navigate) tăng đúng 1
|
|
329
|
+
// record mỗi lần điều hướng, vĩnh viễn.
|
|
330
|
+
block.destroy?.();
|
|
331
|
+
this.blocks.delete(key);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Gỡ outlets của một layout khỏi registry mà KHÔNG destroy — layout pause
|
|
337
|
+
* vào PageCache. Nếu để lại, mountAll/findOutletByName có thể đụng outlet
|
|
338
|
+
* (trùng tên) của layout đang detached. Re-register khi resume qua
|
|
339
|
+
* addOutlet (ViewManager.reregisterLayoutOutlets).
|
|
340
|
+
*/
|
|
341
|
+
detachOutletsOfView(viewId) {
|
|
342
|
+
for (const [key, outlet] of this.blockOutlets) {
|
|
343
|
+
if (outlet.ctx?.viewId === viewId) {
|
|
344
|
+
this.blockOutlets.delete(key);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Gỡ outlets của một layout bị destroy — XOÁ THẬT, khác hẳn
|
|
350
|
+
* `detachOutletsOfView` ở ngay trên (layout chỉ pause vào PageCache và sẽ
|
|
351
|
+
* được re-register, nên KHÔNG được destroy ở đó).
|
|
352
|
+
* `destroy()` idempotent nên gọi ở đây an toàn kể cả khi teardown cây
|
|
353
|
+
* element đã destroy outlet trước đó.
|
|
354
|
+
*/
|
|
355
|
+
removeOutletsOfView(viewId) {
|
|
356
|
+
for (const [key, outlet] of this.blockOutlets) {
|
|
357
|
+
if (outlet.ctx?.viewId === viewId) {
|
|
358
|
+
this.mountedChildren.delete(this.outletKey(outlet));
|
|
359
|
+
outlet.destroy?.();
|
|
360
|
+
this.blockOutlets.delete(key);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Clear content from a specific outlet (for page swap).
|
|
366
|
+
* Removes all DOM nodes between a named outlet's markers.
|
|
367
|
+
*/
|
|
368
|
+
clearOutlet(name) {
|
|
369
|
+
const outlet = this.findOutletByName(name);
|
|
370
|
+
if (outlet)
|
|
371
|
+
this.clearOutletInstance(outlet);
|
|
372
|
+
}
|
|
373
|
+
outletKey(outlet) {
|
|
374
|
+
return String(outlet.id ?? `${outlet.ctx?.viewId ?? ''}:${outlet.name}`);
|
|
375
|
+
}
|
|
376
|
+
clearOutletInstance(outlet) {
|
|
377
|
+
const key = this.outletKey(outlet);
|
|
378
|
+
const children = this.mountedChildren.get(key) ?? [];
|
|
379
|
+
for (const child of children) {
|
|
380
|
+
if ('destroy' in child && typeof child.destroy === 'function')
|
|
381
|
+
child.destroy();
|
|
382
|
+
}
|
|
383
|
+
this.mountedChildren.delete(key);
|
|
384
|
+
let current = outlet.openTag.nextSibling;
|
|
385
|
+
while (current && current !== outlet.closeTag) {
|
|
386
|
+
const next = current.nextSibling;
|
|
387
|
+
current.remove();
|
|
388
|
+
current = next;
|
|
167
389
|
}
|
|
168
390
|
}
|
|
169
391
|
/**
|
|
170
392
|
* Clear all outlets (for full layout teardown).
|
|
171
393
|
*/
|
|
172
394
|
clearAllOutlets() {
|
|
173
|
-
for (const [
|
|
174
|
-
this.
|
|
395
|
+
for (const [, outlet] of this.blockOutlets) {
|
|
396
|
+
this.clearOutletInstance(outlet);
|
|
175
397
|
}
|
|
176
398
|
}
|
|
177
399
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockManager.js","sourceRoot":"","sources":["../../../../src/core/services/BlockManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BlockManager.js","sourceRoot":"","sources":["../../../../src/core/services/BlockManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { app } from "../
|
|
1
|
+
import { app } from "../helpers/app.js";
|
|
2
2
|
export class DomService {
|
|
3
3
|
constructor() {
|
|
4
4
|
this.container = document.createElement('template');
|
|
5
5
|
}
|
|
6
6
|
parse(html) {
|
|
7
7
|
this.container.innerHTML = html;
|
|
8
|
-
const
|
|
8
|
+
const nodes = Array.from(this.container.content.childNodes);
|
|
9
9
|
this.container.innerHTML = ''; // Clear template content to free memory
|
|
10
|
-
return
|
|
10
|
+
return nodes;
|
|
11
11
|
}
|
|
12
12
|
create(tagName, options) {
|
|
13
13
|
return document.createElement(tagName, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DomService.js","sourceRoot":"","sources":["../../../../src/core/services/DomService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"DomService.js","sourceRoot":"","sources":["../../../../src/core/services/DomService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,MAAM,OAAO,UAAU;IAEnB;QACI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,IAAY;QACd,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,wCAAwC;QACvE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,OAAe,EAAE,OAAgC;QACpD,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CAGJ;AAID,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;AACnC,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { HeadLinkOptions, HeadServiceInterface, HeadTagOptions } from "../contracts/HeadServiceInterface.js";
|
|
2
|
+
/**
|
|
3
|
+
* HeadService — the single place that writes to `<head>` (title, meta, link,
|
|
4
|
+
* JSON-LD). Independent of any View: callable from anywhere via `app('Head')`
|
|
5
|
+
* / `App.Head`. Reuses whatever the server already rendered there (SSR's
|
|
6
|
+
* `<title>`, `<meta name="description">`, ...) instead of creating
|
|
7
|
+
* duplicates, and snapshots the pre-managed value so `resetPage()` can put it
|
|
8
|
+
* back — the fix for tags leaking from one SPA-navigated page into the next.
|
|
9
|
+
*/
|
|
10
|
+
export declare class HeadServiceImpl implements HeadServiceInterface {
|
|
11
|
+
private managed;
|
|
12
|
+
setTitle(title: string, options?: HeadTagOptions): void;
|
|
13
|
+
setMeta(name: string, content: string, options?: HeadTagOptions): void;
|
|
14
|
+
setMetaProperty(property: string, content: string, options?: HeadTagOptions): void;
|
|
15
|
+
setLink(rel: string, href: string, options?: HeadLinkOptions): void;
|
|
16
|
+
setJsonLd(id: string, data: Record<string, any>, options?: HeadTagOptions): void;
|
|
17
|
+
unset(key: string): void;
|
|
18
|
+
resetPage(): void;
|
|
19
|
+
/** Find-or-create an element by `identAttrs`, snapshot `valueAttr` once, then apply the new value. */
|
|
20
|
+
private setAttrTag;
|
|
21
|
+
}
|
|
22
|
+
export declare const HeadService: HeadServiceImpl;
|
|
23
|
+
export default HeadService;
|
|
24
|
+
//# sourceMappingURL=HeadService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeadService.d.ts","sourceRoot":"","sources":["../../../../src/core/services/HeadService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAgB,MAAM,sCAAsC,CAAC;AAQhI;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,oBAAoB;IACxD,OAAO,CAAC,OAAO,CAA4C;IAE3D,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,IAAI;IAa3D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,IAAI;IAI1E,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,IAAI;IAItF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI;IAMvE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,IAAI;IA6BpF,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOxB,SAAS,IAAI,IAAI;IAQjB,sGAAsG;IACtG,OAAO,CAAC,UAAU;CA6BrB;AAED,eAAO,MAAM,WAAW,iBAAwB,CAAC;AACjD,eAAe,WAAW,CAAC"}
|