@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Block.d.ts","sourceRoot":"","sources":["../../../../src/core/elements/Block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Block.d.ts","sourceRoot":"","sources":["../../../../src/core/elements/Block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAa,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEzF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAGvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,KAAM,YAAW,cAAc;IACxC,OAAO,EAAE,aAAa,CAAW;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,uBAAuB,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,wEAAwE;IACxE,OAAO,CAAC,SAAS,CAAuB;IACxC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC1C,oBAAoB,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,IAAI,EAAE,CAAM;IACzB,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAQ;IAE3C,SAAgB,UAAU,QAAQ;IAClC,SAAgB,YAAY,SAAS;gBAEzB,EACR,GAAG,EACH,IAAI,EACJ,MAAa,EACb,oBAA2D,EAC3D,EAAS,EACT,QAAmB,EACtB,EAAE;QACC,GAAG,EAAE,uBAAuB,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;QAC1C,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;KACvB;IAyBD,2BAA2B;IAC3B,IAAI,IAAI,IAAI;IAQZ,yDAAyD;IACzD,MAAM,IAAI,IAAI;IASd,KAAK,CAAC,QAAQ,EAAE,uBAAuB,EAAE,aAAa,EAAE,aAAa,GAAG,GAAG;IAM3E,OAAO,IAAI,IAAI;IAGf,OAAO,IAAI,IAAI;IAYf,MAAM,IAAI,IAAI;IAId,yDAAyD;IACzD,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;CAI9D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { InitModes } from "../contracts/common.js";
|
|
2
|
+
import { generateUUID } from "../helpers/utils.js";
|
|
3
|
+
import markerRegistry from "../services/MarkerRegistry.js";
|
|
3
4
|
/**
|
|
4
5
|
* Block — a named mounting slot used in layout views.
|
|
5
6
|
*
|
|
@@ -20,23 +21,37 @@ import markerRegistry from "../services/MarkerRegistry";
|
|
|
20
21
|
*/
|
|
21
22
|
export class Block {
|
|
22
23
|
constructor({ ctx, name, viewId = null, contentRenderFactory = (parentElement) => [], id = null, initMode = 'create' }) {
|
|
23
|
-
this.
|
|
24
|
+
this.saoType = 'Block';
|
|
24
25
|
this.viewId = null;
|
|
26
|
+
/** Key trả về bởi markerRegistry.register — destroy() dùng để gỡ lại */
|
|
27
|
+
this.markerKey = null;
|
|
25
28
|
this.fragment = null;
|
|
26
29
|
this.contentRenderFactory = null;
|
|
27
30
|
this.domChildren = [];
|
|
28
31
|
this.parentElement = null;
|
|
29
32
|
this.isOneBlock = true;
|
|
30
|
-
this.
|
|
31
|
-
this.id =
|
|
33
|
+
this.isSaoElement = false;
|
|
34
|
+
this.id = id ?? generateUUID(10); // Unique ID for debugging
|
|
32
35
|
this.ctx = ctx;
|
|
33
36
|
this.name = name;
|
|
34
37
|
this.viewId = viewId ?? ctx.viewId; // Associate block with current viewId
|
|
35
38
|
this.initMode = initMode;
|
|
36
39
|
this.contentRenderFactory = contentRenderFactory || ((parentElement) => []);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
// Hydrate: claim cặp marker server qua index O(1) của MarkerRegistry.
|
|
41
|
+
// (Bản cũ dùng chung một TreeWalker không reset nên chỉ block ĐẦU TIÊN
|
|
42
|
+
// claim được, các block sau lặng lẽ tạo marker mới.)
|
|
43
|
+
const claimed = (this.initMode === InitModes.HYDRATE)
|
|
44
|
+
? markerRegistry.claim('block', this.id)
|
|
45
|
+
: null;
|
|
46
|
+
if (claimed) {
|
|
47
|
+
this.openTag = claimed.open;
|
|
48
|
+
this.closeTag = claimed.close;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.openTag = markerRegistry.createMarkerStart('block', this.id);
|
|
52
|
+
this.closeTag = markerRegistry.createMarkerEnd('block', this.id);
|
|
53
|
+
this.markerKey = markerRegistry.register('block', this.id, { name, viewId }); // Register block in marker registry
|
|
54
|
+
}
|
|
40
55
|
}
|
|
41
56
|
/** Initialize the block */
|
|
42
57
|
init() {
|
|
@@ -64,7 +79,16 @@ export class Block {
|
|
|
64
79
|
// Unmount logic (e.g. hide or remove DOM nodes, stop reactions)
|
|
65
80
|
}
|
|
66
81
|
destroy() {
|
|
67
|
-
//
|
|
82
|
+
// MarkerRegistry là singleton toàn cục — không gỡ thì record sống qua navigate.
|
|
83
|
+
if (this.markerKey) {
|
|
84
|
+
markerRegistry.remove(this.markerKey);
|
|
85
|
+
this.markerKey = null;
|
|
86
|
+
}
|
|
87
|
+
// openTag/closeTag nay NẰM TRONG DOM (BlockManager.mountBlockIntoOutlet chèn
|
|
88
|
+
// chúng quanh content). Bỏ lại comment mồ côi thì lần hydrate sau
|
|
89
|
+
// markerRegistry.claim('block', id) có thể bắt trúng cặp cũ và claim nhầm vùng.
|
|
90
|
+
this.openTag.remove();
|
|
91
|
+
this.closeTag.remove();
|
|
68
92
|
}
|
|
69
93
|
update() {
|
|
70
94
|
// Update logic (e.g. re-render content on state change)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Block.js","sourceRoot":"","sources":["../../../../src/core/elements/Block.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Block.js","sourceRoot":"","sources":["../../../../src/core/elements/Block.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAG3D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,KAAK;IAmBd,YAAY,EACR,GAAG,EACH,IAAI,EACJ,MAAM,GAAG,IAAI,EACb,oBAAoB,GAAG,CAAC,aAA4B,EAAE,EAAE,CAAC,EAAE,EAC3D,EAAE,GAAG,IAAI,EACT,QAAQ,GAAG,QAAQ,EAQtB;QAhCD,YAAO,GAAkB,OAAO,CAAC;QAIjC,WAAM,GAAkB,IAAI,CAAC;QAC7B,wEAAwE;QAChE,cAAS,GAAkB,IAAI,CAAC;QACxC,aAAQ,GAA6B,IAAI,CAAC;QAC1C,yBAAoB,GAA8B,IAAI,CAAC;QAGvD,gBAAW,GAAW,EAAE,CAAC;QAEzB,kBAAa,GAAyB,IAAI,CAAC;QAE3B,eAAU,GAAG,IAAI,CAAC;QAClB,iBAAY,GAAG,KAAK,CAAC;QAiBjC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B;QAC5D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,sCAAsC;QAC1E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,IAAI,CAAC,CAAC,aAA4B,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3F,sEAAsE;QACtE,uEAAuE;QACvE,qDAAqD;QACrD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,oCAAoC;QACtH,CAAC;IAEL,CAAC;IAED,2BAA2B;IAC3B,IAAI;QACA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC9B,uBAAuB;QAC3B,CAAC;aAAM,CAAC;YACJ,sBAAsB;QAC1B,CAAC;IACL,CAAC;IAED,yDAAyD;IACzD,MAAM;QAEF,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO;QAEvC,qCAAqC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;IAEnE,CAAC;IAED,KAAK,CAAC,QAAiC,EAAE,aAA4B;QACjE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;IACD,OAAO;QACH,gEAAgE;IACpE,CAAC;IACD,OAAO;QACH,gFAAgF;QAChF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,6EAA6E;QAC7E,kEAAkE;QAClE,gFAAgF;QAChF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM;QACF,wDAAwD;IAC5D,CAAC;IAED,yDAAyD;IACzD,gBAAgB,CAAC,aAAmC;QAChD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;CAEJ"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { BlockOutletInterface } from "../contracts/BlockInterface";
|
|
2
|
-
import { InitMode } from "../contracts/common";
|
|
3
|
-
import type { HtmlInterface } from "../contracts/ElementInterface";
|
|
4
|
-
import type { ViewControllerInterface } from "../contracts/ViewControllerInterface";
|
|
5
|
-
import type {
|
|
1
|
+
import type { BlockOutletInterface } from "../contracts/BlockInterface.js";
|
|
2
|
+
import { InitMode } from "../contracts/common.js";
|
|
3
|
+
import type { HtmlInterface } from "../contracts/ElementInterface.js";
|
|
4
|
+
import type { ViewControllerInterface } from "../contracts/ViewControllerInterface.js";
|
|
5
|
+
import type { SaoObjectType } from "../types/utils.js";
|
|
6
6
|
export declare class BlockOutlet implements BlockOutletInterface {
|
|
7
|
-
|
|
7
|
+
saoType: SaoObjectType;
|
|
8
8
|
id: string;
|
|
9
9
|
name: string;
|
|
10
10
|
openTag: Comment;
|
|
@@ -20,14 +20,25 @@ export declare class BlockOutlet implements BlockOutletInterface {
|
|
|
20
20
|
id?: string | null;
|
|
21
21
|
initMode?: InitMode;
|
|
22
22
|
});
|
|
23
|
+
/**
|
|
24
|
+
* Tìm cặp marker outlet từ server-rendered HTML (format chuẩn §5.1):
|
|
25
|
+
* open: s:bo:{id}-s close: s:bo:{id}-e
|
|
26
|
+
* Tra index của MarkerRegistry, chặn trong parentElement nếu có.
|
|
27
|
+
*/
|
|
28
|
+
private claimSSRMarkers;
|
|
23
29
|
hydrate(): void;
|
|
30
|
+
/** Registry guard */
|
|
31
|
+
__destroyed__: boolean;
|
|
32
|
+
/** Key trả về bởi markerRegistry.register — destroy() dùng để gỡ lại */
|
|
33
|
+
private markerKey;
|
|
34
|
+
/** Render — idempotent: markers đã trong DOM thì giữ nguyên (same-layout reuse) */
|
|
24
35
|
render(): void;
|
|
25
36
|
destroy(): void;
|
|
26
37
|
start(): void;
|
|
27
38
|
stop(): void;
|
|
28
39
|
setParentElement(parentElement: HtmlInterface | null): void;
|
|
29
|
-
get
|
|
30
|
-
set
|
|
40
|
+
get isSaoElement(): boolean;
|
|
41
|
+
set isSaoElement(value: boolean);
|
|
31
42
|
get isOneBlockOutlet(): boolean;
|
|
32
43
|
set isOneBlockOutlet(value: boolean);
|
|
33
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockOutlet.d.ts","sourceRoot":"","sources":["../../../../src/core/elements/BlockOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BlockOutlet.d.ts","sourceRoot":"","sources":["../../../../src/core/elements/BlockOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAa,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAGvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,qBAAa,WAAY,YAAW,oBAAoB;IACpD,OAAO,EAAE,aAAa,CAAiB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAQ;IACpC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAQ;IAC3C,GAAG,EAAE,uBAAuB,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAoB;gBAC1B,EAAE,GAAG,EAAE,aAAoB,EAAE,IAAI,EAAE,EAAS,EAAE,QAA2B,EAAE,EAAE;QAAE,GAAG,EAAE,uBAAuB,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE;IA4BtN;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAIvB,OAAO,IAAI,IAAI;IAIf,qBAAqB;IACd,aAAa,EAAE,OAAO,CAAS;IACtC,wEAAwE;IACxE,OAAO,CAAC,SAAS,CAAuB;IAExC,mFAAmF;IACnF,MAAM,IAAI,IAAI;IAUd,OAAO,IAAI,IAAI;IAmBf,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAK3D,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAE9B;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAElC;CACJ"}
|
|
@@ -1,34 +1,78 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { InitModes } from "../contracts/common.js";
|
|
2
|
+
import { generateUUID } from "../helpers/utils.js";
|
|
3
|
+
import markerRegistry from "../services/MarkerRegistry.js";
|
|
3
4
|
export class BlockOutlet {
|
|
4
|
-
constructor({ ctx, parentElement = null, name, id = null, initMode =
|
|
5
|
-
this.
|
|
5
|
+
constructor({ ctx, parentElement = null, name, id = null, initMode = InitModes.CREATE }) {
|
|
6
|
+
this.saoType = 'BlockOutlet';
|
|
6
7
|
this.parent = null;
|
|
7
8
|
this.parentElement = null;
|
|
8
|
-
this.initMode =
|
|
9
|
-
|
|
9
|
+
this.initMode = InitModes.CREATE;
|
|
10
|
+
/** Registry guard */
|
|
11
|
+
this.__destroyed__ = false;
|
|
12
|
+
/** Key trả về bởi markerRegistry.register — destroy() dùng để gỡ lại */
|
|
13
|
+
this.markerKey = null;
|
|
14
|
+
this.id = id ?? generateUUID(10); // Unique ID for debugging
|
|
10
15
|
this.ctx = ctx;
|
|
11
16
|
this.name = name;
|
|
12
17
|
this.parent = parentElement;
|
|
13
18
|
this.parentElement = parentElement;
|
|
14
19
|
this.initMode = initMode;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
if (this.initMode === InitModes.HYDRATE) {
|
|
21
|
+
// Claim cặp marker server <!--s:bo:{id}-s--> ... <!--s:bo:{id}-e-->
|
|
22
|
+
const claimed = this.claimSSRMarkers();
|
|
23
|
+
if (claimed) {
|
|
24
|
+
this.openTag = claimed.open;
|
|
25
|
+
this.closeTag = claimed.close;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.openTag = markerRegistry.createMarkerStart('blockoutlet', this.id);
|
|
29
|
+
this.closeTag = markerRegistry.createMarkerEnd('blockoutlet', this.id);
|
|
30
|
+
this.markerKey = markerRegistry.register('blockoutlet', this.id, { name, viewId: ctx.viewId });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.openTag = markerRegistry.createMarkerStart('blockoutlet', this.id);
|
|
35
|
+
this.closeTag = markerRegistry.createMarkerEnd('blockoutlet', this.id);
|
|
36
|
+
this.markerKey = markerRegistry.register('blockoutlet', this.id, { name, viewId: ctx.viewId }); // Register this outlet in the MarkerRegistry
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Tìm cặp marker outlet từ server-rendered HTML (format chuẩn §5.1):
|
|
41
|
+
* open: s:bo:{id}-s close: s:bo:{id}-e
|
|
42
|
+
* Tra index của MarkerRegistry, chặn trong parentElement nếu có.
|
|
43
|
+
*/
|
|
44
|
+
claimSSRMarkers() {
|
|
45
|
+
return markerRegistry.claim('blockoutlet', this.id, this.parentElement?.element ?? null);
|
|
18
46
|
}
|
|
19
47
|
hydrate() {
|
|
20
48
|
// Hydration logic if needed (e.g. reattach event listeners)
|
|
21
49
|
}
|
|
50
|
+
/** Render — idempotent: markers đã trong DOM thì giữ nguyên (same-layout reuse) */
|
|
22
51
|
render() {
|
|
52
|
+
if (this.__destroyed__)
|
|
53
|
+
return;
|
|
54
|
+
if (this.openTag.parentNode)
|
|
55
|
+
return; // đã đặt — không đặt lại
|
|
23
56
|
if (!this.parentElement || !this.parentElement.element)
|
|
24
57
|
return;
|
|
25
58
|
const parentEl = this.parentElement.element;
|
|
26
|
-
// Place markers
|
|
27
59
|
parentEl.appendChild(this.openTag);
|
|
28
|
-
// Register this outlet in the MarkerRegistry for block mounting
|
|
29
60
|
parentEl.appendChild(this.closeTag);
|
|
30
61
|
}
|
|
31
62
|
destroy() {
|
|
63
|
+
this.__destroyed__ = true;
|
|
64
|
+
this.ctx.releaseElement?.(this);
|
|
65
|
+
if (this.markerKey) {
|
|
66
|
+
markerRegistry.remove(this.markerKey);
|
|
67
|
+
this.markerKey = null;
|
|
68
|
+
}
|
|
69
|
+
// Clear nội dung giữa markers (block content nếu còn)
|
|
70
|
+
let current = this.openTag.nextSibling;
|
|
71
|
+
while (current && current !== this.closeTag) {
|
|
72
|
+
const next = current.nextSibling;
|
|
73
|
+
current.remove();
|
|
74
|
+
current = next;
|
|
75
|
+
}
|
|
32
76
|
// Remove markers from DOM
|
|
33
77
|
this.openTag.remove();
|
|
34
78
|
this.closeTag.remove();
|
|
@@ -43,10 +87,10 @@ export class BlockOutlet {
|
|
|
43
87
|
this.parent = parentElement;
|
|
44
88
|
this.parentElement = parentElement;
|
|
45
89
|
}
|
|
46
|
-
get
|
|
90
|
+
get isSaoElement() {
|
|
47
91
|
return true;
|
|
48
92
|
}
|
|
49
|
-
set
|
|
93
|
+
set isSaoElement(value) {
|
|
50
94
|
// No-op setter to satisfy OneElement interface
|
|
51
95
|
}
|
|
52
96
|
get isOneBlockOutlet() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockOutlet.js","sourceRoot":"","sources":["../../../../src/core/elements/BlockOutlet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BlockOutlet.js","sourceRoot":"","sources":["../../../../src/core/elements/BlockOutlet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { InitMode } from "../contracts/common";
|
|
2
|
-
import { ComponentInterface } from "../contracts/ComponentInterface";
|
|
3
|
-
import { HtmlInterface } from "../contracts/ElementInterface";
|
|
4
|
-
import { ViewControllerInterface } from "../contracts/ViewControllerInterface";
|
|
5
|
-
import { ViewInterface } from "../contracts/ViewInterface";
|
|
6
|
-
import {
|
|
1
|
+
import { InitMode } from "../contracts/common.js";
|
|
2
|
+
import { ComponentInterface } from "../contracts/ComponentInterface.js";
|
|
3
|
+
import { HtmlInterface } from "../contracts/ElementInterface.js";
|
|
4
|
+
import { ViewControllerInterface } from "../contracts/ViewControllerInterface.js";
|
|
5
|
+
import { ViewInterface } from "../contracts/ViewInterface.js";
|
|
6
|
+
import { SaoObjectType } from "../types/utils.js";
|
|
7
7
|
export declare class Component implements ComponentInterface {
|
|
8
|
-
|
|
8
|
+
saoType: SaoObjectType;
|
|
9
9
|
ctx: ViewControllerInterface;
|
|
10
10
|
parent: HtmlInterface | null;
|
|
11
11
|
domChildren: Node[];
|
|
@@ -24,8 +24,20 @@ export declare class Component implements ComponentInterface {
|
|
|
24
24
|
initMode: InitMode;
|
|
25
25
|
subscribeFn: () => void;
|
|
26
26
|
unsubscribeFn: () => void;
|
|
27
|
+
/**
|
|
28
|
+
* Listener khai báo tại thẻ cha: `<mycomp @edit(openEditor(event))>`.
|
|
29
|
+
*
|
|
30
|
+
* Con gọi `emit('edit', payload)` → ViewController.emit tra Ở ĐÂY, không đi
|
|
31
|
+
* qua event bus: không rò sang instance khác, không phải gỡ đăng ký.
|
|
32
|
+
*
|
|
33
|
+
* Đọc lúc phát chứ không copy vào data con: mỗi lần cha render lại,
|
|
34
|
+
* `ViewController.include()` thay bảng này bằng closure mới, nên handler
|
|
35
|
+
* luôn nhìn thấy biến vòng lặp / prop của LƯỢT RENDER hiện tại — kể cả khi
|
|
36
|
+
* component không có prop reactive nào để kích hoạt updateData.
|
|
37
|
+
*/
|
|
38
|
+
listeners: Record<string, (...args: any[]) => any>;
|
|
27
39
|
dataFactory: ((parentElement: HtmlInterface | null) => Record<string, any>) | null;
|
|
28
|
-
constructor({ ctx, parent, id, stateKeys, data, dataFactory, path, type, condition, initMode, }: {
|
|
40
|
+
constructor({ ctx, parent, id, stateKeys, data, dataFactory, path, type, condition, initMode, listeners, }: {
|
|
29
41
|
ctx: ViewControllerInterface;
|
|
30
42
|
parent?: HtmlInterface | null;
|
|
31
43
|
id?: string | null;
|
|
@@ -39,7 +51,13 @@ export declare class Component implements ComponentInterface {
|
|
|
39
51
|
checker: () => any;
|
|
40
52
|
} | null;
|
|
41
53
|
initMode?: InitMode;
|
|
54
|
+
listeners?: Record<string, (...args: any[]) => any>;
|
|
42
55
|
});
|
|
56
|
+
/**
|
|
57
|
+
* Tìm cặp marker component từ server-rendered HTML (format chuẩn §5.1):
|
|
58
|
+
* open: s:c:{id}-s close: s:c:{id}-e
|
|
59
|
+
*/
|
|
60
|
+
private claimSSRMarkers;
|
|
43
61
|
mergeData(newData: Record<string, any>): void;
|
|
44
62
|
setDataFactory(factory: (parentElement: HtmlInterface | null) => Record<string, any>): void;
|
|
45
63
|
setCondition(condition: {
|
|
@@ -47,15 +65,69 @@ export declare class Component implements ComponentInterface {
|
|
|
47
65
|
checker: () => any;
|
|
48
66
|
}): void;
|
|
49
67
|
setStateKeys(stateKeys: string[]): void;
|
|
68
|
+
setListeners(listeners: Record<string, (...args: any[]) => any>): void;
|
|
50
69
|
setParentElement(parent: HtmlInterface | null): void;
|
|
51
70
|
setView(view: ViewInterface): void;
|
|
52
71
|
setParent(parent: HtmlInterface | null): void;
|
|
72
|
+
/** Registry guard */
|
|
73
|
+
__destroyed__: boolean;
|
|
74
|
+
private _isStarted;
|
|
75
|
+
private unsubscribeData;
|
|
76
|
+
private unsubscribeCondition;
|
|
77
|
+
/** 'when' type: trạng thái mounted hiện tại của child */
|
|
78
|
+
private _childMounted;
|
|
79
|
+
/**
|
|
80
|
+
* Render — @include (RUNTIME_CONTRACT.md §2):
|
|
81
|
+
* 1. Đặt component markers (idempotent — caller có thể đã đặt đúng vị trí)
|
|
82
|
+
* 2. Resolve child view từ registry (App.View)
|
|
83
|
+
* 3. Render child wrapper GIỮA markers, liên kết parent ↔ child
|
|
84
|
+
* 4. commitData cho child (start sẽ do lifecycle cascade gọi)
|
|
85
|
+
*
|
|
86
|
+
* Hydrate mode (markers claim được từ SSR): child view được tạo với đúng
|
|
87
|
+
* viewId server đã dùng (discover từ marker view bên trong) → toàn bộ cây
|
|
88
|
+
* con CLAIM DOM server thay vì tạo mới — SSR/CSR cho cùng kết quả.
|
|
89
|
+
*/
|
|
90
|
+
render(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Error boundary cho subtree con (@include). Boundary được tìm từ ctx —
|
|
93
|
+
* controller CHỨA @include này, không phải view con — nên onError của một
|
|
94
|
+
* view không bắt lỗi render của chính nó (giống React ErrorBoundary).
|
|
95
|
+
* Không boundary nào xử lý → rethrow, giữ nguyên hành vi cũ (bubble lên
|
|
96
|
+
* try/catch của renderPageView).
|
|
97
|
+
*/
|
|
98
|
+
private guardChildMount;
|
|
99
|
+
/** Dọn DOM dở dang của lần render lỗi rồi chèn fallback giữa cặp marker. */
|
|
100
|
+
private mountFallback;
|
|
101
|
+
/**
|
|
102
|
+
* Discover viewId server đã dùng cho child view: quét comment giữa cặp
|
|
103
|
+
* marker component, tìm marker view mở đầu tiên <!--s:v:{id}-s-->.
|
|
104
|
+
*/
|
|
105
|
+
private discoverChildViewId;
|
|
106
|
+
/**
|
|
107
|
+
* Hydrate child view — thứ tự chuẩn hydration (như ViewManager.hydrateView):
|
|
108
|
+
* discover viewId → tạo instance → commit state → flush discard →
|
|
109
|
+
* render claim DOM → mount() (hook + asset). KHÔNG chèn node mới.
|
|
110
|
+
*/
|
|
111
|
+
private hydrateChild;
|
|
112
|
+
/** Tạo + mount child view giữa markers (nếu chưa có) */
|
|
113
|
+
private mountChild;
|
|
114
|
+
/** Resolve one child instance and establish ownership before either DOM strategy. */
|
|
115
|
+
private resolveChildView;
|
|
116
|
+
/** Hydration mounts after commit/claim; CSR commits immediately after mount. */
|
|
117
|
+
private finishChildMount;
|
|
118
|
+
private markChildMounted;
|
|
119
|
+
/** Gỡ child (when=false hoặc destroy) */
|
|
120
|
+
private unmountChild;
|
|
121
|
+
/**
|
|
122
|
+
* Start — kích hoạt child + subscribe:
|
|
123
|
+
* - stateKeys: props reactive — đổi → dataFactory mới → child.updateData()
|
|
124
|
+
* - condition (type 'when'): đổi → mount/unmount child
|
|
125
|
+
*/
|
|
53
126
|
start(): void;
|
|
54
127
|
stop(): void;
|
|
55
|
-
render(): void;
|
|
56
128
|
destroy(): void;
|
|
57
|
-
get
|
|
58
|
-
set
|
|
129
|
+
get isSaoElement(): boolean;
|
|
130
|
+
set isSaoElement(value: boolean);
|
|
59
131
|
get isOneComponent(): boolean;
|
|
60
132
|
set isOneComponent(value: boolean);
|
|
61
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../../../src/core/elements/Component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../../../src/core/elements/Component.ts"],"names":[],"mappings":"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"}
|