@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
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/** Commit initial data; hydration discards pending notifications before subscribe. */
|
|
2
|
+
export function commitView(ctrl, discardPending = false) {
|
|
3
|
+
ctrl.commitData();
|
|
4
|
+
if (discardPending)
|
|
5
|
+
ctrl.states.__.flushNow();
|
|
6
|
+
}
|
|
7
|
+
/** Flush state + reactive queues after a lifecycle transition. */
|
|
8
|
+
export function flushView(ctrl) {
|
|
9
|
+
ctrl.states.__.flushNow();
|
|
10
|
+
ctrl.flushReactiveUpdatesNow();
|
|
11
|
+
}
|
|
12
|
+
/** Start a view through its controller, then make the initial DOM snapshot current. */
|
|
13
|
+
export function activateView(ctrl) {
|
|
14
|
+
ctrl.start();
|
|
15
|
+
flushView(ctrl);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Claim an already-rendered Wrapper tree without inserting or clearing DOM.
|
|
19
|
+
* Used by both route hydration and nested @include hydration.
|
|
20
|
+
*/
|
|
21
|
+
export function claimHydratedView(ctrl, root, wrapper = ctrl.mainElement) {
|
|
22
|
+
ctrl.setParentElement(root);
|
|
23
|
+
if (!wrapper)
|
|
24
|
+
return;
|
|
25
|
+
wrapper.setParentElement(root);
|
|
26
|
+
const children = wrapper.render();
|
|
27
|
+
if (children && children.length > 0)
|
|
28
|
+
hydrateElementList(root, children);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Mount danh sách children vào TRƯỚC một anchor node (RUNTIME_CONTRACT.md §2 —
|
|
32
|
+
* insertion point tường minh). Dùng cho Component (@include), và mọi chỗ cần
|
|
33
|
+
* mount content vào giữa cặp markers có sẵn.
|
|
34
|
+
*/
|
|
35
|
+
export function mountChildrenBeforeAnchor(anchor, children, parentForSao) {
|
|
36
|
+
const container = anchor.parentNode;
|
|
37
|
+
if (!container || !Array.isArray(children))
|
|
38
|
+
return;
|
|
39
|
+
const insert = (node) => container.insertBefore(node, anchor);
|
|
40
|
+
for (const child of children) {
|
|
41
|
+
if (child === null || child === undefined)
|
|
42
|
+
continue;
|
|
43
|
+
if (typeof child === 'string' || typeof child === 'number') {
|
|
44
|
+
insert(document.createTextNode(String(child)));
|
|
45
|
+
}
|
|
46
|
+
else if (child instanceof Node) {
|
|
47
|
+
insert(child);
|
|
48
|
+
}
|
|
49
|
+
else if (typeof child === 'object') {
|
|
50
|
+
if ('element' in child && child.element) {
|
|
51
|
+
insert(child.element);
|
|
52
|
+
child.render?.();
|
|
53
|
+
}
|
|
54
|
+
else if ('openTag' in child) {
|
|
55
|
+
if ('parent' in child)
|
|
56
|
+
child.parent = parentForSao;
|
|
57
|
+
if ('parentElement' in child)
|
|
58
|
+
child.parentElement = parentForSao;
|
|
59
|
+
insert(child.openTag);
|
|
60
|
+
insert(child.closeTag);
|
|
61
|
+
child.render?.();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Hydrate mode: gọi render() đệ quy trên children để tạo JS objects
|
|
68
|
+
* và claim DOM nodes, nhưng KHÔNG appendChild/insertBefore vào DOM
|
|
69
|
+
* (vì DOM đã có từ server-rendered HTML).
|
|
70
|
+
*
|
|
71
|
+
* Khác mountElementList ở chỗ: bỏ mọi thao tác DOM mutation,
|
|
72
|
+
* chỉ giữ lại phần tạo element tree + gán parent.
|
|
73
|
+
*/
|
|
74
|
+
export function hydrateElementList(root, elements) {
|
|
75
|
+
if (!Array.isArray(elements))
|
|
76
|
+
return;
|
|
77
|
+
for (const element of elements) {
|
|
78
|
+
if (element === null || element === undefined)
|
|
79
|
+
continue;
|
|
80
|
+
if (typeof element === 'string' || typeof element === 'number')
|
|
81
|
+
continue;
|
|
82
|
+
if (element instanceof Node)
|
|
83
|
+
continue;
|
|
84
|
+
if (typeof element === 'object' && 'saoType' in element) {
|
|
85
|
+
const saoEl = element;
|
|
86
|
+
switch (saoEl.saoType) {
|
|
87
|
+
case 'Html': {
|
|
88
|
+
const html = saoEl;
|
|
89
|
+
html.render();
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case 'TextElement':
|
|
93
|
+
break;
|
|
94
|
+
case 'Output':
|
|
95
|
+
case 'Reactive':
|
|
96
|
+
case 'Fragment':
|
|
97
|
+
case 'BlockOutlet':
|
|
98
|
+
case 'Block':
|
|
99
|
+
case 'Component':
|
|
100
|
+
case 'Yield': {
|
|
101
|
+
const saoNode = saoEl;
|
|
102
|
+
if (typeof saoNode.setParentElement === 'function') {
|
|
103
|
+
saoNode.setParentElement(root);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
if ('parent' in saoNode)
|
|
107
|
+
saoNode.parent = root;
|
|
108
|
+
if ('parentElement' in saoNode)
|
|
109
|
+
saoNode.parentElement = root;
|
|
110
|
+
}
|
|
111
|
+
saoNode.render();
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Mounts a list of SaoNodeInterface elements into a given root HtmlInterface.
|
|
120
|
+
* This function is responsible for appending the DOM nodes of each element
|
|
121
|
+
* to the root's DOM element and returning the list of mounted DOM nodes.
|
|
122
|
+
* @param root - The HtmlInterface to mount the elements into.
|
|
123
|
+
* @param elements - An array of SaoNodeInterface elements to be mounted.
|
|
124
|
+
* @returns An array of the mounted DOM nodes.
|
|
125
|
+
*/
|
|
126
|
+
export function mountElementList(root, elements) {
|
|
127
|
+
const mountedNodes = [];
|
|
128
|
+
if (Array.isArray(elements)) {
|
|
129
|
+
const rootElement = root.getElement();
|
|
130
|
+
elements.forEach((element) => {
|
|
131
|
+
if (typeof element === 'string' || typeof element === 'number') {
|
|
132
|
+
const el = document.createTextNode(element.toString());
|
|
133
|
+
rootElement.appendChild(el);
|
|
134
|
+
mountedNodes.push(el);
|
|
135
|
+
}
|
|
136
|
+
else if (element instanceof Node) {
|
|
137
|
+
// FIX(baseline#2): raw DOM node — append trực tiếp, trước đây bị drop
|
|
138
|
+
rootElement.appendChild(element);
|
|
139
|
+
mountedNodes.push(element);
|
|
140
|
+
}
|
|
141
|
+
else if (typeof element === 'object' && element !== null && 'saoType' in element) {
|
|
142
|
+
const saoEl = element;
|
|
143
|
+
switch (saoEl.saoType) {
|
|
144
|
+
case 'Wrapper':
|
|
145
|
+
const wrapper = saoEl;
|
|
146
|
+
wrapper.appendTo(root);
|
|
147
|
+
mountedNodes.push(wrapper.openTag);
|
|
148
|
+
wrapper.domChildren.forEach((node) => {
|
|
149
|
+
mountedNodes.push(node);
|
|
150
|
+
});
|
|
151
|
+
mountedNodes.push(wrapper.closeTag);
|
|
152
|
+
break;
|
|
153
|
+
case 'Html':
|
|
154
|
+
const html = saoEl;
|
|
155
|
+
const htmlNode = html.render();
|
|
156
|
+
rootElement.appendChild(htmlNode);
|
|
157
|
+
mountedNodes.push(htmlNode);
|
|
158
|
+
break;
|
|
159
|
+
case 'TextElement':
|
|
160
|
+
const textElement = saoEl;
|
|
161
|
+
const textNode = textElement.render();
|
|
162
|
+
rootElement.appendChild(textNode);
|
|
163
|
+
mountedNodes.push(textNode);
|
|
164
|
+
break;
|
|
165
|
+
case 'Reactive':
|
|
166
|
+
case 'Output':
|
|
167
|
+
case 'Fragment':
|
|
168
|
+
case 'BlockOutlet':
|
|
169
|
+
case 'Block':
|
|
170
|
+
case 'Component':
|
|
171
|
+
case 'Yield':
|
|
172
|
+
const saoNode = saoEl;
|
|
173
|
+
if (typeof saoNode.setParentElement === 'function') {
|
|
174
|
+
saoNode.setParentElement(root);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
if ('parent' in saoNode) {
|
|
178
|
+
saoNode.parent = root;
|
|
179
|
+
}
|
|
180
|
+
if ('parentElement' in saoNode) {
|
|
181
|
+
saoNode.parentElement = root;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
saoNode.render();
|
|
185
|
+
if (saoNode.openTag) {
|
|
186
|
+
mountedNodes.push(saoNode.openTag);
|
|
187
|
+
}
|
|
188
|
+
if (saoEl.saoType === 'Fragment' && Array.isArray(saoNode.nodes)) {
|
|
189
|
+
saoNode.nodes.forEach((node) => {
|
|
190
|
+
mountedNodes.push(node);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
if (saoNode.closeTag) {
|
|
194
|
+
mountedNodes.push(saoNode.closeTag);
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
197
|
+
default:
|
|
198
|
+
//
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
return mountedNodes;
|
|
205
|
+
}
|
|
206
|
+
export function mountElementListBefore(root, elements) {
|
|
207
|
+
const mountedNodes = [];
|
|
208
|
+
if (Array.isArray(elements)) {
|
|
209
|
+
const rootElement = root.getElement();
|
|
210
|
+
elements.forEach((element) => {
|
|
211
|
+
if (typeof element === 'string' || typeof element === 'number') {
|
|
212
|
+
const el = document.createTextNode(element.toString());
|
|
213
|
+
rootElement.appendChild(el);
|
|
214
|
+
mountedNodes.push(el);
|
|
215
|
+
}
|
|
216
|
+
else if (element instanceof Node) {
|
|
217
|
+
// FIX(baseline#2): raw DOM node — append trực tiếp, trước đây bị drop
|
|
218
|
+
rootElement.appendChild(element);
|
|
219
|
+
mountedNodes.push(element);
|
|
220
|
+
}
|
|
221
|
+
else if (typeof element === 'object' && element !== null && 'saoType' in element) {
|
|
222
|
+
const saoEl = element;
|
|
223
|
+
switch (saoEl.saoType) {
|
|
224
|
+
case 'Wrapper':
|
|
225
|
+
const wrapper = saoEl;
|
|
226
|
+
wrapper.appendTo(root);
|
|
227
|
+
mountedNodes.push(wrapper.openTag);
|
|
228
|
+
wrapper.domChildren.forEach((node) => {
|
|
229
|
+
mountedNodes.push(node);
|
|
230
|
+
});
|
|
231
|
+
mountedNodes.push(wrapper.closeTag);
|
|
232
|
+
break;
|
|
233
|
+
case 'Html':
|
|
234
|
+
const html = saoEl;
|
|
235
|
+
const htmlNode = html.render();
|
|
236
|
+
rootElement.appendChild(htmlNode);
|
|
237
|
+
mountedNodes.push(htmlNode);
|
|
238
|
+
break;
|
|
239
|
+
case 'TextElement':
|
|
240
|
+
const textElement = saoEl;
|
|
241
|
+
const textNode = textElement.render();
|
|
242
|
+
rootElement.appendChild(textNode);
|
|
243
|
+
mountedNodes.push(textNode);
|
|
244
|
+
break;
|
|
245
|
+
case 'Reactive':
|
|
246
|
+
case 'Output':
|
|
247
|
+
case 'Fragment':
|
|
248
|
+
case 'BlockOutlet':
|
|
249
|
+
case 'Block':
|
|
250
|
+
case 'Component':
|
|
251
|
+
case 'Yield':
|
|
252
|
+
const saoNode = saoEl;
|
|
253
|
+
if (typeof saoNode.setParentElement === 'function') {
|
|
254
|
+
saoNode.setParentElement(root);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
if ('parent' in saoNode) {
|
|
258
|
+
saoNode.parent = root;
|
|
259
|
+
}
|
|
260
|
+
if ('parentElement' in saoNode) {
|
|
261
|
+
saoNode.parentElement = root;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
saoNode.render();
|
|
265
|
+
if (saoNode.openTag) {
|
|
266
|
+
mountedNodes.push(saoNode.openTag);
|
|
267
|
+
}
|
|
268
|
+
if (saoEl.saoType === 'Fragment' && Array.isArray(saoNode.nodes)) {
|
|
269
|
+
saoNode.nodes.forEach((node) => {
|
|
270
|
+
mountedNodes.push(node);
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
if (saoNode.closeTag) {
|
|
274
|
+
mountedNodes.push(saoNode.closeTag);
|
|
275
|
+
}
|
|
276
|
+
break;
|
|
277
|
+
default:
|
|
278
|
+
//
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
return mountedNodes;
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../src/core/helpers/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Router — SPA Router cho
|
|
2
|
+
* Router — SPA Router cho SaoView v3.
|
|
3
3
|
*
|
|
4
4
|
* Port từ core/Router nhưng nhẹ hơn (~400 dòng thay vì 960),
|
|
5
5
|
* tích hợp trực tiếp với ViewManager mới.
|
|
@@ -13,18 +13,30 @@
|
|
|
13
13
|
* - Route caching (pattern match + ActiveRoute)
|
|
14
14
|
* - Browser back/forward handling
|
|
15
15
|
*/
|
|
16
|
-
import type { ViewManagerInterface } from "../contracts/ViewManagerInterface";
|
|
16
|
+
import type { ViewManagerInterface } from "../contracts/ViewManagerInterface.js";
|
|
17
17
|
export interface RouteDefinition {
|
|
18
18
|
/** URL pattern: '/users/{id}', '/posts/{page?}' */
|
|
19
19
|
path: string;
|
|
20
20
|
/** View name: 'web.home', 'layouts.main' */
|
|
21
21
|
component?: string;
|
|
22
|
+
/** Worker-stable alias retained by the server route registry. */
|
|
23
|
+
logicalComponent?: string;
|
|
22
24
|
/** @deprecated Use component */
|
|
23
25
|
view?: string;
|
|
24
26
|
/** Named route identifier */
|
|
25
27
|
name?: string;
|
|
26
28
|
/** Route metadata (auth, roles, etc.) */
|
|
27
29
|
meta?: Record<string, any>;
|
|
30
|
+
/**
|
|
31
|
+
* Route con — path nối vào path cha, `meta` kế thừa từ cha (con ghi đè khi
|
|
32
|
+
* trùng key). Chỉ là tầng CẤU HÌNH: bảng route vẫn phẳng sau khi flatten.
|
|
33
|
+
*
|
|
34
|
+
* Việc giữ nguyên view cha khi chuyển giữa các con là do chuỗi layout lo
|
|
35
|
+
* (`@extends` + `@useBlock`) — view con khai báo cha bằng `@extends`, và
|
|
36
|
+
* `ViewManager` tái dùng đúng instance layout đang active thay vì render
|
|
37
|
+
* lại. Xem docs/GAPS_AND_ROADMAP.md §2.17.
|
|
38
|
+
*/
|
|
39
|
+
children?: RouteDefinition[];
|
|
28
40
|
}
|
|
29
41
|
export interface Route {
|
|
30
42
|
path: string;
|
|
@@ -54,10 +66,12 @@ export type AfterNavigationHook = (to: Route, from: ActiveRoute | null) => void;
|
|
|
54
66
|
export declare class ActiveRoute {
|
|
55
67
|
readonly $route: Route;
|
|
56
68
|
readonly $urlPath: string;
|
|
69
|
+
/** Request URI = path + query string (KHÔNG gồm hash) — dùng làm cache key */
|
|
70
|
+
readonly $uri: string;
|
|
57
71
|
readonly $params: Record<string, string>;
|
|
58
72
|
readonly $query: Record<string, string>;
|
|
59
73
|
readonly $fragment: string;
|
|
60
|
-
constructor(route: Route, urlPath: string, params?: Record<string, string>, query?: Record<string, string>, fragment?: string);
|
|
74
|
+
constructor(route: Route, urlPath: string, params?: Record<string, string>, query?: Record<string, string>, fragment?: string, uri?: string);
|
|
61
75
|
setQuery(query: Record<string, string>): void;
|
|
62
76
|
getPath(): string;
|
|
63
77
|
getParams(): Record<string, string>;
|
|
@@ -89,16 +103,35 @@ export declare class Router {
|
|
|
89
103
|
private currentUri;
|
|
90
104
|
/** Navigation guards */
|
|
91
105
|
private _beforeEach;
|
|
92
|
-
|
|
106
|
+
/**
|
|
107
|
+
* NHIỀU hook, không phải một.
|
|
108
|
+
*
|
|
109
|
+
* Trước đây đây là một slot duy nhất, và mỗi layout muốn biết "đã điều hướng
|
|
110
|
+
* xong" đều phải giành lấy nó: layout mới đăng ký đè hook của layout cũ, rồi
|
|
111
|
+
* layout cũ destroy lại xoá hook của layout mới → không còn hook nào. Đúng
|
|
112
|
+
* chuỗi docs → demo → docs. Hook giờ là tập hợp, `afterEach()` trả về hàm huỷ.
|
|
113
|
+
*/
|
|
114
|
+
private afterHooks;
|
|
93
115
|
/** Caches */
|
|
94
116
|
private routeCache;
|
|
95
117
|
/** State */
|
|
96
118
|
private isStarted;
|
|
97
119
|
private isNavigating;
|
|
120
|
+
private navigationSequence;
|
|
121
|
+
private activeNavigationUrl;
|
|
98
122
|
/** Bound handlers for cleanup */
|
|
99
123
|
private _handlePopState;
|
|
100
124
|
private _handleAutoNavigation;
|
|
125
|
+
private _handleViewContextChange;
|
|
101
126
|
constructor(app?: any);
|
|
127
|
+
/**
|
|
128
|
+
* init — nạp config và wire các dependency.
|
|
129
|
+
* Gọi bởi RouteServiceProvider.boot() sau khi tất cả providers đã boot.
|
|
130
|
+
*
|
|
131
|
+
* Thực hiện:
|
|
132
|
+
* 1. configure() — load routes, mode, guards từ config
|
|
133
|
+
* 2. Wire ViewManager — lấy từ App.View nếu chưa set thủ công
|
|
134
|
+
*/
|
|
102
135
|
init(config: RouterConfig): this;
|
|
103
136
|
setApp(app: any): this;
|
|
104
137
|
setViewManager(vm: ViewManagerInterface): this;
|
|
@@ -114,17 +147,43 @@ export declare class Router {
|
|
|
114
147
|
*/
|
|
115
148
|
addRouteConfig(config: RouteDefinition): this;
|
|
116
149
|
/**
|
|
117
|
-
*
|
|
150
|
+
* Nối path con vào path cha. Con bắt đầu bằng '/' là ĐƯỜNG TUYỆT ĐỐI —
|
|
151
|
+
* bỏ qua prefix cha (lối thoát cho route lệch khỏi cây, như Vue Router).
|
|
152
|
+
* Con rỗng ('') = index route, trùng đúng path cha.
|
|
153
|
+
*/
|
|
154
|
+
private static joinRoutePath;
|
|
155
|
+
/**
|
|
156
|
+
* Trải cây route thành bảng phẳng — bảng phẳng là thứ `matchRoute()` duyệt,
|
|
157
|
+
* và nó khớp THEO THỨ TỰ (first match wins), nên thứ tự emit ở đây chính là
|
|
158
|
+
* độ ưu tiên: giữ nguyên thứ tự khai báo để `/users/profile` đứng trước
|
|
159
|
+
* `/users/{id}` đúng như người viết mong đợi.
|
|
160
|
+
*
|
|
161
|
+
* Cha có `children` mà KHÔNG có `component` = nhóm thuần tuý (gom prefix +
|
|
162
|
+
* meta dùng chung), không sinh route nào cho chính nó.
|
|
163
|
+
*
|
|
164
|
+
* Index child (`path: ''`) sinh ra đúng path của cha → khi đó bỏ route
|
|
165
|
+
* riêng của cha, vì khai báo con là chỉ định cụ thể hơn cho URL đó.
|
|
166
|
+
*/
|
|
167
|
+
private flattenRouteTree;
|
|
168
|
+
/**
|
|
169
|
+
* Add multiple routes at once. Chấp nhận cây lồng qua `children` — mọi
|
|
170
|
+
* đường vào (`configure`, `replaceRoutes`) đều đi qua đây nên chỉ cần
|
|
171
|
+
* flatten một chỗ.
|
|
118
172
|
*/
|
|
119
173
|
addRoutes(routes: RouteDefinition[]): this;
|
|
174
|
+
/** Atomically replace the materialized route table for a new context revision. */
|
|
175
|
+
replaceRoutes(routes: RouteDefinition[]): this;
|
|
120
176
|
/**
|
|
121
177
|
* Configure router from a config object.
|
|
122
178
|
*/
|
|
123
179
|
configure(config: RouterConfig): this;
|
|
124
180
|
beforeEach(guard: NavigationGuard): this;
|
|
125
|
-
|
|
181
|
+
/** Đăng ký hook chạy sau mỗi lần điều hướng. Trả về hàm HUỶ đăng ký. */
|
|
182
|
+
afterEach(hook: AfterNavigationHook): () => void;
|
|
126
183
|
/**
|
|
127
184
|
* Navigate to a URL path.
|
|
185
|
+
* History chỉ được cập nhật SAU khi guard cho phép (trong handleRoute) —
|
|
186
|
+
* guard chặn thì URL không đổi, tránh desync URL ↔ view.
|
|
128
187
|
*/
|
|
129
188
|
navigate(path: string): void;
|
|
130
189
|
/** Alias for navigate */
|
|
@@ -174,15 +233,57 @@ export declare class Router {
|
|
|
174
233
|
* Stop the router — remove event listeners.
|
|
175
234
|
*/
|
|
176
235
|
stop(): void;
|
|
236
|
+
private handleViewContextChange;
|
|
237
|
+
/**
|
|
238
|
+
* Switch to a coherent server-rendered document when the view namespace
|
|
239
|
+
* changes. A short-lived token prevents a bad deployment from reloading the
|
|
240
|
+
* same URL/revision forever.
|
|
241
|
+
*/
|
|
242
|
+
private reloadForViewContext;
|
|
177
243
|
/**
|
|
178
244
|
* Full destroy — cleanup everything.
|
|
179
245
|
*/
|
|
180
246
|
destroy(): void;
|
|
181
247
|
getFullUrl(): string;
|
|
248
|
+
/** Kiểu navigation nội bộ — quyết định thao tác history + nav type xuống ViewManager */
|
|
249
|
+
private pendingNavigation;
|
|
182
250
|
/**
|
|
183
|
-
*
|
|
251
|
+
* Tách một URL string thành pathname / query string / fragment.
|
|
252
|
+
* PHẢI tách query + hash TRƯỚC khi match route — pattern chỉ match pathname.
|
|
253
|
+
*/
|
|
254
|
+
private splitLocation;
|
|
255
|
+
/**
|
|
256
|
+
* Điểm vào duy nhất cho mọi navigation (navigate/replace/popstate/initial).
|
|
257
|
+
* Đang navigate dở → ghi nhận request MỚI NHẤT, xử lý sau khi xong
|
|
258
|
+
* (không drop im lặng như trước).
|
|
259
|
+
*/
|
|
260
|
+
private requestNavigation;
|
|
261
|
+
/**
|
|
262
|
+
* Core route handler — prepare/guard/render trước, chỉ commit history +
|
|
263
|
+
* active route sau khi ViewManager đã mount/hydrate thành công.
|
|
184
264
|
*/
|
|
185
265
|
private handleRoute;
|
|
266
|
+
/** Pop đã đổi address bar; render fail thì đưa URL về chain còn active. */
|
|
267
|
+
private restoreUrlAfterFailedPop;
|
|
268
|
+
/**
|
|
269
|
+
* Ghim chiều cao tài liệu bằng đúng chiều cao hiện tại, trả về hàm nhả.
|
|
270
|
+
* Chỉ chạm `min-height` của body nên không đụng layout khi đã nhả.
|
|
271
|
+
*/
|
|
272
|
+
private freezeDocumentHeight;
|
|
273
|
+
private applyScroll;
|
|
274
|
+
/** Live region dùng lại giữa các lần điều hướng — tạo lười, chỉ 1 node. */
|
|
275
|
+
private liveRegion;
|
|
276
|
+
/**
|
|
277
|
+
* A11y sau khi điều hướng xong (SPA không tự làm được như full page load):
|
|
278
|
+
* 1. Đưa focus về container view — không làm thì bàn phím vẫn ở link cũ
|
|
279
|
+
* của trang TRƯỚC, Tab tiếp tục từ vị trí không còn tồn tại.
|
|
280
|
+
* 2. Đọc tên trang mới qua live region — screen reader không hề biết
|
|
281
|
+
* nội dung đã đổi vì document không reload.
|
|
282
|
+
*
|
|
283
|
+
* `preventScroll` để không phá `applyScroll()` vừa chạy. Bỏ qua `initial`:
|
|
284
|
+
* lần paint đầu/hydrate không được cướp focus khỏi thứ user đang thao tác.
|
|
285
|
+
*/
|
|
286
|
+
private announceNavigation;
|
|
186
287
|
/**
|
|
187
288
|
* Handle browser back/forward.
|
|
188
289
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../../src/core/routers/Router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../../src/core/routers/Router.ts"],"names":[],"mappings":"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"}
|