slicejs-web-framework 3.1.2 → 3.1.4

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 +11 -6
  2. package/Slice/tests/build-bundled-component-without-category.test.js +103 -0
  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,721 +0,0 @@
1
- /**
2
- * @typedef {Object} RouteConfig
3
- * @property {string} path
4
- * @property {string} component
5
- * @property {RouteConfig[]} [children]
6
- * @property {Object} [metadata]
7
- * @property {string} [fullPath]
8
- * @property {string|null} [parentPath]
9
- * @property {RouteConfig|null} [parentRoute]
10
- */
11
-
12
- /**
13
- * @typedef {Object} RouteInfo
14
- * @property {string} path
15
- * @property {string} component
16
- * @property {Object} params
17
- * @property {Object} query
18
- * @property {Object} metadata
19
- */
20
-
21
- /**
22
- * @typedef {Object} GuardRedirect
23
- * @property {string} path
24
- * @property {boolean} [replace]
25
- */
26
-
27
- /**
28
- * @typedef {Object} RouteMatch
29
- * @property {RouteConfig|null} route
30
- * @property {Object} params
31
- * @property {RouteConfig} [childRoute]
32
- */
33
-
34
- /**
35
- * @callback RouterNext
36
- * @param {void|false|string|{ path: string, replace?: boolean }} [arg]
37
- * @returns {void}
38
- */
39
-
40
- export default class Router {
41
- /**
42
- * @param {RouteConfig[]} routes
43
- */
44
- constructor(routes) {
45
- this.routes = routes;
46
- this.activeRoute = null;
47
- this.pathToRouteMap = this.createPathToRouteMap(routes);
48
-
49
- // Navigation Guards
50
- this._beforeEachGuard = null;
51
- this._afterEachGuard = null;
52
-
53
- // Router state
54
- this._started = false;
55
- this._autoStartTimeout = null;
56
-
57
- // Sistema de caché optimizado
58
- this.routeContainersCache = new Map();
59
- this.lastCacheUpdate = 0;
60
- this.CACHE_DURATION = 100; // ms - caché muy corto pero efectivo
61
-
62
- // Observer para invalidar caché automáticamente
63
- this.setupMutationObserver();
64
- }
65
-
66
- /**
67
- * Inicializa el router
68
- * Si el usuario no llama start() manualmente, se auto-inicia despues de un delay
69
- * @returns {void}
70
- */
71
- init() {
72
- window.addEventListener('popstate', this.onRouteChange.bind(this));
73
-
74
- // Auto-start después de 50ms si el usuario no llama start() manualmente
75
- // Esto da tiempo para que el usuario configure guards si lo necesita
76
- this._autoStartTimeout = setTimeout(async () => {
77
- if (!this._started) {
78
- slice.logger.logInfo('Router', 'Auto-starting router (no manual start() called)');
79
- await this.start();
80
- }
81
- }, 50);
82
- }
83
-
84
- /**
85
- * Inicia el router y carga la ruta inicial
86
- * OPCIONAL: Solo necesario si usas guards (beforeEach/afterEach)
87
- * Si no lo llamas, el router se auto-inicia despues de 50ms
88
- * @returns {Promise<void>}
89
- */
90
- async start() {
91
- // Prevenir múltiples llamadas
92
- if (this._started) {
93
- slice.logger.logWarning('Router', 'start() already called');
94
- return;
95
- }
96
-
97
- // Cancelar auto-start si existe
98
- if (this._autoStartTimeout) {
99
- clearTimeout(this._autoStartTimeout);
100
- this._autoStartTimeout = null;
101
- }
102
-
103
- this._started = true;
104
- await this.loadInitialRoute();
105
- }
106
-
107
- // ============================================
108
- // NAVIGATION GUARDS API
109
- // ============================================
110
-
111
- /**
112
- * Registra un guard que se ejecuta ANTES de cada navegacion.
113
- * Puede bloquear o redirigir la navegacion mediante next().
114
- * @param {(to: RouteInfo, from: RouteInfo, next: RouterNext) => void|Promise<void>} guard
115
- * @returns {void}
116
- */
117
- beforeEach(guard) {
118
- if (typeof guard !== 'function') {
119
- slice.logger.logError('Router', 'beforeEach expects a function');
120
- return;
121
- }
122
- this._beforeEachGuard = guard;
123
- }
124
-
125
- /**
126
- * Registra un guard que se ejecuta DESPUES de cada navegacion.
127
- * No puede bloquear la navegacion.
128
- * @param {(to: RouteInfo, from: RouteInfo) => void} guard
129
- * @returns {void}
130
- */
131
- afterEach(guard) {
132
- if (typeof guard !== 'function') {
133
- slice.logger.logError('Router', 'afterEach expects a function');
134
- return;
135
- }
136
- this._afterEachGuard = guard;
137
- }
138
-
139
- /**
140
- * Crea un objeto con información de ruta para los guards
141
- * @param {Object} route - Objeto de ruta
142
- * @param {Object} params - Parámetros de la ruta
143
- * @param {String} requestedPath - Path original solicitado
144
- * @returns {Object} Objeto con path, component, params, query, metadata
145
- */
146
- /**
147
- * Build route info used by guards and events.
148
- * @param {RouteConfig|null} route
149
- * @param {Object} [params]
150
- * @param {string|null} [requestedPath]
151
- * @returns {RouteInfo}
152
- */
153
- _createRouteInfo(route, params = {}, requestedPath = null) {
154
- if (!route) {
155
- return {
156
- path: requestedPath || '/404',
157
- component: 'NotFound',
158
- params: {},
159
- query: this._parseQueryParams(),
160
- metadata: {},
161
- };
162
- }
163
-
164
- return {
165
- path: requestedPath || route.fullPath || route.path,
166
- component: route.parentRoute ? route.parentRoute.component : route.component,
167
- params: params,
168
- query: this._parseQueryParams(),
169
- metadata: route.metadata || {},
170
- };
171
- }
172
-
173
- /**
174
- * Parsea los query parameters de la URL actual
175
- * @returns {Object} Objeto con los query params
176
- */
177
- /**
178
- * Parse query params from current URL.
179
- * @returns {Object}
180
- */
181
- _parseQueryParams() {
182
- const queryString = window.location.search;
183
- if (!queryString) return {};
184
-
185
- const params = {};
186
- const urlParams = new URLSearchParams(queryString);
187
-
188
- for (const [key, value] of urlParams) {
189
- params[key] = value;
190
- }
191
-
192
- return params;
193
- }
194
-
195
- /**
196
- * Ejecuta el beforeEach guard si existe
197
- * @param {Object} to - Información de ruta destino
198
- * @param {Object} from - Información de ruta origen
199
- * @returns {Object|null} Objeto con redirectPath y options, o null si continúa
200
- */
201
- /**
202
- * Execute beforeEach guard if defined.
203
- * @param {RouteInfo} to
204
- * @param {RouteInfo} from
205
- * @returns {Promise<{ path: string|false, options: { replace?: boolean } }|null>}
206
- */
207
- async _executeBeforeEachGuard(to, from) {
208
- if (!this._beforeEachGuard) {
209
- return null;
210
- }
211
-
212
- let redirectPath = null;
213
- let redirectOptions = {};
214
- let nextCalled = false;
215
-
216
- const next = (arg) => {
217
- if (nextCalled) {
218
- slice.logger.logWarning('Router', 'next() called multiple times in guard');
219
- return;
220
- }
221
- nextCalled = true;
222
-
223
- // Caso 1: Sin argumentos - continuar navegación
224
- if (arg === undefined) {
225
- return;
226
- }
227
-
228
- // Caso 2: false - cancelar navegación
229
- if (arg === false) {
230
- redirectPath = false;
231
- return;
232
- }
233
-
234
- // Caso 3: String - redirección simple (backward compatibility)
235
- if (typeof arg === 'string') {
236
- redirectPath = arg;
237
- redirectOptions = { replace: false };
238
- return;
239
- }
240
-
241
- // Caso 4: Objeto - redirección con opciones
242
- if (typeof arg === 'object' && arg.path) {
243
- redirectPath = arg.path;
244
- redirectOptions = {
245
- replace: arg.replace || false,
246
- };
247
- return;
248
- }
249
-
250
- // Argumento inválido
251
- slice.logger.logError(
252
- 'Router',
253
- 'Invalid argument passed to next(). Expected string, object with path, false, or undefined.'
254
- );
255
- };
256
-
257
- try {
258
- await this._beforeEachGuard(to, from, next);
259
-
260
- // Si no se llamó next(), loguear advertencia pero continuar
261
- if (!nextCalled) {
262
- slice.logger.logWarning('Router', 'beforeEach guard did not call next(). Navigation will continue.');
263
- }
264
-
265
- // Retornar tanto el path como las opciones
266
- return redirectPath ? { path: redirectPath, options: redirectOptions } : null;
267
- } catch (error) {
268
- slice.logger.logError('Router', 'Error in beforeEach guard', error);
269
- return null; // En caso de error, continuar con la navegación
270
- }
271
- }
272
-
273
- /**
274
- * Ejecuta el afterEach guard si existe
275
- * @param {Object} to - Información de ruta destino
276
- * @param {Object} from - Información de ruta origen
277
- */
278
- /**
279
- * Execute afterEach guard if defined.
280
- * @param {RouteInfo} to
281
- * @param {RouteInfo} from
282
- * @returns {void}
283
- */
284
- _executeAfterEachGuard(to, from) {
285
- if (!this._afterEachGuard) {
286
- return;
287
- }
288
-
289
- try {
290
- this._afterEachGuard(to, from);
291
- } catch (error) {
292
- slice.logger.logError('Router', 'Error in afterEach guard', error);
293
- }
294
- }
295
-
296
- // ============================================
297
- // ROUTING CORE (MODIFICADO CON GUARDS)
298
- // ============================================
299
-
300
- /**
301
- * Navigate to a route path with guards support. Add replace to do router.replace() instead of push.
302
- * @param {string} path
303
- * @param {string[]} [_redirectChain]
304
- * @param {{ replace?: boolean }} [_options]
305
- * @returns {Promise<void>}
306
- */
307
- async navigate(path, _redirectChain = [], _options = {}) {
308
- const currentPath = window.location.pathname;
309
-
310
- // Detectar loops infinitos: si ya visitamos esta ruta en la cadena de redirecciones
311
- if (_redirectChain.includes(path)) {
312
- slice.logger.logError('Router', `Guard redirection loop detected: ${_redirectChain.join(' → ')} → ${path}`);
313
- return;
314
- }
315
-
316
- // Límite de seguridad: máximo 10 redirecciones
317
- if (_redirectChain.length >= 10) {
318
- slice.logger.logError('Router', `Too many redirections: ${_redirectChain.join(' → ')} → ${path}`);
319
- return;
320
- }
321
-
322
- // Obtener información de ruta actual
323
- const { route: fromRoute, params: fromParams } = this.matchRoute(currentPath);
324
- const from = this._createRouteInfo(fromRoute, fromParams, currentPath);
325
-
326
- // Obtener información de ruta destino
327
- const { route: toRoute, params: toParams } = this.matchRoute(path);
328
- const to = this._createRouteInfo(toRoute, toParams, path);
329
-
330
- // EJECUTAR BEFORE EACH GUARD
331
- const guardResult = await this._executeBeforeEachGuard(to, from);
332
-
333
- // Si el guard redirige
334
- if (guardResult && guardResult.path) {
335
- const newChain = [..._redirectChain, path];
336
- return this.navigate(guardResult.path, newChain, guardResult.options);
337
- }
338
-
339
- // Si el guard cancela la navegación (next(false))
340
- if (guardResult && guardResult.path === false) {
341
- slice.logger.logInfo('Router', 'Navigation cancelled by guard');
342
- return;
343
- }
344
-
345
- // No hay redirección - continuar con la navegación normal
346
- // Usar replace o push según las opciones
347
- if (_options.replace) {
348
- window.history.replaceState({}, path, window.location.origin + path);
349
- } else {
350
- window.history.pushState({}, path, window.location.origin + path);
351
- }
352
-
353
- await this._performNavigation(to, from);
354
- }
355
-
356
- /**
357
- * Método interno para ejecutar la navegación después de pasar los guards
358
- * @param {Object} to - Información de ruta destino
359
- * @param {Object} from - Información de ruta origen
360
- */
361
- /**
362
- * Perform navigation after guards.
363
- * @param {RouteInfo} to
364
- * @param {RouteInfo} from
365
- * @returns {Promise<void>}
366
- */
367
- async _performNavigation(to, from) {
368
- // Renderizar la nueva ruta
369
- await this.onRouteChange();
370
-
371
- // EJECUTAR AFTER EACH GUARD
372
- this._executeAfterEachGuard(to, from);
373
-
374
- // Emitir evento de cambio de ruta
375
- this._emitRouteChange(to, from);
376
- }
377
-
378
- /**
379
- * React to URL changes and render routes.
380
- * @returns {Promise<void>}
381
- */
382
- async onRouteChange() {
383
- // Cancelar el timeout anterior si existe
384
- if (this.routeChangeTimeout) {
385
- clearTimeout(this.routeChangeTimeout);
386
- }
387
-
388
- // Debounce de 10ms para evitar múltiples llamadas seguidas
389
- this.routeChangeTimeout = setTimeout(async () => {
390
- const path = window.location.pathname;
391
- const routeContainersFlag = await this.renderRoutesComponentsInPage();
392
-
393
- if (routeContainersFlag) {
394
- return;
395
- }
396
-
397
- const { route, params } = this.matchRoute(path);
398
- if (route) {
399
- await this.handleRoute(route, params);
400
- }
401
- }, 10);
402
- }
403
-
404
- /**
405
- * Build or update the active route component.
406
- * @param {RouteConfig} route
407
- * @param {Object} params
408
- * @returns {Promise<void>}
409
- */
410
- async handleRoute(route, params) {
411
- const targetElement = document.querySelector('#app');
412
-
413
- const componentName = route.parentRoute ? route.parentRoute.component : route.component;
414
- const sliceId = `route-${componentName}`;
415
-
416
- const existingComponent = slice.controller.getComponent(sliceId);
417
-
418
- if (slice.loading) {
419
- slice.loading.start();
420
- }
421
-
422
- try {
423
- if (existingComponent) {
424
- targetElement.innerHTML = '';
425
- if (existingComponent.update) {
426
- existingComponent.props = { ...existingComponent.props, ...params };
427
- await existingComponent.update();
428
- }
429
- targetElement.appendChild(existingComponent);
430
- await this.renderRoutesInComponent(existingComponent);
431
- } else {
432
- const component = await slice.build(componentName, {
433
- params,
434
- sliceId: sliceId,
435
- });
436
-
437
- targetElement.innerHTML = '';
438
- targetElement.appendChild(component);
439
-
440
- await this.renderRoutesInComponent(component);
441
- }
442
-
443
- // Invalidar caché después de cambios importantes en el DOM
444
- this.invalidateCache();
445
- slice.router.activeRoute = route;
446
- } finally {
447
- if (slice.loading) {
448
- slice.loading.stop();
449
- }
450
- }
451
- }
452
-
453
- /**
454
- * Load initial route and run guards.
455
- * @returns {Promise<void>}
456
- */
457
- async loadInitialRoute() {
458
- const path = window.location.pathname;
459
- const { route, params } = this.matchRoute(path);
460
-
461
- // Para la carga inicial, también ejecutar guards
462
- const from = this._createRouteInfo(null, {}, null);
463
- const to = this._createRouteInfo(route, params, path);
464
-
465
- // EJECUTAR BEFORE EACH GUARD en carga inicial
466
- const guardResult = await this._executeBeforeEachGuard(to, from);
467
-
468
- if (guardResult && guardResult.path) {
469
- return this.navigate(guardResult.path, [], guardResult.options);
470
- }
471
-
472
- // Si el guard cancela la navegación inicial (caso raro pero posible)
473
- if (guardResult && guardResult.path === false) {
474
- slice.logger.logWarning('Router', 'Initial route navigation cancelled by guard');
475
- return;
476
- }
477
-
478
- await this.handleRoute(route, params);
479
-
480
- // EJECUTAR AFTER EACH GUARD en carga inicial
481
- this._executeAfterEachGuard(to, from);
482
-
483
- // Emitir evento de cambio de ruta
484
- this._emitRouteChange(to, from);
485
- }
486
-
487
- /**
488
- * Emitir evento de cambio de ruta
489
- * @param {Object} to
490
- * @param {Object} from
491
- */
492
- /**
493
- * Emit route change event.
494
- * @param {RouteInfo} to
495
- * @param {RouteInfo} from
496
- * @returns {void}
497
- */
498
- _emitRouteChange(to, from) {
499
- const payload = { to, from };
500
-
501
- if (slice.eventsConfig?.enabled && slice.events && typeof slice.events.emit === 'function') {
502
- slice.events.emit('router:change', payload);
503
- return;
504
- }
505
-
506
- window.dispatchEvent(new CustomEvent('router:change', { detail: payload }));
507
- }
508
-
509
- // ============================================
510
- // MÉTODOS EXISTENTES (SIN CAMBIOS)
511
- // ============================================
512
-
513
- setupMutationObserver() {
514
- if (typeof MutationObserver !== 'undefined') {
515
- this.observer = new MutationObserver((mutations) => {
516
- let shouldInvalidateCache = false;
517
-
518
- mutations.forEach((mutation) => {
519
- if (mutation.type === 'childList') {
520
- const addedNodes = Array.from(mutation.addedNodes);
521
- const removedNodes = Array.from(mutation.removedNodes);
522
-
523
- const hasRouteNodes = [...addedNodes, ...removedNodes].some(
524
- (node) =>
525
- node.nodeType === Node.ELEMENT_NODE &&
526
- (node.tagName === 'SLICE-ROUTE' ||
527
- node.tagName === 'SLICE-MULTI-ROUTE' ||
528
- node.querySelector?.('slice-route, slice-multi-route'))
529
- );
530
-
531
- if (hasRouteNodes) {
532
- shouldInvalidateCache = true;
533
- }
534
- }
535
- });
536
-
537
- if (shouldInvalidateCache) {
538
- this.invalidateCache();
539
- }
540
- });
541
-
542
- this.observer.observe(document.body, {
543
- childList: true,
544
- subtree: true,
545
- });
546
- }
547
- }
548
-
549
- invalidateCache() {
550
- this.routeContainersCache.clear();
551
- this.lastCacheUpdate = 0;
552
- }
553
-
554
- createPathToRouteMap(routes, basePath = '', parentRoute = null) {
555
- const pathToRouteMap = new Map();
556
-
557
- for (const route of routes) {
558
- const fullPath = `${basePath}${route.path}`.replace(/\/+/g, '/');
559
-
560
- const routeWithParent = {
561
- ...route,
562
- fullPath,
563
- parentPath: parentRoute ? parentRoute.fullPath : null,
564
- parentRoute: parentRoute,
565
- };
566
-
567
- pathToRouteMap.set(fullPath, routeWithParent);
568
-
569
- if (route.children) {
570
- const childPathToRouteMap = this.createPathToRouteMap(route.children, fullPath, routeWithParent);
571
-
572
- for (const [childPath, childRoute] of childPathToRouteMap.entries()) {
573
- pathToRouteMap.set(childPath, childRoute);
574
- }
575
- }
576
- }
577
-
578
- return pathToRouteMap;
579
- }
580
-
581
- /**
582
- * Render any Route/MultiRoute components in a container.
583
- * @param {Document|HTMLElement} [searchContainer]
584
- * @returns {Promise<boolean>}
585
- */
586
- async renderRoutesComponentsInPage(searchContainer = document) {
587
- let routerContainersFlag = false;
588
- const routeContainers = this.getCachedRouteContainers(searchContainer);
589
-
590
- for (const routeContainer of routeContainers) {
591
- try {
592
- if (!routeContainer.isConnected) {
593
- this.invalidateCache();
594
- continue;
595
- }
596
-
597
- let response = await routeContainer.renderIfCurrentRoute();
598
- if (response) {
599
- this.activeRoute = routeContainer.props;
600
- routerContainersFlag = true;
601
- }
602
- } catch (error) {
603
- slice.logger.logError('Router', `Error rendering route container`, error);
604
- }
605
- }
606
-
607
- return routerContainersFlag;
608
- }
609
-
610
- getCachedRouteContainers(container) {
611
- const containerKey = container === document ? 'document' : container.sliceId || 'anonymous';
612
- const now = Date.now();
613
-
614
- if (this.routeContainersCache.has(containerKey) && now - this.lastCacheUpdate < this.CACHE_DURATION) {
615
- return this.routeContainersCache.get(containerKey);
616
- }
617
-
618
- const routeContainers = this.findAllRouteContainersOptimized(container);
619
- this.routeContainersCache.set(containerKey, routeContainers);
620
- this.lastCacheUpdate = now;
621
-
622
- return routeContainers;
623
- }
624
-
625
- findAllRouteContainersOptimized(container) {
626
- const routeContainers = [];
627
-
628
- const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
629
- acceptNode: (node) => {
630
- if (node.tagName === 'SLICE-ROUTE' || node.tagName === 'SLICE-MULTI-ROUTE') {
631
- return NodeFilter.FILTER_ACCEPT;
632
- }
633
- return NodeFilter.FILTER_SKIP;
634
- },
635
- });
636
-
637
- let node;
638
- while ((node = walker.nextNode())) {
639
- routeContainers.push(node);
640
- }
641
-
642
- return routeContainers;
643
- }
644
-
645
- /**
646
- * Render route containers inside a component.
647
- * @param {HTMLElement} component
648
- * @returns {Promise<boolean>}
649
- */
650
- async renderRoutesInComponent(component) {
651
- if (!component) {
652
- slice.logger.logWarning('Router', 'No component provided for route rendering');
653
- return false;
654
- }
655
-
656
- return await this.renderRoutesComponentsInPage(component);
657
- }
658
-
659
- /**
660
- * Match a path to a configured route.
661
- * @param {string} path
662
- * @returns {RouteMatch}
663
- */
664
- matchRoute(path) {
665
- const exactMatch = this.pathToRouteMap.get(path);
666
- if (exactMatch) {
667
- if (exactMatch.parentRoute) {
668
- return {
669
- route: exactMatch.parentRoute,
670
- params: {},
671
- childRoute: exactMatch,
672
- };
673
- }
674
- return { route: exactMatch, params: {} };
675
- }
676
-
677
- for (const [routePattern, route] of this.pathToRouteMap.entries()) {
678
- if (routePattern.includes('${')) {
679
- const { regex, paramNames } = this.compilePathPattern(routePattern);
680
- const match = path.match(regex);
681
- if (match) {
682
- const params = {};
683
- paramNames.forEach((name, i) => {
684
- params[name] = match[i + 1];
685
- });
686
-
687
- if (route.parentRoute) {
688
- return {
689
- route: route.parentRoute,
690
- params: params,
691
- childRoute: route,
692
- };
693
- }
694
-
695
- return { route, params };
696
- }
697
- }
698
- }
699
-
700
- const notFoundRoute = this.pathToRouteMap.get('/404');
701
- return { route: notFoundRoute, params: {} };
702
- }
703
-
704
- /**
705
- * Compile a path pattern with ${param} segments.
706
- * @param {string} pattern
707
- * @returns {{ regex: RegExp, paramNames: string[] }}
708
- */
709
- compilePathPattern(pattern) {
710
- const paramNames = [];
711
- const regexPattern =
712
- '^' +
713
- pattern.replace(/\$\{([^}]+)\}/g, (_, paramName) => {
714
- paramNames.push(paramName);
715
- return '([^/]+)';
716
- }) +
717
- '$';
718
-
719
- return { regex: new RegExp(regexPattern), paramNames };
720
- }
721
- }