@saolabs/client 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/README.md +221 -0
  2. package/dist/index.d.ts +46 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +38 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/plugins.d.ts +38 -0
  7. package/dist/plugins.d.ts.map +1 -0
  8. package/dist/plugins.js +61 -0
  9. package/dist/plugins.js.map +1 -0
  10. package/dist/src/core/app/Application.d.ts +159 -0
  11. package/dist/src/core/app/Application.d.ts.map +1 -0
  12. package/dist/src/core/app/Application.js +338 -0
  13. package/dist/src/core/app/Application.js.map +1 -0
  14. package/dist/src/core/bootstrap/app.d.ts +4 -0
  15. package/dist/src/core/bootstrap/app.d.ts.map +1 -0
  16. package/dist/src/core/bootstrap/app.js +49 -0
  17. package/dist/src/core/bootstrap/app.js.map +1 -0
  18. package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts +9 -0
  19. package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts.map +1 -0
  20. package/dist/src/core/bootstrap/providers/ApiServiceProvider.js +18 -0
  21. package/dist/src/core/bootstrap/providers/ApiServiceProvider.js.map +1 -0
  22. package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts +6 -0
  23. package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts.map +1 -0
  24. package/dist/src/core/bootstrap/providers/CoreServiceProvider.js +21 -0
  25. package/dist/src/core/bootstrap/providers/CoreServiceProvider.js.map +1 -0
  26. package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts +7 -0
  27. package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts.map +1 -0
  28. package/dist/src/core/bootstrap/providers/HelperServiceProvider.js +14 -0
  29. package/dist/src/core/bootstrap/providers/HelperServiceProvider.js.map +1 -0
  30. package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts +9 -0
  31. package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts.map +1 -0
  32. package/dist/src/core/bootstrap/providers/RouteServiceProvider.js +18 -0
  33. package/dist/src/core/bootstrap/providers/RouteServiceProvider.js.map +1 -0
  34. package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts +38 -0
  35. package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts.map +1 -0
  36. package/dist/src/core/bootstrap/providers/ServiceProvider.js +41 -0
  37. package/dist/src/core/bootstrap/providers/ServiceProvider.js.map +1 -0
  38. package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts +9 -0
  39. package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts.map +1 -0
  40. package/dist/src/core/bootstrap/providers/ViewServiceProvider.js +18 -0
  41. package/dist/src/core/bootstrap/providers/ViewServiceProvider.js.map +1 -0
  42. package/dist/src/core/bootstrap/providers/default-providers.d.ts +14 -0
  43. package/dist/src/core/bootstrap/providers/default-providers.d.ts.map +1 -0
  44. package/dist/src/core/bootstrap/providers/default-providers.js +79 -0
  45. package/dist/src/core/bootstrap/providers/default-providers.js.map +1 -0
  46. package/dist/src/core/bootstrap/providers/index.d.ts +10 -0
  47. package/dist/src/core/bootstrap/providers/index.d.ts.map +1 -0
  48. package/dist/src/core/bootstrap/providers/index.js +9 -0
  49. package/dist/src/core/bootstrap/providers/index.js.map +1 -0
  50. package/dist/src/core/bootstrap/providers/provider-order.d.ts +19 -0
  51. package/dist/src/core/bootstrap/providers/provider-order.d.ts.map +1 -0
  52. package/dist/src/core/bootstrap/providers/provider-order.js +51 -0
  53. package/dist/src/core/bootstrap/providers/provider-order.js.map +1 -0
  54. package/dist/src/core/cache/ViewCache.d.ts +46 -0
  55. package/dist/src/core/cache/ViewCache.d.ts.map +1 -0
  56. package/dist/src/core/cache/ViewCache.js +85 -0
  57. package/dist/src/core/cache/ViewCache.js.map +1 -0
  58. package/dist/src/core/cache/index.d.ts +2 -0
  59. package/dist/src/core/cache/index.d.ts.map +1 -0
  60. package/dist/src/core/cache/index.js +2 -0
  61. package/dist/src/core/cache/index.js.map +1 -0
  62. package/dist/src/core/contracts/ApiInterface.d.ts +11 -0
  63. package/dist/src/core/contracts/ApiInterface.d.ts.map +1 -0
  64. package/dist/src/core/contracts/ApiInterface.js +2 -0
  65. package/dist/src/core/contracts/ApiInterface.js.map +1 -0
  66. package/dist/src/core/contracts/ApplicationInterface.d.ts +66 -0
  67. package/dist/src/core/contracts/ApplicationInterface.d.ts.map +1 -0
  68. package/dist/src/core/contracts/ApplicationInterface.js +3 -0
  69. package/dist/src/core/contracts/ApplicationInterface.js.map +1 -0
  70. package/dist/src/core/contracts/BlockInterface.d.ts +67 -0
  71. package/dist/src/core/contracts/BlockInterface.d.ts.map +1 -0
  72. package/dist/src/core/contracts/BlockInterface.js +2 -0
  73. package/dist/src/core/contracts/BlockInterface.js.map +1 -0
  74. package/dist/src/core/contracts/ComponentInterface.d.ts +24 -0
  75. package/dist/src/core/contracts/ComponentInterface.d.ts.map +1 -0
  76. package/dist/src/core/contracts/ComponentInterface.js +2 -0
  77. package/dist/src/core/contracts/ComponentInterface.js.map +1 -0
  78. package/dist/src/core/contracts/ElementInterface.d.ts +117 -0
  79. package/dist/src/core/contracts/ElementInterface.d.ts.map +1 -0
  80. package/dist/src/core/contracts/ElementInterface.js +2 -0
  81. package/dist/src/core/contracts/ElementInterface.js.map +1 -0
  82. package/dist/src/core/contracts/EventServiceInterface.d.ts +37 -0
  83. package/dist/src/core/contracts/EventServiceInterface.d.ts.map +1 -0
  84. package/dist/src/core/contracts/EventServiceInterface.js +3 -0
  85. package/dist/src/core/contracts/EventServiceInterface.js.map +1 -0
  86. package/dist/src/core/contracts/HelperInterface.d.ts +231 -0
  87. package/dist/src/core/contracts/HelperInterface.d.ts.map +1 -0
  88. package/dist/src/core/contracts/HelperInterface.js +3 -0
  89. package/dist/src/core/contracts/HelperInterface.js.map +1 -0
  90. package/dist/src/core/contracts/HttpServiceInterface.d.ts +38 -0
  91. package/dist/src/core/contracts/HttpServiceInterface.d.ts.map +1 -0
  92. package/dist/src/core/contracts/HttpServiceInterface.js +3 -0
  93. package/dist/src/core/contracts/HttpServiceInterface.js.map +1 -0
  94. package/dist/src/core/contracts/LoggerServiceInterface.d.ts +37 -0
  95. package/dist/src/core/contracts/LoggerServiceInterface.d.ts.map +1 -0
  96. package/dist/src/core/contracts/LoggerServiceInterface.js +3 -0
  97. package/dist/src/core/contracts/LoggerServiceInterface.js.map +1 -0
  98. package/dist/src/core/contracts/LoopContextInterface.d.ts +14 -0
  99. package/dist/src/core/contracts/LoopContextInterface.d.ts.map +1 -0
  100. package/dist/src/core/contracts/LoopContextInterface.js +3 -0
  101. package/dist/src/core/contracts/LoopContextInterface.js.map +1 -0
  102. package/dist/src/core/contracts/MarkerInterface.d.ts +55 -0
  103. package/dist/src/core/contracts/MarkerInterface.d.ts.map +1 -0
  104. package/dist/src/core/contracts/MarkerInterface.js +2 -0
  105. package/dist/src/core/contracts/MarkerInterface.js.map +1 -0
  106. package/dist/src/core/contracts/ReactiveInterface.d.ts +38 -0
  107. package/dist/src/core/contracts/ReactiveInterface.d.ts.map +1 -0
  108. package/dist/src/core/contracts/ReactiveInterface.js +2 -0
  109. package/dist/src/core/contracts/ReactiveInterface.js.map +1 -0
  110. package/dist/src/core/contracts/RouterInterface.d.ts +58 -0
  111. package/dist/src/core/contracts/RouterInterface.d.ts.map +1 -0
  112. package/dist/src/core/contracts/RouterInterface.js +2 -0
  113. package/dist/src/core/contracts/RouterInterface.js.map +1 -0
  114. package/dist/src/core/contracts/ServiceProviderInterface.d.ts +12 -0
  115. package/dist/src/core/contracts/ServiceProviderInterface.d.ts.map +1 -0
  116. package/dist/src/core/contracts/ServiceProviderInterface.js +2 -0
  117. package/dist/src/core/contracts/ServiceProviderInterface.js.map +1 -0
  118. package/dist/src/core/contracts/StorageServiceInterface.d.ts +43 -0
  119. package/dist/src/core/contracts/StorageServiceInterface.d.ts.map +1 -0
  120. package/dist/src/core/contracts/StorageServiceInterface.js +3 -0
  121. package/dist/src/core/contracts/StorageServiceInterface.js.map +1 -0
  122. package/dist/src/core/contracts/StoreServiceInterface.d.ts +45 -0
  123. package/dist/src/core/contracts/StoreServiceInterface.d.ts.map +1 -0
  124. package/dist/src/core/contracts/StoreServiceInterface.js +3 -0
  125. package/dist/src/core/contracts/StoreServiceInterface.js.map +1 -0
  126. package/dist/src/core/contracts/ViewCacheInterface.d.ts +13 -0
  127. package/dist/src/core/contracts/ViewCacheInterface.d.ts.map +1 -0
  128. package/dist/src/core/contracts/ViewCacheInterface.js +3 -0
  129. package/dist/src/core/contracts/ViewCacheInterface.js.map +1 -0
  130. package/dist/src/core/contracts/ViewControllerInterface.d.ts +115 -0
  131. package/dist/src/core/contracts/ViewControllerInterface.d.ts.map +1 -0
  132. package/dist/src/core/contracts/ViewControllerInterface.js +2 -0
  133. package/dist/src/core/contracts/ViewControllerInterface.js.map +1 -0
  134. package/dist/src/core/contracts/ViewInterface.d.ts +24 -0
  135. package/dist/src/core/contracts/ViewInterface.d.ts.map +1 -0
  136. package/dist/src/core/contracts/ViewInterface.js +2 -0
  137. package/dist/src/core/contracts/ViewInterface.js.map +1 -0
  138. package/dist/src/core/contracts/ViewManagerInterface.d.ts +44 -0
  139. package/dist/src/core/contracts/ViewManagerInterface.d.ts.map +1 -0
  140. package/dist/src/core/contracts/ViewManagerInterface.js +2 -0
  141. package/dist/src/core/contracts/ViewManagerInterface.js.map +1 -0
  142. package/dist/src/core/contracts/ViewStateInterface.d.ts +40 -0
  143. package/dist/src/core/contracts/ViewStateInterface.d.ts.map +1 -0
  144. package/dist/src/core/contracts/ViewStateInterface.js +3 -0
  145. package/dist/src/core/contracts/ViewStateInterface.js.map +1 -0
  146. package/dist/src/core/contracts/common.d.ts +28 -0
  147. package/dist/src/core/contracts/common.d.ts.map +1 -0
  148. package/dist/src/core/contracts/common.js +29 -0
  149. package/dist/src/core/contracts/common.js.map +1 -0
  150. package/dist/src/core/contracts/utils.d.ts +20 -0
  151. package/dist/src/core/contracts/utils.d.ts.map +1 -0
  152. package/dist/src/core/contracts/utils.js +4 -0
  153. package/dist/src/core/contracts/utils.js.map +1 -0
  154. package/dist/src/core/contracts/views.d.ts +23 -0
  155. package/dist/src/core/contracts/views.d.ts.map +1 -0
  156. package/dist/src/core/contracts/views.js +2 -0
  157. package/dist/src/core/contracts/views.js.map +1 -0
  158. package/dist/src/core/elements/Block.d.ts +58 -0
  159. package/dist/src/core/elements/Block.d.ts.map +1 -0
  160. package/dist/src/core/elements/Block.js +77 -0
  161. package/dist/src/core/elements/Block.js.map +1 -0
  162. package/dist/src/core/elements/BlockOutlet.d.ts +34 -0
  163. package/dist/src/core/elements/BlockOutlet.d.ts.map +1 -0
  164. package/dist/src/core/elements/BlockOutlet.js +59 -0
  165. package/dist/src/core/elements/BlockOutlet.js.map +1 -0
  166. package/dist/src/core/elements/Component.d.ts +62 -0
  167. package/dist/src/core/elements/Component.d.ts.map +1 -0
  168. package/dist/src/core/elements/Component.js +72 -0
  169. package/dist/src/core/elements/Component.js.map +1 -0
  170. package/dist/src/core/elements/ElementManager.d.ts +23 -0
  171. package/dist/src/core/elements/ElementManager.d.ts.map +1 -0
  172. package/dist/src/core/elements/ElementManager.js +33 -0
  173. package/dist/src/core/elements/ElementManager.js.map +1 -0
  174. package/dist/src/core/elements/Fragment.d.ts +51 -0
  175. package/dist/src/core/elements/Fragment.d.ts.map +1 -0
  176. package/dist/src/core/elements/Fragment.js +133 -0
  177. package/dist/src/core/elements/Fragment.js.map +1 -0
  178. package/dist/src/core/elements/Html.d.ts +52 -0
  179. package/dist/src/core/elements/Html.d.ts.map +1 -0
  180. package/dist/src/core/elements/Html.js +299 -0
  181. package/dist/src/core/elements/Html.js.map +1 -0
  182. package/dist/src/core/elements/Output.d.ts +69 -0
  183. package/dist/src/core/elements/Output.d.ts.map +1 -0
  184. package/dist/src/core/elements/Output.js +121 -0
  185. package/dist/src/core/elements/Output.js.map +1 -0
  186. package/dist/src/core/elements/Reactive.d.ts +77 -0
  187. package/dist/src/core/elements/Reactive.d.ts.map +1 -0
  188. package/dist/src/core/elements/Reactive.js +199 -0
  189. package/dist/src/core/elements/Reactive.js.map +1 -0
  190. package/dist/src/core/elements/TextElement.d.ts +46 -0
  191. package/dist/src/core/elements/TextElement.d.ts.map +1 -0
  192. package/dist/src/core/elements/TextElement.js +94 -0
  193. package/dist/src/core/elements/TextElement.js.map +1 -0
  194. package/dist/src/core/elements/Wrapper.d.ts +50 -0
  195. package/dist/src/core/elements/Wrapper.d.ts.map +1 -0
  196. package/dist/src/core/elements/Wrapper.js +96 -0
  197. package/dist/src/core/elements/Wrapper.js.map +1 -0
  198. package/dist/src/core/elements/Yield.d.ts +34 -0
  199. package/dist/src/core/elements/Yield.d.ts.map +1 -0
  200. package/dist/src/core/elements/Yield.js +56 -0
  201. package/dist/src/core/elements/Yield.js.map +1 -0
  202. package/dist/src/core/elements/helpers.d.ts +8 -0
  203. package/dist/src/core/elements/helpers.d.ts.map +1 -0
  204. package/dist/src/core/elements/helpers.js +40 -0
  205. package/dist/src/core/elements/helpers.js.map +1 -0
  206. package/dist/src/core/elements/index.d.ts +12 -0
  207. package/dist/src/core/elements/index.d.ts.map +1 -0
  208. package/dist/src/core/elements/index.js +12 -0
  209. package/dist/src/core/elements/index.js.map +1 -0
  210. package/dist/src/core/hellpers/ApiClient.d.ts +58 -0
  211. package/dist/src/core/hellpers/ApiClient.d.ts.map +1 -0
  212. package/dist/src/core/hellpers/ApiClient.js +122 -0
  213. package/dist/src/core/hellpers/ApiClient.js.map +1 -0
  214. package/dist/src/core/hellpers/app.d.ts +3 -0
  215. package/dist/src/core/hellpers/app.d.ts.map +1 -0
  216. package/dist/src/core/hellpers/app.js +53 -0
  217. package/dist/src/core/hellpers/app.js.map +1 -0
  218. package/dist/src/core/hellpers/utils.d.ts +26 -0
  219. package/dist/src/core/hellpers/utils.d.ts.map +1 -0
  220. package/dist/src/core/hellpers/utils.js +96 -0
  221. package/dist/src/core/hellpers/utils.js.map +1 -0
  222. package/dist/src/core/routers/Router.d.ts +212 -0
  223. package/dist/src/core/routers/Router.d.ts.map +1 -0
  224. package/dist/src/core/routers/Router.js +623 -0
  225. package/dist/src/core/routers/Router.js.map +1 -0
  226. package/dist/src/core/routers/index.d.ts +3 -0
  227. package/dist/src/core/routers/index.d.ts.map +1 -0
  228. package/dist/src/core/routers/index.js +2 -0
  229. package/dist/src/core/routers/index.js.map +1 -0
  230. package/dist/src/core/services/BlockManager.d.ts +63 -0
  231. package/dist/src/core/services/BlockManager.d.ts.map +1 -0
  232. package/dist/src/core/services/BlockManager.js +191 -0
  233. package/dist/src/core/services/BlockManager.js.map +1 -0
  234. package/dist/src/core/services/DomService.d.ts +9 -0
  235. package/dist/src/core/services/DomService.d.ts.map +1 -0
  236. package/dist/src/core/services/DomService.js +18 -0
  237. package/dist/src/core/services/DomService.js.map +1 -0
  238. package/dist/src/core/services/EventService.d.ts +58 -0
  239. package/dist/src/core/services/EventService.d.ts.map +1 -0
  240. package/dist/src/core/services/EventService.js +212 -0
  241. package/dist/src/core/services/EventService.js.map +1 -0
  242. package/dist/src/core/services/HelperService.d.ts +443 -0
  243. package/dist/src/core/services/HelperService.d.ts.map +1 -0
  244. package/dist/src/core/services/HelperService.js +1650 -0
  245. package/dist/src/core/services/HelperService.js.map +1 -0
  246. package/dist/src/core/services/HttpService.d.ts +63 -0
  247. package/dist/src/core/services/HttpService.d.ts.map +1 -0
  248. package/dist/src/core/services/HttpService.js +182 -0
  249. package/dist/src/core/services/HttpService.js.map +1 -0
  250. package/dist/src/core/services/LoggerService.d.ts +56 -0
  251. package/dist/src/core/services/LoggerService.d.ts.map +1 -0
  252. package/dist/src/core/services/LoggerService.js +94 -0
  253. package/dist/src/core/services/LoggerService.js.map +1 -0
  254. package/dist/src/core/services/MarkerRegistry.d.ts +94 -0
  255. package/dist/src/core/services/MarkerRegistry.d.ts.map +1 -0
  256. package/dist/src/core/services/MarkerRegistry.js +199 -0
  257. package/dist/src/core/services/MarkerRegistry.js.map +1 -0
  258. package/dist/src/core/services/MarkerService.d.ts +299 -0
  259. package/dist/src/core/services/MarkerService.d.ts.map +1 -0
  260. package/dist/src/core/services/MarkerService.js +723 -0
  261. package/dist/src/core/services/MarkerService.js.map +1 -0
  262. package/dist/src/core/services/StorageService.d.ts +69 -0
  263. package/dist/src/core/services/StorageService.d.ts.map +1 -0
  264. package/dist/src/core/services/StorageService.js +243 -0
  265. package/dist/src/core/services/StorageService.js.map +1 -0
  266. package/dist/src/core/services/StoreService.d.ts +80 -0
  267. package/dist/src/core/services/StoreService.d.ts.map +1 -0
  268. package/dist/src/core/services/StoreService.js +301 -0
  269. package/dist/src/core/services/StoreService.js.map +1 -0
  270. package/dist/src/core/services/index.d.ts +9 -0
  271. package/dist/src/core/services/index.d.ts.map +1 -0
  272. package/dist/src/core/services/index.js +9 -0
  273. package/dist/src/core/services/index.js.map +1 -0
  274. package/dist/src/core/types/utils.d.ts +29 -0
  275. package/dist/src/core/types/utils.d.ts.map +1 -0
  276. package/dist/src/core/types/utils.js +22 -0
  277. package/dist/src/core/types/utils.js.map +1 -0
  278. package/dist/src/core/view/LoopContext.d.ts +38 -0
  279. package/dist/src/core/view/LoopContext.d.ts.map +1 -0
  280. package/dist/src/core/view/LoopContext.js +100 -0
  281. package/dist/src/core/view/LoopContext.js.map +1 -0
  282. package/dist/src/core/view/Section.d.ts +41 -0
  283. package/dist/src/core/view/Section.d.ts.map +1 -0
  284. package/dist/src/core/view/Section.js +67 -0
  285. package/dist/src/core/view/Section.js.map +1 -0
  286. package/dist/src/core/view/View.d.ts +63 -0
  287. package/dist/src/core/view/View.d.ts.map +1 -0
  288. package/dist/src/core/view/View.js +85 -0
  289. package/dist/src/core/view/View.js.map +1 -0
  290. package/dist/src/core/view/ViewController.d.ts +277 -0
  291. package/dist/src/core/view/ViewController.d.ts.map +1 -0
  292. package/dist/src/core/view/ViewController.js +862 -0
  293. package/dist/src/core/view/ViewController.js.map +1 -0
  294. package/dist/src/core/view/ViewManager.d.ts +141 -0
  295. package/dist/src/core/view/ViewManager.d.ts.map +1 -0
  296. package/dist/src/core/view/ViewManager.js +565 -0
  297. package/dist/src/core/view/ViewManager.js.map +1 -0
  298. package/dist/src/core/view/ViewState.d.ts +117 -0
  299. package/dist/src/core/view/ViewState.d.ts.map +1 -0
  300. package/dist/src/core/view/ViewState.js +410 -0
  301. package/dist/src/core/view/ViewState.js.map +1 -0
  302. package/dist/src/core/view/index.d.ts +6 -0
  303. package/dist/src/core/view/index.d.ts.map +1 -0
  304. package/dist/src/core/view/index.js +6 -0
  305. package/dist/src/core/view/index.js.map +1 -0
  306. package/index.ts +62 -0
  307. package/package.json +70 -0
  308. package/plugins.ts +77 -0
  309. package/src/core/app/Application.ts +410 -0
  310. package/src/core/bootstrap/app.ts +58 -0
  311. package/src/core/bootstrap/providers/ApiServiceProvider.ts +18 -0
  312. package/src/core/bootstrap/providers/CoreServiceProvider.ts +19 -0
  313. package/src/core/bootstrap/providers/HelperServiceProvider.ts +12 -0
  314. package/src/core/bootstrap/providers/RouteServiceProvider.ts +17 -0
  315. package/src/core/bootstrap/providers/ServiceProvider.ts +51 -0
  316. package/src/core/bootstrap/providers/ViewServiceProvider.ts +17 -0
  317. package/src/core/bootstrap/providers/default-providers.ts +94 -0
  318. package/src/core/bootstrap/providers/index.ts +9 -0
  319. package/src/core/bootstrap/providers/provider-order.test.ts +67 -0
  320. package/src/core/bootstrap/providers/provider-order.ts +66 -0
  321. package/src/core/cache/ViewCache.ts +102 -0
  322. package/src/core/cache/index.ts +1 -0
  323. package/src/core/contracts/ApiInterface.ts +11 -0
  324. package/src/core/contracts/ApplicationInterface.ts +79 -0
  325. package/src/core/contracts/BlockInterface.ts +76 -0
  326. package/src/core/contracts/ComponentInterface.ts +26 -0
  327. package/src/core/contracts/ElementInterface.ts +140 -0
  328. package/src/core/contracts/EventServiceInterface.ts +47 -0
  329. package/src/core/contracts/HelperInterface.ts +256 -0
  330. package/src/core/contracts/HttpServiceInterface.ts +51 -0
  331. package/src/core/contracts/LoggerServiceInterface.ts +48 -0
  332. package/src/core/contracts/LoopContextInterface.ts +15 -0
  333. package/src/core/contracts/MarkerInterface.ts +77 -0
  334. package/src/core/contracts/ReactiveInterface.ts +45 -0
  335. package/src/core/contracts/RouterInterface.ts +65 -0
  336. package/src/core/contracts/ServiceProviderInterface.ts +12 -0
  337. package/src/core/contracts/StorageServiceInterface.ts +48 -0
  338. package/src/core/contracts/StoreServiceInterface.ts +50 -0
  339. package/src/core/contracts/ViewCacheInterface.ts +14 -0
  340. package/src/core/contracts/ViewControllerInterface.ts +135 -0
  341. package/src/core/contracts/ViewInterface.ts +31 -0
  342. package/src/core/contracts/ViewManagerInterface.ts +45 -0
  343. package/src/core/contracts/ViewStateInterface.ts +47 -0
  344. package/src/core/contracts/common.ts +27 -0
  345. package/src/core/contracts/utils.ts +23 -0
  346. package/src/core/contracts/views.ts +23 -0
  347. package/src/core/elements/Block.ts +113 -0
  348. package/src/core/elements/BlockOutlet.ts +83 -0
  349. package/src/core/elements/Component.ts +114 -0
  350. package/src/core/elements/ElementManager.ts +48 -0
  351. package/src/core/elements/Fragment.ts +168 -0
  352. package/src/core/elements/Html.ts +364 -0
  353. package/src/core/elements/Output.ts +167 -0
  354. package/src/core/elements/Reactive.ts +253 -0
  355. package/src/core/elements/TextElement.ts +110 -0
  356. package/src/core/elements/Wrapper.ts +131 -0
  357. package/src/core/elements/Yield.ts +70 -0
  358. package/src/core/elements/helpers.ts +56 -0
  359. package/src/core/elements/index.ts +26 -0
  360. package/src/core/hellpers/ApiClient.ts +145 -0
  361. package/src/core/hellpers/app.ts +57 -0
  362. package/src/core/hellpers/utils.ts +109 -0
  363. package/src/core/routers/Router.ts +765 -0
  364. package/src/core/routers/index.ts +2 -0
  365. package/src/core/services/BlockManager.ts +210 -0
  366. package/src/core/services/DomService.ts +26 -0
  367. package/src/core/services/EventService.ts +266 -0
  368. package/src/core/services/HelperService.ts +1653 -0
  369. package/src/core/services/HttpService.ts +235 -0
  370. package/src/core/services/LoggerService.ts +139 -0
  371. package/src/core/services/MarkerRegistry.ts +239 -0
  372. package/src/core/services/MarkerService.ts +923 -0
  373. package/src/core/services/StorageService.ts +268 -0
  374. package/src/core/services/StoreService.ts +338 -0
  375. package/src/core/services/index.ts +8 -0
  376. package/src/core/types/utils.ts +30 -0
  377. package/src/core/view/LoopContext.ts +109 -0
  378. package/src/core/view/Section.ts +86 -0
  379. package/src/core/view/View.ts +109 -0
  380. package/src/core/view/ViewController.ts +1002 -0
  381. package/src/core/view/ViewManager.ts +700 -0
  382. package/src/core/view/ViewState.ts +453 -0
  383. package/src/core/view/index.ts +5 -0
@@ -0,0 +1,565 @@
1
+ /**
2
+ * ViewManager — Orchestrateur quản lý view lifecycle.
3
+ *
4
+ * Responsibilities:
5
+ * 1. Load view modules (dynamic import hoặc registry)
6
+ * 2. Invoke factory → get View instance
7
+ * 3. Resolve layout chain (if hasSuperView)
8
+ * 4. Mount vào container
9
+ * 5. commitData cho all views in chain
10
+ * 6. Start all views (activate reactivity)
11
+ * 7. Track active views for cleanup
12
+ *
13
+ * Khác core/ ViewManager:
14
+ * - Nhẹ hơn (~300 dòng thay vì 1145)
15
+ * - Tách rõ concern: ViewManager chỉ orchestrate, không render HTML string
16
+ * - Element tree rendering → ViewController.render()
17
+ * - Section system → Block/BlockOutlet
18
+ */
19
+ import { BlockManager } from "../services/BlockManager";
20
+ import { Html } from "../elements/Html";
21
+ import { hasData } from "../hellpers/utils";
22
+ import logger from "../services/LoggerService";
23
+ import { StoreService } from "../services/StoreService";
24
+ import { InitModes } from "../contracts/common";
25
+ import { OOTEnum } from "../types/utils";
26
+ import { app } from "../hellpers/app";
27
+ function isRenderableObject(result) {
28
+ return typeof result === 'object' && result !== null && 'oneType' in result;
29
+ }
30
+ export class ViewManager {
31
+ constructor(app) {
32
+ /** DI container */
33
+ this.App = null;
34
+ this.systemData = {}; // For internal use, not exposed to views
35
+ /** ROOT DOM container where views mount */
36
+ this.container = null;
37
+ this.rootElement = null; // Html wrapper for the root container
38
+ /** View module registry: name → factory or async loader */
39
+ this.viewRegistry = {};
40
+ /** Currently mounted views (keyed by path) */
41
+ this.activeViews = new Map();
42
+ /** The outermost active view (layout or page) */
43
+ this.currentView = null;
44
+ /** Current layout path — for layout reuse detection */
45
+ this.currentLayoutPath = null;
46
+ this.currentLayoutView = null; // Store the current layout view instance for reuse
47
+ this.currentPageView = null; // Store the current page view instance for reference in blocks and sections
48
+ this.currentViewType = null; // Track whether the current view is a page or layout for correct lifecycle handling
49
+ /** Current layout view info — reused if same layout */
50
+ this.currentLayout = null;
51
+ this.cachedLayouts = new Map(); // Cache for previously mounted layouts
52
+ /** All views in the current mount chain (outermost → innermost) */
53
+ this.viewStack = [];
54
+ /** Whether the manager has been initialized */
55
+ this._isInitialized = false;
56
+ /** Render counter for debugging */
57
+ this.renderCount = 0;
58
+ this.store = StoreService.instance("ViewManager");
59
+ this.blockManager = BlockManager;
60
+ if (app)
61
+ this.App = app;
62
+ }
63
+ isViewMounted(path) {
64
+ throw new Error("Method not implemented.");
65
+ }
66
+ destroy() {
67
+ throw new Error("Method not implemented.");
68
+ }
69
+ // ─── Configuration ──────────────────────────────────────────
70
+ /**
71
+ * Set the DI container reference.
72
+ */
73
+ setApp(app) {
74
+ this.App = app;
75
+ }
76
+ /**
77
+ * Set the root DOM container.
78
+ */
79
+ setContainer(container) {
80
+ this.container = container;
81
+ }
82
+ /**
83
+ * Get the root container element.
84
+ */
85
+ getContainer() {
86
+ return this.container;
87
+ }
88
+ /**
89
+ * Register view modules.
90
+ *
91
+ * @example
92
+ * viewManager.setViewRegistry({
93
+ * 'web.home': () => import('./views/web/home.js'),
94
+ * 'web.about': () => import('./views/web/about.js'),
95
+ * 'layouts.main': () => import('./views/layouts/main.js'),
96
+ * });
97
+ */
98
+ setViewRegistry(registry) {
99
+ this.viewRegistry = { ...this.viewRegistry, ...registry };
100
+ }
101
+ /**
102
+ * Register a single view module.
103
+ */
104
+ registerView(name, loader) {
105
+ this.viewRegistry[name] = loader;
106
+ }
107
+ /**
108
+ * Initialize the ViewManager.
109
+ */
110
+ init(config) {
111
+ if (config?.container) {
112
+ if (typeof config.container === 'string') {
113
+ const found = document.querySelector(config.container);
114
+ if (found instanceof HTMLElement) {
115
+ this.container = found;
116
+ }
117
+ else {
118
+ console.warn(`[ViewManager] Container selector "${config.container}" not found.`);
119
+ }
120
+ }
121
+ else {
122
+ this.container = config.container instanceof HTMLElement ? config.container : document.body;
123
+ }
124
+ }
125
+ if (!this.container) {
126
+ this.container = document.body; // Default to body if no container provided
127
+ }
128
+ this.rootElement = new Html({
129
+ ctx: this,
130
+ tagName: this.container.tagName.toLowerCase(),
131
+ element: this.container,
132
+ initMode: 'hydrate',
133
+ });
134
+ if (config?.registry) {
135
+ this.setViewRegistry(config.registry);
136
+ }
137
+ this._isInitialized = true;
138
+ }
139
+ showError(message, details) {
140
+ logger.error(message, details);
141
+ if (this.container) {
142
+ this.container.innerHTML = `<div style="padding: 20px; background: #fee; color: #900; border: 1px solid #900;">
143
+ <h2>Error</h2>
144
+ <p>${message}</p>
145
+ ${details ? `<pre style="white-space: pre-wrap; background: #fdd; padding: 10px; border: 1px solid #900;">${JSON.stringify(details, null, 2)}</pre>` : ''}
146
+ </div>`;
147
+ }
148
+ }
149
+ // ─── View Loading ───────────────────────────────────────────
150
+ hasView(name) {
151
+ return Object.prototype.hasOwnProperty.call(this.viewRegistry, name);
152
+ }
153
+ exists(name) {
154
+ return this.hasView(name);
155
+ }
156
+ view(name, data, cache) {
157
+ try {
158
+ if (cache && this.store.has(name)) {
159
+ const cachedView = this.store.get(name);
160
+ if (hasData(data)) {
161
+ cachedView?.__ctrl__.updateData(data);
162
+ }
163
+ return cachedView;
164
+ }
165
+ const factory = this.viewRegistry[name];
166
+ if (!factory || typeof factory !== 'function') {
167
+ logger.error(`View "${name}" not found in registry.`);
168
+ return null;
169
+ }
170
+ const view = factory(data ? { data } : {}, { App: this.App, View: this, ...this.systemData });
171
+ if (!view) {
172
+ logger.error(`Factory for view "${name}" did not return a valid view instance.`);
173
+ return null;
174
+ }
175
+ if (cache) {
176
+ this.store.set(name, view);
177
+ }
178
+ return view;
179
+ }
180
+ catch (err) {
181
+ logger.error(`Error loading view ${name}:`, err);
182
+ return null;
183
+ }
184
+ }
185
+ createRenderPageViewError(view, renderLevel, message) {
186
+ return {
187
+ type: 'error',
188
+ message: message ?? (renderLevel === 0
189
+ ? `View "${view.__ctrl__.path}" did not return any content from render().`
190
+ : `Nested view "${view.__ctrl__.path}" did not return any content from render().`),
191
+ view,
192
+ result: null,
193
+ superView: null,
194
+ finalView: view,
195
+ };
196
+ }
197
+ createRenderPageViewSuccess(view, result, superView, finalView) {
198
+ return {
199
+ type: 'success',
200
+ message: '',
201
+ view,
202
+ result,
203
+ superView,
204
+ finalView,
205
+ };
206
+ }
207
+ getRenderResultType(result) {
208
+ return isRenderableObject(result) ? result.oneType : OOTEnum.UNKNOWN;
209
+ }
210
+ async callViewRenderFactory(view, method = 'render', data = {}, mountRoot = null, initMode = InitModes.CREATE, cache = false, renderLevel = 0) {
211
+ const ctrl = view.__ctrl__;
212
+ if (hasData(data)) {
213
+ ctrl.updateData(data);
214
+ }
215
+ const result = method === 'render'
216
+ ? ctrl.render()
217
+ : (ctrl.prerender ? ctrl.prerender() : null);
218
+ if (!result) {
219
+ return this.createRenderPageViewError(view, renderLevel, `View "${ctrl.path}" returned nothing from ${method}().`);
220
+ }
221
+ const resultType = this.getRenderResultType(result);
222
+ if (resultType === OOTEnum.WRAPPER) {
223
+ return this.createRenderPageViewSuccess(view, result, null, view);
224
+ }
225
+ if (resultType === OOTEnum.VIEW) {
226
+ const superResult = await this.renderPageView(result, {}, mountRoot, initMode, cache, renderLevel + 1);
227
+ if (superResult.type === 'error') {
228
+ return { ...superResult, view };
229
+ }
230
+ return this.createRenderPageViewSuccess(view, result, superResult.view, superResult.finalView ?? result);
231
+ }
232
+ return this.createRenderPageViewError(view, renderLevel, `View "${ctrl.path}" returned invalid content (type: ${resultType}) from ${method}().`);
233
+ }
234
+ async renderPageView(view, data, mountRoot = null, initMode = InitModes.CREATE, cache = false, renderLevel = 0) {
235
+ try {
236
+ const ctrl = view.__ctrl__;
237
+ if (hasData(data)) {
238
+ ctrl.updateData(data);
239
+ }
240
+ const config = ctrl.getConfig();
241
+ const hasAsyncData = config.hasAwaitData || config.hasFetchData;
242
+ // ── Case 1: Không có async data → render ngay ──
243
+ if (!hasAsyncData) {
244
+ return this.callViewRenderFactory(view, 'render', data, mountRoot, initMode, cache, renderLevel);
245
+ }
246
+ // ── Resolve fetch URL từ ViewController config hoặc fallback Router ──
247
+ const App = app();
248
+ const Http = App.Http;
249
+ const fetchConfig = config.fetch;
250
+ const fetchUrl = (config.hasAwaitData && fetchConfig?.url) ? fetchConfig?.url : App.Router.getFullUrl();
251
+ // ── Case 2: Có async + có prerender → prerender skeleton trước, fetch sau ──
252
+ if (config.hasPrerender) {
253
+ const prerenderResult = await this.callViewRenderFactory(view, 'prerender', data, mountRoot, initMode, cache, renderLevel);
254
+ if (prerenderResult.type === 'error') {
255
+ logger.error(`Error prerendering view "${ctrl.path}":`, prerenderResult.message);
256
+ // Fallback: render trực tiếp không qua prerender
257
+ return this.callViewRenderFactory(view, 'render', data, mountRoot, initMode, cache, renderLevel);
258
+ }
259
+ // Fire-and-forget: fetch data rồi re-render thay thế skeleton
260
+ // TODO: Sau khi render() xong, cần swap DOM từ preloadElement → mainElement
261
+ // ViewController.wrapper() tự động lưu prerender vào preloadElement, render vào mainElement
262
+ // Cần bổ sung logic: unmount preloadElement khỏi DOM → mount mainElement vào cùng vị trí
263
+ Http.get(fetchUrl).then(async (response) => {
264
+ const asyncData = response?.data ?? {};
265
+ if (hasData(asyncData)) {
266
+ ctrl.updateData(asyncData);
267
+ }
268
+ const finalResult = await this.callViewRenderFactory(view, 'render', asyncData, mountRoot, initMode, cache, renderLevel);
269
+ if (finalResult.type === 'error') {
270
+ logger.error(`Error rendering view "${ctrl.path}" after async data fetch:`, finalResult.message);
271
+ }
272
+ // TODO: swap preloadElement → mainElement trong DOM
273
+ // ctrl.preloadElement?.destroy();
274
+ // ctrl.mainElement?.setParentElement(mountRoot);
275
+ // ctrl.mainElement?.render();
276
+ }).catch((err) => {
277
+ logger.error(`Error fetching async data for view "${ctrl.path}":`, err);
278
+ });
279
+ // Return prerender result ngay — mountView sẽ mount skeleton
280
+ return prerenderResult;
281
+ }
282
+ // ── Case 3: Có async + không prerender → await fetch rồi render ──
283
+ let asyncData = {};
284
+ try {
285
+ const response = await Http.get(fetchUrl);
286
+ asyncData = response?.data ?? {};
287
+ }
288
+ catch (err) {
289
+ logger.error(`Error fetching async data for view "${ctrl.path}":`, err);
290
+ }
291
+ if (!hasData(asyncData)) {
292
+ logger.warn(`View "${ctrl.path}" has async data config but fetch returned no data.`);
293
+ }
294
+ return this.callViewRenderFactory(view, 'render', asyncData, mountRoot, initMode, cache, renderLevel);
295
+ }
296
+ catch (err) {
297
+ logger.error(`Error rendering view ${view.__ctrl__.path}:`, err);
298
+ return this.createRenderPageViewError(view, renderLevel, `Error rendering view "${view.__ctrl__.path}".`);
299
+ }
300
+ }
301
+ // ─── Mount Orchestration ────────────────────────────────────
302
+ async mountView(name, data, route, navigationType = 'push') {
303
+ // ── Phase 1: Load view ──
304
+ const view = this.view(name, data ?? {}, true);
305
+ if (!view) {
306
+ this.showError(`Failed to load view "${name}".`);
307
+ return null;
308
+ }
309
+ const oldPageView = this.currentPageView;
310
+ const oldLayoutView = this.currentLayoutView;
311
+ const oldLayoutPath = this.currentLayoutPath;
312
+ view.__ctrl__.urlPath = route?.$urlPath ?? null;
313
+ if (oldLayoutView) {
314
+ oldLayoutView.__ctrl__.stop();
315
+ }
316
+ oldPageView?.__ctrl__.stop();
317
+ // ── Phase 2: Render chain ──
318
+ const renderResult = await this.renderPageView(view, data ?? {}, this.rootElement, InitModes.CREATE, true);
319
+ if (renderResult.type === 'error') {
320
+ this.showError(renderResult.message);
321
+ return null;
322
+ }
323
+ const pageView = renderResult.view;
324
+ const finalView = renderResult.finalView;
325
+ const hasSuperView = renderResult.superView !== null;
326
+ const newLayoutPath = hasSuperView ? finalView.__ctrl__.path : null;
327
+ // bắt đầu logic
328
+ // ── Phase 3: Classify mount scenario ──
329
+ const isSameLayout = hasSuperView
330
+ && oldLayoutView !== null
331
+ && finalView === oldLayoutView;
332
+ // ── Duplicate navigation guard ──
333
+ if (oldPageView === pageView
334
+ && view.__ctrl__.urlPath === oldPageView?.__ctrl__?.urlPath) {
335
+ return renderResult;
336
+ }
337
+ // ══════════════════════════════════════════════════════════
338
+ // Case 1: Có superView + cùng layout instance (reuse layout)
339
+ // ══════════════════════════════════════════════════════════
340
+ if (hasSuperView && isSameLayout) {
341
+ // Cắt origin chain cũ → gắn page mới vào layout
342
+ oldLayoutView.__ctrl__.ejectOriginChain();
343
+ pageView.__ctrl__.setChainFromOrigin();
344
+ // Mount block content mới vào layout outlets
345
+ this.blockManager.mountAll();
346
+ }
347
+ // ══════════════════════════════════════════════════════════
348
+ // Case 2: Có superView + layout khác (hoặc first mount có layout)
349
+ // ══════════════════════════════════════════════════════════
350
+ else if (hasSuperView) {
351
+ // Cleanup toàn bộ old views
352
+ oldLayoutView?.__ctrl__.ejectOriginChain();
353
+ this.stopPageView(oldPageView);
354
+ this.stopLayoutView(oldLayoutView);
355
+ this.blockManager.clearAllOutlets();
356
+ this.unmountLayoutDOM(oldLayoutView);
357
+ // Gắn origin chain cho layout mới
358
+ pageView.__ctrl__.setChainFromOrigin();
359
+ // Build DOM từ layout wrapper vào container
360
+ this.buildViewDOM(finalView);
361
+ // Mount block content vào layout outlets
362
+ this.blockManager.mountAll();
363
+ // Commit & Start toàn bộ chain
364
+ this.commitViewChain(pageView, finalView, true);
365
+ this.startViewChain(pageView, finalView, true);
366
+ }
367
+ // ══════════════════════════════════════════════════════════
368
+ // Case 3: Không có superView (standalone view)
369
+ // ══════════════════════════════════════════════════════════
370
+ else {
371
+ // Cleanup toàn bộ old views
372
+ oldLayoutView?.__ctrl__.ejectOriginChain();
373
+ this.stopPageView(oldPageView);
374
+ this.stopLayoutView(oldLayoutView);
375
+ this.blockManager.clearAllOutlets();
376
+ this.unmountLayoutDOM(oldLayoutView);
377
+ // Build DOM trực tiếp vào container
378
+ this.buildViewDOM(pageView);
379
+ // Commit & Start
380
+ this.commitViewChain(pageView, pageView, false);
381
+ this.startViewChain(pageView, pageView, false);
382
+ }
383
+ // ── Update state ──
384
+ this.currentPageView = pageView;
385
+ this.currentLayoutView = hasSuperView ? finalView : null;
386
+ this.currentLayoutPath = newLayoutPath;
387
+ this.currentViewType = hasSuperView ? 'layout' : 'view';
388
+ this.viewStack = hasSuperView ? [finalView, pageView] : [pageView];
389
+ this.renderCount++;
390
+ return renderResult;
391
+ }
392
+ // ─── DOM Building ───────────────────────────────────────────
393
+ /**
394
+ * Build DOM từ finalView's Wrapper vào container.
395
+ * Wrapper.render() sẽ execute childrenFactory → tạo DOM tree.
396
+ */
397
+ buildViewDOM(finalView) {
398
+ const wrapper = finalView.__ctrl__.mainElement;
399
+ if (!wrapper) {
400
+ logger.error(`[ViewManager] finalView "${finalView.__ctrl__.path}" has no mainElement (Wrapper).`);
401
+ return;
402
+ }
403
+ wrapper.setParentElement(this.rootElement);
404
+ wrapper.render();
405
+ }
406
+ // ─── Lifecycle: Stop ────────────────────────────────────────
407
+ stopPageView(pageView) {
408
+ if (!pageView)
409
+ return;
410
+ // Stop block content (tracked by BlockManager)
411
+ this.stopBlockContent();
412
+ // Fire onDeactivated hook
413
+ if (typeof pageView.onDeactivated === 'function') {
414
+ try {
415
+ pageView.onDeactivated();
416
+ }
417
+ catch (e) {
418
+ logger.error(`[ViewManager] onDeactivated error:`, e);
419
+ }
420
+ }
421
+ }
422
+ stopLayoutView(layoutView) {
423
+ if (!layoutView)
424
+ return;
425
+ const wrapper = layoutView.__ctrl__.mainElement;
426
+ if (wrapper && typeof wrapper.stop === 'function') {
427
+ wrapper.stop();
428
+ }
429
+ if (typeof layoutView.onDeactivated === 'function') {
430
+ try {
431
+ layoutView.onDeactivated();
432
+ }
433
+ catch (e) {
434
+ logger.error(`[ViewManager] layout onDeactivated error:`, e);
435
+ }
436
+ }
437
+ }
438
+ stopBlockContent() {
439
+ // BlockManager tracks mounted children per outlet
440
+ for (const [name, children] of this.blockManager.mountedChildren) {
441
+ if (Array.isArray(children)) {
442
+ for (const child of children) {
443
+ if (child && typeof child.stop === 'function') {
444
+ child.stop();
445
+ }
446
+ }
447
+ }
448
+ }
449
+ }
450
+ // ─── Lifecycle: Start ───────────────────────────────────────
451
+ startViewChain(pageView, finalView, hasSuperView) {
452
+ if (hasSuperView) {
453
+ // 1. Start layout element tree
454
+ this.startLayoutView(finalView);
455
+ // 2. Start page's block content
456
+ this.startBlockContent();
457
+ // 3. Fire page onMounted
458
+ if (typeof pageView.onMounted === 'function') {
459
+ try {
460
+ pageView.onMounted();
461
+ }
462
+ catch (e) {
463
+ logger.error(`[ViewManager] page onMounted error:`, e);
464
+ }
465
+ }
466
+ }
467
+ else {
468
+ // Standalone view — start wrapper tree directly
469
+ const wrapper = pageView.__ctrl__.mainElement;
470
+ if (wrapper && typeof wrapper.start === 'function') {
471
+ wrapper.start();
472
+ }
473
+ if (typeof pageView.onMounted === 'function') {
474
+ try {
475
+ pageView.onMounted();
476
+ }
477
+ catch (e) {
478
+ logger.error(`[ViewManager] onMounted error:`, e);
479
+ }
480
+ }
481
+ }
482
+ }
483
+ startLayoutView(layoutView) {
484
+ const wrapper = layoutView.__ctrl__.mainElement;
485
+ if (wrapper && typeof wrapper.start === 'function') {
486
+ wrapper.start();
487
+ }
488
+ if (typeof layoutView.onMounted === 'function') {
489
+ try {
490
+ layoutView.onMounted();
491
+ }
492
+ catch (e) {
493
+ logger.error(`[ViewManager] layout onMounted error:`, e);
494
+ }
495
+ }
496
+ }
497
+ startBlockContent() {
498
+ for (const [name, children] of this.blockManager.mountedChildren) {
499
+ if (Array.isArray(children)) {
500
+ for (const child of children) {
501
+ if (child && typeof child.start === 'function') {
502
+ child.start();
503
+ }
504
+ }
505
+ }
506
+ }
507
+ }
508
+ // ─── Lifecycle: Commit Data ─────────────────────────────────
509
+ commitViewChain(pageView, finalView, hasSuperView) {
510
+ if (hasSuperView) {
511
+ finalView.__ctrl__.commitData();
512
+ pageView.__ctrl__.commitData();
513
+ }
514
+ else {
515
+ pageView.__ctrl__.commitData();
516
+ }
517
+ }
518
+ // ─── Unmount ────────────────────────────────────────────────
519
+ unmountLayoutDOM(layoutView) {
520
+ if (!layoutView)
521
+ return;
522
+ const wrapper = layoutView.__ctrl__.mainElement;
523
+ if (wrapper && typeof wrapper.destroy === 'function') {
524
+ wrapper.destroy();
525
+ }
526
+ }
527
+ unmountAll() {
528
+ this.stopPageView(this.currentPageView);
529
+ this.stopLayoutView(this.currentLayoutView);
530
+ this.blockManager.clearAllOutlets();
531
+ this.blockManager.destroy();
532
+ if (this.currentPageView) {
533
+ this.currentPageView.__ctrl__.destroy();
534
+ }
535
+ if (this.currentLayoutView) {
536
+ this.currentLayoutView.__ctrl__.destroy();
537
+ }
538
+ this.currentPageView = null;
539
+ this.currentLayoutView = null;
540
+ this.currentLayoutPath = null;
541
+ this.currentViewType = null;
542
+ this.activeViews.clear();
543
+ this.viewStack = [];
544
+ }
545
+ unmountView(path) {
546
+ const info = this.activeViews.get(path);
547
+ if (!info)
548
+ return;
549
+ this.activeViews.delete(path);
550
+ }
551
+ // ─── Getters ────────────────────────────────────────────────
552
+ getCurrentLayout() {
553
+ return this.currentLayoutView;
554
+ }
555
+ getCurrentView() {
556
+ return this.currentPageView;
557
+ }
558
+ getViewStack() {
559
+ return this.viewStack;
560
+ }
561
+ isInitialized() {
562
+ return this._isInitialized;
563
+ }
564
+ }
565
+ //# sourceMappingURL=ViewManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewManager.js","sourceRoot":"","sources":["../../../../src/core/view/ViewManager.ts"],"names":[],"mappings":"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"}