slicejs-web-framework 3.1.1 → 3.1.3

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 (222) hide show
  1. package/Slice/Slice.js +1 -1
  2. package/Slice/tests/build-js-only-visual-components.test.js +24 -9
  3. package/package.json +1 -1
  4. package/.worktrees/bundling-v2-precompiled-registrars/LICENSE +0 -21
  5. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/ContextManager/ContextManager.js +0 -369
  6. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/ContextManager/ContextManagerDebugger.js +0 -297
  7. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Controller/Controller.js +0 -972
  8. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Debugger/Debugger.css +0 -620
  9. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Debugger/Debugger.html +0 -73
  10. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Debugger/Debugger.js +0 -1548
  11. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/EventManager/EventManager.js +0 -338
  12. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/EventManager/EventManagerDebugger.js +0 -361
  13. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Logger/Log.js +0 -10
  14. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Logger/Logger.js +0 -146
  15. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Router/Router.js +0 -721
  16. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/StylesManager/StylesManager.js +0 -78
  17. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/StylesManager/ThemeManager/ThemeManager.js +0 -84
  18. package/.worktrees/bundling-v2-precompiled-registrars/Slice/Slice.js +0 -504
  19. package/.worktrees/bundling-v2-precompiled-registrars/Slice/tests/bundle-v2-runtime-contract.test.js +0 -268
  20. package/.worktrees/bundling-v2-precompiled-registrars/Slice/tests/router-loading-finally.test.js +0 -68
  21. package/.worktrees/bundling-v2-precompiled-registrars/api/index.js +0 -286
  22. package/.worktrees/bundling-v2-precompiled-registrars/api/middleware/securityMiddleware.js +0 -253
  23. package/.worktrees/bundling-v2-precompiled-registrars/package.json +0 -37
  24. package/.worktrees/bundling-v2-precompiled-registrars/sliceConfig.schema.json +0 -109
  25. package/.worktrees/bundling-v2-precompiled-registrars/src/App/index.html +0 -22
  26. package/.worktrees/bundling-v2-precompiled-registrars/src/App/index.js +0 -23
  27. package/.worktrees/bundling-v2-precompiled-registrars/src/App/style.css +0 -40
  28. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/HomePage/HomePage.css +0 -201
  29. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/HomePage/HomePage.html +0 -37
  30. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/HomePage/HomePage.js +0 -210
  31. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/Playground/Playground.css +0 -12
  32. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/Playground/Playground.html +0 -0
  33. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/Playground/Playground.js +0 -111
  34. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Service/FetchManager/FetchManager.js +0 -133
  35. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Service/IndexedDbManager/IndexedDbManager.js +0 -141
  36. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Service/LocalStorageManager/LocalStorageManager.js +0 -45
  37. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Button/Button.css +0 -47
  38. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Button/Button.html +0 -5
  39. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Button/Button.js +0 -93
  40. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Card/Card.css +0 -68
  41. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Card/Card.html +0 -7
  42. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Card/Card.js +0 -107
  43. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Checkbox/Checkbox.css +0 -87
  44. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Checkbox/Checkbox.html +0 -8
  45. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Checkbox/Checkbox.js +0 -86
  46. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/CodeVisualizer/CodeVisualizer.css +0 -130
  47. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/CodeVisualizer/CodeVisualizer.html +0 -4
  48. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/CodeVisualizer/CodeVisualizer.js +0 -262
  49. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Details/Details.css +0 -70
  50. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Details/Details.html +0 -9
  51. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Details/Details.js +0 -76
  52. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/DropDown/DropDown.css +0 -60
  53. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/DropDown/DropDown.html +0 -5
  54. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/DropDown/DropDown.js +0 -63
  55. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Grid/Grid.css +0 -7
  56. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Grid/Grid.html +0 -1
  57. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Grid/Grid.js +0 -57
  58. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/Icon.css +0 -510
  59. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/Icon.html +0 -1
  60. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/Icon.js +0 -89
  61. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.eot +0 -0
  62. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.json +0 -555
  63. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.styl +0 -507
  64. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.svg +0 -1485
  65. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.symbol.svg +0 -1059
  66. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.ttf +0 -0
  67. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.woff +0 -0
  68. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.woff2 +0 -0
  69. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Input/Input.css +0 -91
  70. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Input/Input.html +0 -4
  71. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Input/Input.js +0 -215
  72. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Layout/Layout.css +0 -0
  73. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Layout/Layout.html +0 -0
  74. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Layout/Layout.js +0 -49
  75. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Link/Link.css +0 -8
  76. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Link/Link.html +0 -1
  77. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Link/Link.js +0 -63
  78. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Loading/Loading.css +0 -56
  79. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Loading/Loading.html +0 -83
  80. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Loading/Loading.js +0 -38
  81. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/MultiRoute/MultiRoute.js +0 -93
  82. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Navbar/Navbar.css +0 -115
  83. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Navbar/Navbar.html +0 -44
  84. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Navbar/Navbar.js +0 -141
  85. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/NotFound/NotFound.css +0 -117
  86. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/NotFound/NotFound.html +0 -24
  87. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/NotFound/NotFound.js +0 -16
  88. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Route/Route.js +0 -93
  89. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Select/Select.css +0 -84
  90. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Select/Select.html +0 -8
  91. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Select/Select.js +0 -195
  92. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Switch/Switch.css +0 -76
  93. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Switch/Switch.html +0 -8
  94. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Switch/Switch.js +0 -102
  95. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeItem/TreeItem.css +0 -36
  96. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeItem/TreeItem.html +0 -1
  97. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeItem/TreeItem.js +0 -126
  98. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeView/TreeView.css +0 -8
  99. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeView/TreeView.html +0 -1
  100. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeView/TreeView.js +0 -48
  101. package/.worktrees/bundling-v2-precompiled-registrars/src/Components/components.js +0 -27
  102. package/.worktrees/bundling-v2-precompiled-registrars/src/Styles/sliceStyles.css +0 -34
  103. package/.worktrees/bundling-v2-precompiled-registrars/src/Themes/Dark.css +0 -42
  104. package/.worktrees/bundling-v2-precompiled-registrars/src/Themes/Light.css +0 -31
  105. package/.worktrees/bundling-v2-precompiled-registrars/src/Themes/Slice.css +0 -47
  106. package/.worktrees/bundling-v2-precompiled-registrars/src/images/Slice.js-logo.png +0 -0
  107. package/.worktrees/bundling-v2-precompiled-registrars/src/images/favicon.ico +0 -0
  108. package/.worktrees/bundling-v2-precompiled-registrars/src/images/im2/Slice.js-logo.png +0 -0
  109. package/.worktrees/bundling-v2-precompiled-registrars/src/routes.js +0 -16
  110. package/.worktrees/bundling-v2-precompiled-registrars/src/sliceConfig.json +0 -73
  111. package/.worktrees/bundling-v2-precompiled-registrars/src/testing.js +0 -888
  112. package/.worktrees/public-env-browser-exposure/LICENSE +0 -21
  113. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/ContextManager/ContextManager.js +0 -369
  114. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/ContextManager/ContextManagerDebugger.js +0 -297
  115. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Controller/Controller.js +0 -972
  116. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Debugger/Debugger.css +0 -620
  117. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Debugger/Debugger.html +0 -73
  118. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Debugger/Debugger.js +0 -1548
  119. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/EventManager/EventManager.js +0 -338
  120. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/EventManager/EventManagerDebugger.js +0 -361
  121. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Logger/Log.js +0 -10
  122. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Logger/Logger.js +0 -146
  123. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Router/Router.js +0 -721
  124. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/StylesManager/StylesManager.js +0 -78
  125. package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/StylesManager/ThemeManager/ThemeManager.js +0 -84
  126. package/.worktrees/public-env-browser-exposure/Slice/Slice.js +0 -533
  127. package/.worktrees/public-env-browser-exposure/Slice/tests/bundle-v2-runtime-contract.test.js +0 -268
  128. package/.worktrees/public-env-browser-exposure/Slice/tests/public-env-runtime-accessors.test.js +0 -44
  129. package/.worktrees/public-env-browser-exposure/Slice/tests/router-loading-finally.test.js +0 -68
  130. package/.worktrees/public-env-browser-exposure/api/index.js +0 -286
  131. package/.worktrees/public-env-browser-exposure/api/middleware/securityMiddleware.js +0 -253
  132. package/.worktrees/public-env-browser-exposure/api/tests/public-env-resolver.test.js +0 -193
  133. package/.worktrees/public-env-browser-exposure/api/utils/publicEnvResolver.js +0 -117
  134. package/.worktrees/public-env-browser-exposure/package.json +0 -37
  135. package/.worktrees/public-env-browser-exposure/sliceConfig.schema.json +0 -109
  136. package/.worktrees/public-env-browser-exposure/src/App/index.html +0 -22
  137. package/.worktrees/public-env-browser-exposure/src/App/index.js +0 -23
  138. package/.worktrees/public-env-browser-exposure/src/App/style.css +0 -40
  139. package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/HomePage/HomePage.css +0 -201
  140. package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/HomePage/HomePage.html +0 -37
  141. package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/HomePage/HomePage.js +0 -210
  142. package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/Playground/Playground.css +0 -12
  143. package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/Playground/Playground.html +0 -0
  144. package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/Playground/Playground.js +0 -111
  145. package/.worktrees/public-env-browser-exposure/src/Components/Service/FetchManager/FetchManager.js +0 -133
  146. package/.worktrees/public-env-browser-exposure/src/Components/Service/IndexedDbManager/IndexedDbManager.js +0 -141
  147. package/.worktrees/public-env-browser-exposure/src/Components/Service/LocalStorageManager/LocalStorageManager.js +0 -45
  148. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Button/Button.css +0 -47
  149. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Button/Button.html +0 -5
  150. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Button/Button.js +0 -93
  151. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Card/Card.css +0 -68
  152. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Card/Card.html +0 -7
  153. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Card/Card.js +0 -107
  154. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Checkbox/Checkbox.css +0 -87
  155. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Checkbox/Checkbox.html +0 -8
  156. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Checkbox/Checkbox.js +0 -86
  157. package/.worktrees/public-env-browser-exposure/src/Components/Visual/CodeVisualizer/CodeVisualizer.css +0 -130
  158. package/.worktrees/public-env-browser-exposure/src/Components/Visual/CodeVisualizer/CodeVisualizer.html +0 -4
  159. package/.worktrees/public-env-browser-exposure/src/Components/Visual/CodeVisualizer/CodeVisualizer.js +0 -262
  160. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Details/Details.css +0 -70
  161. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Details/Details.html +0 -9
  162. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Details/Details.js +0 -76
  163. package/.worktrees/public-env-browser-exposure/src/Components/Visual/DropDown/DropDown.css +0 -60
  164. package/.worktrees/public-env-browser-exposure/src/Components/Visual/DropDown/DropDown.html +0 -5
  165. package/.worktrees/public-env-browser-exposure/src/Components/Visual/DropDown/DropDown.js +0 -63
  166. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Grid/Grid.css +0 -7
  167. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Grid/Grid.html +0 -1
  168. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Grid/Grid.js +0 -57
  169. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/Icon.css +0 -510
  170. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/Icon.html +0 -1
  171. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/Icon.js +0 -89
  172. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.eot +0 -0
  173. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.json +0 -555
  174. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.styl +0 -507
  175. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.svg +0 -1485
  176. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.symbol.svg +0 -1059
  177. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.ttf +0 -0
  178. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.woff +0 -0
  179. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.woff2 +0 -0
  180. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Input/Input.css +0 -91
  181. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Input/Input.html +0 -4
  182. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Input/Input.js +0 -215
  183. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Layout/Layout.css +0 -0
  184. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Layout/Layout.html +0 -0
  185. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Layout/Layout.js +0 -49
  186. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Link/Link.css +0 -8
  187. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Link/Link.html +0 -1
  188. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Link/Link.js +0 -63
  189. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Loading/Loading.css +0 -56
  190. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Loading/Loading.html +0 -83
  191. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Loading/Loading.js +0 -38
  192. package/.worktrees/public-env-browser-exposure/src/Components/Visual/MultiRoute/MultiRoute.js +0 -93
  193. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Navbar/Navbar.css +0 -115
  194. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Navbar/Navbar.html +0 -44
  195. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Navbar/Navbar.js +0 -141
  196. package/.worktrees/public-env-browser-exposure/src/Components/Visual/NotFound/NotFound.css +0 -117
  197. package/.worktrees/public-env-browser-exposure/src/Components/Visual/NotFound/NotFound.html +0 -24
  198. package/.worktrees/public-env-browser-exposure/src/Components/Visual/NotFound/NotFound.js +0 -16
  199. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Route/Route.js +0 -93
  200. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Select/Select.css +0 -84
  201. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Select/Select.html +0 -8
  202. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Select/Select.js +0 -195
  203. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Switch/Switch.css +0 -76
  204. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Switch/Switch.html +0 -8
  205. package/.worktrees/public-env-browser-exposure/src/Components/Visual/Switch/Switch.js +0 -102
  206. package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeItem/TreeItem.css +0 -36
  207. package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeItem/TreeItem.html +0 -1
  208. package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeItem/TreeItem.js +0 -126
  209. package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeView/TreeView.css +0 -8
  210. package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeView/TreeView.html +0 -1
  211. package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeView/TreeView.js +0 -48
  212. package/.worktrees/public-env-browser-exposure/src/Components/components.js +0 -27
  213. package/.worktrees/public-env-browser-exposure/src/Styles/sliceStyles.css +0 -34
  214. package/.worktrees/public-env-browser-exposure/src/Themes/Dark.css +0 -42
  215. package/.worktrees/public-env-browser-exposure/src/Themes/Light.css +0 -31
  216. package/.worktrees/public-env-browser-exposure/src/Themes/Slice.css +0 -47
  217. package/.worktrees/public-env-browser-exposure/src/images/Slice.js-logo.png +0 -0
  218. package/.worktrees/public-env-browser-exposure/src/images/favicon.ico +0 -0
  219. package/.worktrees/public-env-browser-exposure/src/images/im2/Slice.js-logo.png +0 -0
  220. package/.worktrees/public-env-browser-exposure/src/routes.js +0 -16
  221. package/.worktrees/public-env-browser-exposure/src/sliceConfig.json +0 -73
  222. package/.worktrees/public-env-browser-exposure/src/testing.js +0 -888
@@ -1,78 +0,0 @@
1
-
2
- export default class StylesManager {
3
- constructor() {
4
- this.componentStyles = document.createElement('style');
5
- this.componentStyles.id = 'slice-component-styles';
6
- document.head.appendChild(this.componentStyles);
7
-
8
- }
9
-
10
- /**
11
- * Load global styles and initialize ThemeManager if enabled.
12
- * @returns {Promise<void>}
13
- */
14
- async init() {
15
- const requestedStyles = Array.isArray(slice.stylesConfig.requestedStyles)
16
- ? slice.stylesConfig.requestedStyles
17
- : [];
18
-
19
- const styleResults = await Promise.all(
20
- requestedStyles.map(async (styleName) => {
21
- const styles = await slice.controller.fetchText(styleName, 'styles');
22
- return { styleName, styles };
23
- })
24
- );
25
-
26
- for (const { styleName, styles } of styleResults) {
27
- this.appendComponentStyles(styles);
28
- slice.logger.logInfo('StylesManager', `${styleName} styles loaded`);
29
- }
30
-
31
- if (slice.themeConfig.enabled) {
32
- const ThemeManagerClass = slice.frameworkClasses?.ThemeManager
33
- || await slice.getClass(`${slice.paths.structuralComponentFolderPath}/StylesManager/ThemeManager/ThemeManager.js`);
34
- if (!ThemeManagerClass) {
35
- throw new Error('ThemeManager not available');
36
- }
37
-
38
- this.themeManager = new ThemeManagerClass();
39
- let theme;
40
-
41
- if (slice.themeConfig.saveThemeLocally) {
42
- theme = localStorage.getItem('sliceTheme');
43
- }
44
-
45
- if (!theme) {
46
- theme = slice.themeConfig.defaultTheme;
47
- }
48
-
49
- if (slice.themeConfig.useBrowserTheme) {
50
- const browserTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'Dark' : 'Light';
51
- theme = browserTheme;
52
- }
53
-
54
- await this.themeManager.applyTheme(theme);
55
- }
56
- }
57
-
58
- //add a method that will add css as text to the componentStyles element
59
- /**
60
- * Append raw CSS to the global component style tag.
61
- * @param {string} cssText
62
- * @returns {void}
63
- */
64
- appendComponentStyles(cssText) {
65
- this.componentStyles.appendChild(document.createTextNode(cssText));
66
- }
67
-
68
- /**
69
- * Register CSS for a component.
70
- * @param {string} componentName
71
- * @param {string} cssText
72
- * @returns {void}
73
- */
74
- registerComponentStyles(componentName, cssText) {
75
- slice.controller.requestedStyles.add(componentName);
76
- this.appendComponentStyles(cssText);
77
- }
78
- }
@@ -1,84 +0,0 @@
1
- /**
2
- * Manages theme CSS loading and persistence.
3
- */
4
- export default class ThemeManager {
5
- constructor() {
6
- this.themeStyles = new Map();
7
- this.currentTheme = null;
8
- this.themeStyle = document.createElement('style');
9
- document.head.appendChild(this.themeStyle);
10
- }
11
-
12
- /**
13
- * Apply a theme by name.
14
- * @param {string} themeName
15
- * @returns {Promise<void>}
16
- */
17
- async applyTheme(themeName) {
18
- if (!themeName) {
19
- slice.logger.logError('ThemeManager', 'Invalid theme name');
20
- return;
21
- }
22
-
23
- if (!this.themeStyles.has(themeName)) {
24
- await this.loadThemeCSS(themeName);
25
- } else {
26
- this.setThemeStyle(themeName);
27
- this.saveThemeLocally(themeName, this.themeStyles.get(themeName));
28
- }
29
- }
30
-
31
- /**
32
- * Load theme CSS and cache it.
33
- * @param {string} themeName
34
- * @returns {Promise<void>}
35
- */
36
- async loadThemeCSS(themeName) {
37
- let themeContent =
38
- localStorage.getItem(`sliceTheme-${themeName}`) || (await slice.controller.fetchText(themeName, 'theme'));
39
-
40
- if (!themeContent) {
41
- slice.logger.logError('ThemeManager', `Failed to load theme: ${themeName}`);
42
- return;
43
- }
44
-
45
- this.themeStyles.set(themeName, themeContent);
46
- this.setThemeStyle(themeName);
47
- this.saveThemeLocally(themeName, themeContent);
48
- }
49
-
50
- /**
51
- * Persist a theme in localStorage when enabled.
52
- * @param {string} themeName
53
- * @param {string} themeContent
54
- * @returns {void}
55
- */
56
- saveThemeLocally(themeName, themeContent) {
57
- if (slice.themeConfig.saveThemeLocally) {
58
- localStorage.setItem('sliceTheme', themeName);
59
- localStorage.setItem(`sliceTheme-${themeName}`, themeContent);
60
- slice.logger.logInfo('ThemeManager', `Theme ${themeName} saved locally`);
61
- }
62
- }
63
-
64
- /**
65
- * Clear currently applied theme styles.
66
- * @returns {void}
67
- */
68
- removeCurrentTheme() {
69
- if (this.currentTheme) {
70
- this.themeStyle.textContent = '';
71
- }
72
- }
73
-
74
- /**
75
- * Set theme style text and mark current theme.
76
- * @param {string} themeName
77
- * @returns {void}
78
- */
79
- setThemeStyle(themeName) {
80
- this.themeStyle.textContent = this.themeStyles.get(themeName);
81
- this.currentTheme = themeName;
82
- slice.logger.logInfo('ThemeManager', `Theme ${themeName} applied`);
83
- }
84
- }
@@ -1,533 +0,0 @@
1
-
2
- /**
3
- * Main Slice.js runtime.
4
- */
5
- export default class Slice {
6
- /**
7
- * @param {Object} sliceConfig
8
- */
9
- constructor(sliceConfig, frameworkClasses = null) {
10
- this.frameworkClasses = frameworkClasses;
11
- const ControllerClass = frameworkClasses?.Controller;
12
- const StylesManagerClass = frameworkClasses?.StylesManager;
13
-
14
- this.controller = ControllerClass ? new ControllerClass() : null;
15
- this.stylesManager = StylesManagerClass ? new StylesManagerClass() : null;
16
- this.paths = sliceConfig.paths;
17
- this.themeConfig = sliceConfig.themeManager;
18
- this.stylesConfig = sliceConfig.stylesManager;
19
- this.loggerConfig = sliceConfig.logger;
20
- this.debuggerConfig = sliceConfig.debugger;
21
- this.loadingConfig = sliceConfig.loading;
22
- this.eventsConfig = sliceConfig.events;
23
-
24
- // Default to production until init() resolves the actual mode.
25
- // Safe to call isProduction() before init() completes.
26
- this._mode = 'production';
27
- this._publicEnv = {};
28
-
29
- // 📦 Bundle system is initialized automatically via import in index.js
30
- }
31
-
32
- /**
33
- * Dynamically import a module and return its default export.
34
- * @param {string} module
35
- * @returns {Promise<any>}
36
- */
37
- async getClass(module) {
38
- try {
39
- const { default: myClass } = await import(module);
40
- return await myClass;
41
- } catch (error) {
42
- this.logger.logError('Slice', `Error loading class ${module}`, error);
43
- }
44
- }
45
-
46
- /**
47
- * Returns true when running in production mode.
48
- * Reliable after init() has completed.
49
- * @returns {boolean}
50
- */
51
- isProduction() {
52
- return this._mode === 'production';
53
- }
54
-
55
- setPublicEnv(envPayload = {}) {
56
- const normalized = {};
57
-
58
- for (const [key, value] of Object.entries(envPayload || {})) {
59
- if (!key.startsWith('SLICE_PUBLIC_')) continue;
60
- normalized[key] = String(value ?? '');
61
- }
62
-
63
- this._publicEnv = normalized;
64
- }
65
-
66
- getEnv(name, fallbackValue = undefined) {
67
- if (!name || typeof name !== 'string') {
68
- return fallbackValue;
69
- }
70
-
71
- if (Object.prototype.hasOwnProperty.call(this._publicEnv, name)) {
72
- return this._publicEnv[name];
73
- }
74
-
75
- return fallbackValue;
76
- }
77
-
78
- getPublicEnv() {
79
- return { ...this._publicEnv };
80
- }
81
-
82
- /**
83
- * Get a component instance by sliceId.
84
- * @param {string} componentSliceId
85
- * @returns {HTMLElement|undefined}
86
- */
87
- getComponent(componentSliceId) {
88
- return this.controller.activeComponents.get(componentSliceId);
89
- }
90
-
91
- /**
92
- * Build a component instance and run init.
93
- * @param {string} componentName
94
- * @param {Object} [props]
95
- * @returns {Promise<HTMLElement|Object|null>}
96
- */
97
- async build(componentName, props = {}) {
98
- if (!componentName) {
99
- this.logger.logError('Slice', null, `Component name is required to build a component`);
100
- return null;
101
- }
102
-
103
- if (typeof componentName !== 'string') {
104
- this.logger.logError('Slice', null, `Component name must be a string`);
105
- return null;
106
- }
107
-
108
- if (!this.controller.componentCategories.has(componentName)) {
109
- this.logger.logError('Slice', null, `Component ${componentName} not found in components.js file`);
110
- return null;
111
- }
112
-
113
- // 📦 Try to load from bundles first
114
- const bundleName = this.controller.getBundleForComponent(componentName);
115
- if (bundleName && !this.controller.loadedBundles.has(bundleName)) {
116
- await this.controller.loadBundle(bundleName);
117
- }
118
-
119
- let componentCategory = this.controller.componentCategories.get(componentName);
120
-
121
- // 📦 Check if component is already available from loaded bundles
122
- const isFromBundle = this.controller.isComponentFromBundle(componentName);
123
-
124
- if (componentCategory === 'Structural') {
125
- this.logger.logError(
126
- 'Slice',
127
- null,
128
- `Component ${componentName} is a Structural component and cannot be built`
129
- );
130
- return null;
131
- }
132
-
133
- let isVisual = slice.paths.components[componentCategory].type === 'Visual';
134
- let modulePath = `${slice.paths.components[componentCategory].path}/${componentName}/${componentName}.js`;
135
-
136
- // Load template, class, and CSS concurrently if needed
137
- try {
138
- // 📦 Skip individual loading if component is available from bundles
139
- const loadTemplate =
140
- isFromBundle || !isVisual || this.controller.templates.has(componentName)
141
- ? Promise.resolve(null)
142
- : this.controller.fetchText(componentName, 'html', componentCategory);
143
-
144
- const loadClass =
145
- isFromBundle || this.controller.classes.has(componentName)
146
- ? Promise.resolve(null)
147
- : this.getClass(modulePath);
148
-
149
- const loadCSS =
150
- isFromBundle || !isVisual || this.controller.requestedStyles.has(componentName)
151
- ? Promise.resolve(null)
152
- : this.controller.fetchText(componentName, 'css', componentCategory);
153
-
154
- const [html, ComponentClass, css] = await Promise.all([loadTemplate, loadClass, loadCSS]);
155
-
156
- // 📦 If component is from bundle but not in cache, it should have been registered by registerBundle
157
- if (isFromBundle) {
158
- console.log(`📦 Using bundled component: ${componentName}`);
159
- }
160
-
161
- if (html || html === '') {
162
- const template = document.createElement('template');
163
- template.innerHTML = html;
164
- this.controller.templates.set(componentName, template);
165
- this.logger.logInfo('Slice', `Template ${componentName} loaded`);
166
- }
167
-
168
- if (ComponentClass) {
169
- this.controller.classes.set(componentName, ComponentClass);
170
- this.logger.logInfo('Slice', `Class ${componentName} loaded`);
171
- }
172
-
173
- if (css) {
174
- this.stylesManager.registerComponentStyles(componentName, css);
175
- this.logger.logInfo('Slice', `CSS ${componentName} loaded`);
176
- }
177
- } catch (error) {
178
- console.log(error);
179
- this.logger.logError('Slice', `Error loading resources for ${componentName}`, error);
180
- return null;
181
- }
182
-
183
- // Create instance
184
- try {
185
- let componentIds = {};
186
- if (props.id) componentIds.id = props.id;
187
- if (props.sliceId) componentIds.sliceId = props.sliceId;
188
-
189
- delete props.id;
190
- delete props.sliceId;
191
-
192
- const ComponentClass = this.controller.classes.get(componentName);
193
- if (componentName === 'Loading') {
194
- console.log('🔎 Build component: Loading', {
195
- classType: typeof ComponentClass,
196
- isFunction: typeof ComponentClass === 'function',
197
- classValue: ComponentClass
198
- });
199
- }
200
- if (componentName === 'InputSearchDocs' || componentName === 'MainMenu') {
201
- console.log(`🔎 Build component: ${componentName}`, {
202
- classType: typeof ComponentClass,
203
- isFunction: typeof ComponentClass === 'function',
204
- classValue: ComponentClass
205
- });
206
- }
207
- const componentInstance = new ComponentClass(props);
208
-
209
- if (componentIds.id && isVisual) componentInstance.id = componentIds.id;
210
- if (componentIds.sliceId) componentInstance.sliceId = componentIds.sliceId;
211
-
212
- if (!this.controller.verifyComponentIds(componentInstance)) {
213
- this.logger.logError('Slice', `Error registering instance ${componentName} ${componentInstance.sliceId}`);
214
- return null;
215
- }
216
-
217
- if (componentInstance.init) await componentInstance.init();
218
-
219
- if (slice.debuggerConfig.enabled && isVisual) {
220
- this.debugger.attachDebugMode(componentInstance);
221
- }
222
-
223
- this.controller.registerComponent(componentInstance);
224
- if (isVisual) {
225
- this.controller.registerComponentsRecursively(componentInstance);
226
- }
227
-
228
- this.logger.logInfo('Slice', `Instance ${componentInstance.sliceId} created`);
229
- return componentInstance;
230
- } catch (error) {
231
- console.log(error);
232
- this.logger.logError('Slice', `Error creating instance ${componentName}`, error);
233
- return null;
234
- }
235
- }
236
-
237
- /**
238
- * Apply a theme by name.
239
- * @param {string} themeName
240
- * @returns {Promise<void>}
241
- */
242
- async setTheme(themeName) {
243
- await this.stylesManager.themeManager.applyTheme(themeName);
244
- }
245
-
246
- /**
247
- * Current theme name.
248
- * @returns {string|null}
249
- */
250
- get theme() {
251
- return this.stylesManager.themeManager.currentTheme;
252
- }
253
-
254
- /**
255
- * Attach HTML template to a component instance.
256
- * @param {HTMLElement} componentInstance
257
- * @returns {void}
258
- */
259
- attachTemplate(componentInstance) {
260
- this.controller.loadTemplateToComponent(componentInstance);
261
- }
262
- }
263
-
264
- async function loadConfig() {
265
- try {
266
- const response = await fetch('/sliceConfig.json'); // 🔹 Express lo sirve desde `src/`
267
- if (!response.ok) throw new Error('Error loading sliceConfig.json');
268
- const json = await response.json();
269
- return json;
270
- } catch (error) {
271
- console.error(`Error loading config file: ${error.message}`);
272
- return null;
273
- }
274
- }
275
-
276
- async function init() {
277
- const sliceConfig = await loadConfig();
278
- if (!sliceConfig) {
279
- //Display error message in console with colors and alert in english
280
- console.error('%c⛔️ Error loading Slice configuration ⛔️', 'color: red; font-size: 20px;');
281
- alert('Error loading Slice configuration');
282
- return;
283
- }
284
-
285
- // 1+2. Fetch mode endpoint and bundle config in parallel — both are independent.
286
- // In production, /slice-env.json returns 404 (catch is expected and normal).
287
- // bundleConfigJson.production serves as a mode fallback when env endpoint is absent.
288
- let frameworkClasses = null;
289
- const [envResult, configResult] = await Promise.all([
290
- fetch('/slice-env.json', { cache: 'no-store' })
291
- .then(r => r.ok ? r.json() : null)
292
- .catch(() => null),
293
- fetch('/bundles/bundle.config.json', { cache: 'no-store' })
294
- .then(r => r.ok ? r.json() : null)
295
- .catch(() => null)
296
- ]);
297
- const envMode = envResult?.mode ?? null;
298
- const bundleConfigJson = configResult;
299
-
300
- // 3. Determine canonical mode: env endpoint takes precedence, then bundle config
301
- let resolvedMode;
302
- if (envMode) {
303
- resolvedMode = envMode;
304
- } else if (bundleConfigJson?.production) {
305
- resolvedMode = 'production';
306
- } else {
307
- resolvedMode = 'development';
308
- }
309
-
310
- // 4. Load framework classes.
311
- // In production the bundler generates slice-bundle.framework.js which
312
- // sets window.SLICE_FRAMEWORK_CLASSES. In dev mode always use individual
313
- // imports so the live /Slice/ source is served directly without bundles.
314
- if (resolvedMode === 'production' && bundleConfigJson?.bundles?.framework?.file) {
315
- try {
316
- await import(`/bundles/${bundleConfigJson.bundles.framework.file}`);
317
- if (window.SLICE_FRAMEWORK_CLASSES) {
318
- frameworkClasses = window.SLICE_FRAMEWORK_CLASSES;
319
- }
320
- } catch (e) {
321
- // framework bundle failed — fall through to individual imports
322
- console.error('[Slice.js] framework bundle import failed:', e?.message || e);
323
- }
324
- }
325
-
326
- if (!frameworkClasses) {
327
- try {
328
- const imports = await Promise.all([
329
- import('./Components/Structural/Controller/Controller.js'),
330
- import('./Components/Structural/StylesManager/StylesManager.js')
331
- ]);
332
- frameworkClasses = {
333
- Controller: imports[0].default,
334
- StylesManager: imports[1].default
335
- };
336
- } catch (e) {
337
- console.error('[Slice.js] individual imports fallback failed:', e?.message || e);
338
- throw e;
339
- }
340
- }
341
-
342
- // 5. Create Slice instance and set resolved mode
343
- window.slice = new Slice(sliceConfig, frameworkClasses);
344
- window.slice._mode = resolvedMode;
345
- window.slice.setPublicEnv(envResult?.env || {});
346
-
347
- const createBundlingInitError = (step, error) => {
348
- const detail = error instanceof Error ? error.message : String(error);
349
- return new Error(`Bundling V2 initialization failed (${step}): ${detail}`, { cause: error });
350
- };
351
-
352
- // Initialize bundles before building components.
353
- // Only in production — dev mode loads each component individually from source.
354
- // bundleConfigJson was already fetched above (step 2); reuse it.
355
- if (resolvedMode === 'production' && bundleConfigJson) {
356
- window.slice.controller.bundleConfig = bundleConfigJson;
357
- }
358
-
359
- if (resolvedMode === 'production' && window.slice.controller.bundleConfig) {
360
- const config = window.slice.controller.bundleConfig;
361
- const criticalFile = config?.bundles?.critical?.file;
362
- if (criticalFile) {
363
- try {
364
- await window.slice.controller.loadBundle('critical');
365
- } catch (error) {
366
- throw createBundlingInitError(`critical bundle "${criticalFile}"`, error);
367
- }
368
- }
369
-
370
- const routeBundles = config?.routeBundles || {};
371
- const initialPath = window.location.pathname || '/';
372
- const bundlesForRoute = routeBundles[initialPath] || [];
373
-
374
- const loadRouteBundles = async () => {
375
- for (const bundleName of bundlesForRoute) {
376
- if (bundleName === 'critical') continue;
377
- const bundleInfo = config?.bundles?.routes?.[bundleName];
378
- if (!bundleInfo?.file) continue;
379
- await window.slice.controller.loadBundle(bundleName);
380
- }
381
- };
382
-
383
- const preloadRouteBundles = () => {
384
- loadRouteBundles().catch((error) => {
385
- const bundlingError = createBundlingInitError(
386
- `idle route preload "${initialPath}"`,
387
- error
388
- );
389
- queueMicrotask(() => {
390
- throw bundlingError;
391
- });
392
- });
393
- };
394
-
395
- if (typeof requestIdleCallback === 'function') {
396
- requestIdleCallback(() => preloadRouteBundles());
397
- } else {
398
- setTimeout(() => preloadRouteBundles(), 0);
399
- }
400
- }
401
-
402
- slice.paths.structuralComponentFolderPath = '/Slice/Components/Structural';
403
-
404
- if (sliceConfig.logger.enabled) {
405
- const LoggerModule = window.slice.frameworkClasses?.Logger
406
- || await window.slice.getClass(`${slice.paths.structuralComponentFolderPath}/Logger/Logger.js`);
407
- window.slice.logger = new LoggerModule();
408
- } else {
409
- window.slice.logger = {
410
- logError: () => {},
411
- logWarning: () => {},
412
- logInfo: () => {},
413
- };
414
- }
415
-
416
- if (sliceConfig.debugger.enabled) {
417
- const DebuggerModule = window.slice.frameworkClasses?.Debugger
418
- || await window.slice.getClass(`${slice.paths.structuralComponentFolderPath}/Debugger/Debugger.js`);
419
- window.slice.debugger = new DebuggerModule();
420
- await window.slice.debugger.enableDebugMode();
421
- document.body.appendChild(window.slice.debugger);
422
- }
423
-
424
- if (sliceConfig.events?.ui?.enabled) {
425
- const EventsDebuggerModule = window.slice.frameworkClasses?.EventManagerDebugger
426
- || await window.slice.getClass(`${slice.paths.structuralComponentFolderPath}/EventManager/EventManagerDebugger.js`);
427
- window.slice.eventsDebugger = new EventsDebuggerModule();
428
- await window.slice.eventsDebugger.init();
429
- document.body.appendChild(window.slice.eventsDebugger);
430
- }
431
-
432
- if (sliceConfig.context?.ui?.enabled) {
433
- const ContextDebuggerModule = window.slice.frameworkClasses?.ContextManagerDebugger
434
- || await window.slice.getClass(`${slice.paths.structuralComponentFolderPath}/ContextManager/ContextManagerDebugger.js`);
435
- window.slice.contextDebugger = new ContextDebuggerModule();
436
- await window.slice.contextDebugger.init();
437
- document.body.appendChild(window.slice.contextDebugger);
438
- }
439
-
440
- if (sliceConfig.events?.enabled) {
441
- const EventManagerModule = window.slice.frameworkClasses?.EventManager
442
- || await window.slice.getClass(`${slice.paths.structuralComponentFolderPath}/EventManager/EventManager.js`);
443
- window.slice.events = new EventManagerModule();
444
- if (typeof window.slice.events.init === 'function') {
445
- await window.slice.events.init();
446
- }
447
- } else {
448
- window.slice.events = {
449
- subscribe: () => null,
450
- subscribeOnce: () => null,
451
- unsubscribe: () => false,
452
- emit: () => {},
453
- bind: () => ({
454
- subscribe: () => null,
455
- subscribeOnce: () => null,
456
- emit: () => {},
457
- }),
458
- cleanupComponent: () => 0,
459
- hasSubscribers: () => false,
460
- subscriberCount: () => 0,
461
- clear: () => {},
462
- };
463
- window.slice.logger.logError('Slice', 'EventManager disabled');
464
- }
465
-
466
- if (sliceConfig.context?.enabled) {
467
- const ContextManagerModule = window.slice.frameworkClasses?.ContextManager
468
- || await window.slice.getClass(`${slice.paths.structuralComponentFolderPath}/ContextManager/ContextManager.js`);
469
- window.slice.context = new ContextManagerModule();
470
- if (typeof window.slice.context.init === 'function') {
471
- await window.slice.context.init();
472
- }
473
- } else {
474
- window.slice.context = {
475
- create: () => false,
476
- getState: () => null,
477
- setState: () => {},
478
- watch: () => null,
479
- has: () => false,
480
- destroy: () => false,
481
- list: () => [],
482
- };
483
- window.slice.logger.logError('Slice', 'ContextManager disabled');
484
- }
485
-
486
- if (sliceConfig.loading.enabled) {
487
- const loading = await window.slice.build('Loading', {});
488
- window.slice.loading = loading;
489
- if (typeof loading?.start === 'function') {
490
- loading.start();
491
- }
492
- }
493
-
494
- const stylesInitPromise = window.slice.stylesManager.init();
495
- const routesModulePromise = import(slice.paths.routesFile);
496
-
497
- if (sliceConfig.events?.ui?.shortcut || sliceConfig.context?.ui?.shortcut) {
498
- const normalize = (value) => (typeof value === 'string' ? value.toLowerCase() : '');
499
- const toKey = (event) => {
500
- const parts = [];
501
- if (event.ctrlKey) parts.push('ctrl');
502
- if (event.shiftKey) parts.push('shift');
503
- if (event.altKey) parts.push('alt');
504
- if (event.metaKey) parts.push('meta');
505
- const key = event.key?.toLowerCase();
506
- if (key && !['control', 'shift', 'alt', 'meta'].includes(key)) {
507
- parts.push(key);
508
- }
509
- return parts.join('+');
510
- };
511
-
512
- const handlers = {
513
- [normalize(sliceConfig.events?.ui?.shortcut)]: () => window.slice.eventsDebugger?.toggle?.(),
514
- [normalize(sliceConfig.context?.ui?.shortcut)]: () => window.slice.contextDebugger?.toggle?.(),
515
- };
516
-
517
- document.addEventListener('keydown', (event) => {
518
- const key = toKey(event);
519
- if (!key || !handlers[key]) return;
520
- event.preventDefault();
521
- handlers[key]();
522
- });
523
- }
524
-
525
- const [, routesModule] = await Promise.all([stylesInitPromise, routesModulePromise]);
526
- const routes = routesModule.default;
527
- const RouterModule = window.slice.frameworkClasses?.Router
528
- || await window.slice.getClass(`${slice.paths.structuralComponentFolderPath}/Router/Router.js`);
529
- window.slice.router = new RouterModule(routes);
530
- await window.slice.router.init();
531
- }
532
-
533
- await init();