slicejs-web-framework 2.4.8 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.worktrees/bundling-v2-precompiled-registrars/LICENSE +21 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/ContextManager/ContextManager.js +369 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/ContextManager/ContextManagerDebugger.js +297 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Controller/Controller.js +972 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Debugger/Debugger.css +620 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Debugger/Debugger.html +73 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Debugger/Debugger.js +1548 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/EventManager/EventManager.js +338 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/EventManager/EventManagerDebugger.js +361 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Logger/Log.js +10 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Logger/Logger.js +146 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/Router/Router.js +721 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/StylesManager/StylesManager.js +78 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Components/Structural/StylesManager/ThemeManager/ThemeManager.js +84 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/Slice.js +504 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/tests/bundle-v2-runtime-contract.test.js +268 -0
- package/.worktrees/bundling-v2-precompiled-registrars/Slice/tests/router-loading-finally.test.js +68 -0
- package/.worktrees/bundling-v2-precompiled-registrars/api/index.js +286 -0
- package/.worktrees/bundling-v2-precompiled-registrars/api/middleware/securityMiddleware.js +253 -0
- package/.worktrees/bundling-v2-precompiled-registrars/package.json +37 -0
- package/.worktrees/bundling-v2-precompiled-registrars/sliceConfig.schema.json +109 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/App/index.html +22 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/App/index.js +23 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/App/style.css +40 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/HomePage/HomePage.css +201 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/HomePage/HomePage.html +37 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/HomePage/HomePage.js +210 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/Playground/Playground.css +12 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/Playground/Playground.html +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/AppComponents/Playground/Playground.js +111 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Service/FetchManager/FetchManager.js +133 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Service/IndexedDbManager/IndexedDbManager.js +141 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Service/LocalStorageManager/LocalStorageManager.js +45 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Button/Button.css +47 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Button/Button.html +5 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Button/Button.js +93 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Card/Card.css +68 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Card/Card.html +7 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Card/Card.js +107 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Checkbox/Checkbox.css +87 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Checkbox/Checkbox.html +8 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Checkbox/Checkbox.js +86 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/CodeVisualizer/CodeVisualizer.css +130 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/CodeVisualizer/CodeVisualizer.html +4 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/CodeVisualizer/CodeVisualizer.js +262 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Details/Details.css +70 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Details/Details.html +9 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Details/Details.js +76 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/DropDown/DropDown.css +60 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/DropDown/DropDown.html +5 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/DropDown/DropDown.js +63 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Grid/Grid.css +7 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Grid/Grid.html +1 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Grid/Grid.js +57 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/Icon.css +510 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/Icon.html +1 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/Icon.js +89 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.eot +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.json +555 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.styl +507 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.svg +1485 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.symbol.svg +1059 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.ttf +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.woff +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Icon/slc.woff2 +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Input/Input.css +91 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Input/Input.html +4 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Input/Input.js +215 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Layout/Layout.css +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Layout/Layout.html +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Layout/Layout.js +49 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Link/Link.css +8 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Link/Link.html +1 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Link/Link.js +63 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Loading/Loading.css +56 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Loading/Loading.html +83 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Loading/Loading.js +38 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/MultiRoute/MultiRoute.js +93 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Navbar/Navbar.css +115 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Navbar/Navbar.html +44 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Navbar/Navbar.js +141 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/NotFound/NotFound.css +117 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/NotFound/NotFound.html +24 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/NotFound/NotFound.js +16 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Route/Route.js +93 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Select/Select.css +84 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Select/Select.html +8 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Select/Select.js +195 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Switch/Switch.css +76 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Switch/Switch.html +8 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/Switch/Switch.js +102 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeItem/TreeItem.css +36 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeItem/TreeItem.html +1 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeItem/TreeItem.js +126 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeView/TreeView.css +8 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeView/TreeView.html +1 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/Visual/TreeView/TreeView.js +48 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Components/components.js +27 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Styles/sliceStyles.css +34 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Themes/Dark.css +42 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Themes/Light.css +31 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/Themes/Slice.css +47 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/images/Slice.js-logo.png +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/images/favicon.ico +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/images/im2/Slice.js-logo.png +0 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/routes.js +16 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/sliceConfig.json +73 -0
- package/.worktrees/bundling-v2-precompiled-registrars/src/testing.js +888 -0
- package/.worktrees/public-env-browser-exposure/LICENSE +21 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/ContextManager/ContextManager.js +369 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/ContextManager/ContextManagerDebugger.js +297 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Controller/Controller.js +972 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Debugger/Debugger.css +620 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Debugger/Debugger.html +73 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Debugger/Debugger.js +1548 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/EventManager/EventManager.js +338 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/EventManager/EventManagerDebugger.js +361 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Logger/Log.js +10 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Logger/Logger.js +146 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/Router/Router.js +721 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/StylesManager/StylesManager.js +78 -0
- package/.worktrees/public-env-browser-exposure/Slice/Components/Structural/StylesManager/ThemeManager/ThemeManager.js +84 -0
- package/.worktrees/public-env-browser-exposure/Slice/Slice.js +533 -0
- package/.worktrees/public-env-browser-exposure/Slice/tests/bundle-v2-runtime-contract.test.js +268 -0
- package/.worktrees/public-env-browser-exposure/Slice/tests/public-env-runtime-accessors.test.js +44 -0
- package/.worktrees/public-env-browser-exposure/Slice/tests/router-loading-finally.test.js +68 -0
- package/.worktrees/public-env-browser-exposure/api/index.js +286 -0
- package/.worktrees/public-env-browser-exposure/api/middleware/securityMiddleware.js +253 -0
- package/.worktrees/public-env-browser-exposure/api/tests/public-env-resolver.test.js +193 -0
- package/.worktrees/public-env-browser-exposure/api/utils/publicEnvResolver.js +117 -0
- package/.worktrees/public-env-browser-exposure/package.json +37 -0
- package/.worktrees/public-env-browser-exposure/sliceConfig.schema.json +109 -0
- package/.worktrees/public-env-browser-exposure/src/App/index.html +22 -0
- package/.worktrees/public-env-browser-exposure/src/App/index.js +23 -0
- package/.worktrees/public-env-browser-exposure/src/App/style.css +40 -0
- package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/HomePage/HomePage.css +201 -0
- package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/HomePage/HomePage.html +37 -0
- package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/HomePage/HomePage.js +210 -0
- package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/Playground/Playground.css +12 -0
- package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/Playground/Playground.html +0 -0
- package/.worktrees/public-env-browser-exposure/src/Components/AppComponents/Playground/Playground.js +111 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Service/FetchManager/FetchManager.js +133 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Service/IndexedDbManager/IndexedDbManager.js +141 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Service/LocalStorageManager/LocalStorageManager.js +45 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Button/Button.css +47 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Button/Button.html +5 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Button/Button.js +93 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Card/Card.css +68 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Card/Card.html +7 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Card/Card.js +107 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Checkbox/Checkbox.css +87 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Checkbox/Checkbox.html +8 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Checkbox/Checkbox.js +86 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/CodeVisualizer/CodeVisualizer.css +130 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/CodeVisualizer/CodeVisualizer.html +4 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/CodeVisualizer/CodeVisualizer.js +262 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Details/Details.css +70 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Details/Details.html +9 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Details/Details.js +76 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/DropDown/DropDown.css +60 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/DropDown/DropDown.html +5 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/DropDown/DropDown.js +63 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Grid/Grid.css +7 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Grid/Grid.html +1 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Grid/Grid.js +57 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/Icon.css +510 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/Icon.html +1 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/Icon.js +89 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.eot +0 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.json +555 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.styl +507 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.svg +1485 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.symbol.svg +1059 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.ttf +0 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.woff +0 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Icon/slc.woff2 +0 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Input/Input.css +91 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Input/Input.html +4 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Input/Input.js +215 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Layout/Layout.css +0 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Layout/Layout.html +0 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Layout/Layout.js +49 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Link/Link.css +8 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Link/Link.html +1 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Link/Link.js +63 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Loading/Loading.css +56 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Loading/Loading.html +83 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Loading/Loading.js +38 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/MultiRoute/MultiRoute.js +93 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Navbar/Navbar.css +115 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Navbar/Navbar.html +44 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Navbar/Navbar.js +141 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/NotFound/NotFound.css +117 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/NotFound/NotFound.html +24 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/NotFound/NotFound.js +16 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Route/Route.js +93 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Select/Select.css +84 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Select/Select.html +8 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Select/Select.js +195 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Switch/Switch.css +76 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Switch/Switch.html +8 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/Switch/Switch.js +102 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeItem/TreeItem.css +36 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeItem/TreeItem.html +1 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeItem/TreeItem.js +126 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeView/TreeView.css +8 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeView/TreeView.html +1 -0
- package/.worktrees/public-env-browser-exposure/src/Components/Visual/TreeView/TreeView.js +48 -0
- package/.worktrees/public-env-browser-exposure/src/Components/components.js +27 -0
- package/.worktrees/public-env-browser-exposure/src/Styles/sliceStyles.css +34 -0
- package/.worktrees/public-env-browser-exposure/src/Themes/Dark.css +42 -0
- package/.worktrees/public-env-browser-exposure/src/Themes/Light.css +31 -0
- package/.worktrees/public-env-browser-exposure/src/Themes/Slice.css +47 -0
- package/.worktrees/public-env-browser-exposure/src/images/Slice.js-logo.png +0 -0
- package/.worktrees/public-env-browser-exposure/src/images/favicon.ico +0 -0
- package/.worktrees/public-env-browser-exposure/src/images/im2/Slice.js-logo.png +0 -0
- package/.worktrees/public-env-browser-exposure/src/routes.js +16 -0
- package/.worktrees/public-env-browser-exposure/src/sliceConfig.json +73 -0
- package/.worktrees/public-env-browser-exposure/src/testing.js +888 -0
- package/Slice/Components/Structural/Controller/Controller.js +51 -29
- package/Slice/Components/Structural/Router/Router.js +25 -24
- package/Slice/Slice.js +79 -46
- package/Slice/tests/bundle-v2-runtime-contract.test.js +268 -0
- package/Slice/tests/public-env-runtime-accessors.test.js +44 -0
- package/Slice/tests/router-loading-finally.test.js +68 -0
- package/api/index.js +12 -12
- package/api/tests/public-env-resolver.test.js +193 -0
- package/api/utils/publicEnvResolver.js +117 -0
- package/package.json +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
export default class Card extends HTMLElement {
|
|
2
|
+
constructor(props) {
|
|
3
|
+
super();
|
|
4
|
+
slice.attachTemplate(this);
|
|
5
|
+
this.$card = this.querySelector('.slice-card');
|
|
6
|
+
this.$title = this.querySelector('.title');
|
|
7
|
+
this.$text = this.querySelector('.text');
|
|
8
|
+
this.$cover = this.querySelector('.card_cover');
|
|
9
|
+
slice.controller.setComponentProps(this, props);
|
|
10
|
+
|
|
11
|
+
this.$cover.addEventListener('click', () => {
|
|
12
|
+
this.isOpen = !this.isOpen;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
this.$card.addEventListener('mouseover', () => {
|
|
16
|
+
this.$cover.style.backgroundColor = this.$color.icon;
|
|
17
|
+
this.$icon.color = this.$color.card;
|
|
18
|
+
});
|
|
19
|
+
this.$card.addEventListener('mouseout', () => {
|
|
20
|
+
this.$cover.style.backgroundColor = this.$color.card;
|
|
21
|
+
this.$icon.color = this.$color.icon;
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
this.debuggerProps = ['title', 'text', 'icon', 'customColor', 'isOpen'];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async init() {
|
|
28
|
+
if (this.isOpen === undefined) {
|
|
29
|
+
this.isOpen = false;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (!this.customColor) {
|
|
33
|
+
this.$color = {
|
|
34
|
+
icon: 'var(--primary-color-contrast)',
|
|
35
|
+
card: 'var(--primary-color)',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (!this._icon) {
|
|
40
|
+
this.icon = { name: 'sliceJs', iconStyle: 'filled' };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
this.$icon = await slice.build('Icon', {
|
|
44
|
+
name: this.icon.name,
|
|
45
|
+
size: '150px',
|
|
46
|
+
color: this.$color.icon,
|
|
47
|
+
iconStyle: this._icon.iconStyle,
|
|
48
|
+
});
|
|
49
|
+
this.$cover.appendChild(this.$icon);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
get title() {
|
|
53
|
+
return this._title;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
set title(value) {
|
|
57
|
+
this._title = value;
|
|
58
|
+
this.$title.textContent = value;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
get text() {
|
|
62
|
+
return this._text;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
set text(value) {
|
|
66
|
+
this._text = value;
|
|
67
|
+
this.$text.textContent = value;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
get icon() {
|
|
71
|
+
return this._icon;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
set icon(value) {
|
|
75
|
+
this._icon = value;
|
|
76
|
+
if (!this.$icon) return;
|
|
77
|
+
this.$icon.name = value.name;
|
|
78
|
+
this.$icon.iconStyle = value.iconStyle;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
get isOpen() {
|
|
82
|
+
return this._isOpen;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
set isOpen(boolean) {
|
|
86
|
+
this._isOpen = boolean;
|
|
87
|
+
if (boolean) {
|
|
88
|
+
this.$cover.style.zIndex = 0;
|
|
89
|
+
} else {
|
|
90
|
+
this.$cover.style.zIndex = 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
get customColor() {
|
|
95
|
+
return this._customColor;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
set customColor(value) {
|
|
99
|
+
this._customColor = value;
|
|
100
|
+
this.$color = value;
|
|
101
|
+
if (value.card) {
|
|
102
|
+
this.$cover.style.backgroundColor = value.card;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
customElements.define('slice-card', Card);
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
.slice_checkbox input {
|
|
2
|
+
position: absolute;
|
|
3
|
+
opacity: 0;
|
|
4
|
+
cursor: pointer;
|
|
5
|
+
height: 0;
|
|
6
|
+
width: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.slice_checkbox_container {
|
|
10
|
+
width: fit-content;
|
|
11
|
+
}
|
|
12
|
+
.slice_checkbox {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
user-select: none;
|
|
16
|
+
margin-top: 25px;
|
|
17
|
+
margin-bottom: 25px;
|
|
18
|
+
position: relative;
|
|
19
|
+
user-select: none;
|
|
20
|
+
}
|
|
21
|
+
.checkbox_label {
|
|
22
|
+
margin: 5px;
|
|
23
|
+
font-family: var(--font-family);
|
|
24
|
+
color: var(--font-primary-color);
|
|
25
|
+
}
|
|
26
|
+
.checkmark {
|
|
27
|
+
position: relative;
|
|
28
|
+
top: 0;
|
|
29
|
+
left: 0;
|
|
30
|
+
height: 1.3em;
|
|
31
|
+
width: 1.3em;
|
|
32
|
+
background-color: var(--secondary-background-color);
|
|
33
|
+
border: var(--slice-border) solid var(--primary-color);
|
|
34
|
+
transition: all 0.3s;
|
|
35
|
+
border-radius: var(--border-radius-slice);
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
}
|
|
38
|
+
.slice_checkbox input:checked ~ .checkmark {
|
|
39
|
+
border: var(--slice-border) solid var(--success-color);
|
|
40
|
+
background-color: var(--success-color);
|
|
41
|
+
animation: pop 0.5s;
|
|
42
|
+
animation-direction: alternate;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.checkmark:after {
|
|
46
|
+
content: "";
|
|
47
|
+
position: absolute;
|
|
48
|
+
display: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.slice_checkbox input:checked ~ .checkmark:after {
|
|
52
|
+
display: block;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.slice_checkbox .checkmark:after {
|
|
56
|
+
left: 0.45em;
|
|
57
|
+
top: 0.25em;
|
|
58
|
+
width: 0.25em;
|
|
59
|
+
height: 0.5em;
|
|
60
|
+
border: solid white;
|
|
61
|
+
border-width: 0 0.15em 0.15em 0;
|
|
62
|
+
transform: rotate(45deg);
|
|
63
|
+
}
|
|
64
|
+
.disabled {
|
|
65
|
+
border-color: var(--disabled-color);
|
|
66
|
+
background-color: var(--primary-color-shade);
|
|
67
|
+
color: var(--disabled-color);
|
|
68
|
+
cursor: not-allowed;
|
|
69
|
+
}
|
|
70
|
+
@keyframes pop {
|
|
71
|
+
0% {
|
|
72
|
+
transform: scale(1);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
50% {
|
|
76
|
+
transform: scale(0.9);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
100% {
|
|
80
|
+
transform: scale(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
.checkbox_label {
|
|
84
|
+
margin-left: 5px;
|
|
85
|
+
font-family: var(--font-family);
|
|
86
|
+
color: var(--font-primary-color);
|
|
87
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export default class Checkbox extends HTMLElement {
|
|
2
|
+
constructor(props) {
|
|
3
|
+
super();
|
|
4
|
+
slice.attachTemplate(this);
|
|
5
|
+
this.$checkbox = this.querySelector('.slice_checkbox');
|
|
6
|
+
this.$checkmark = this.querySelector('.checkmark');
|
|
7
|
+
|
|
8
|
+
slice.controller.setComponentProps(this, props);
|
|
9
|
+
this.debuggerProps = ['checked', 'disabled', 'customColor', 'labelPlacement'];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
init() {
|
|
13
|
+
if (this._checked === undefined) {
|
|
14
|
+
this.checked = false;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (!this.disabled) {
|
|
18
|
+
this._disabled = false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get checked() {
|
|
23
|
+
return this._checked;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
set checked(value) {
|
|
27
|
+
this._checked = value;
|
|
28
|
+
this.querySelector('input').checked = value;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
get label() {
|
|
32
|
+
return this._label;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
set label(value) {
|
|
36
|
+
this._label = value;
|
|
37
|
+
if (this.querySelector('.checkbox_label')) {
|
|
38
|
+
this.querySelector('.checkbox_label').textContent = value;
|
|
39
|
+
} else {
|
|
40
|
+
const label = document.createElement('label');
|
|
41
|
+
label.classList.add('checkbox_label');
|
|
42
|
+
label.textContent = value;
|
|
43
|
+
this.$checkbox.appendChild(label);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
get customColor() {
|
|
48
|
+
return this._customColor;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
set customColor(value) {
|
|
52
|
+
this._customColor = value;
|
|
53
|
+
this.style = `--success-color: ${value};`;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
get labelPlacement() {
|
|
57
|
+
return this._labelPlacement;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
set labelPlacement(value) {
|
|
61
|
+
if (value === 'left') {
|
|
62
|
+
this.$checkbox.style = ` flex-direction: row-reverse;`;
|
|
63
|
+
}
|
|
64
|
+
if (value === 'right') {
|
|
65
|
+
this.$checkbox.style = `flex-direction: row;`;
|
|
66
|
+
}
|
|
67
|
+
if (value === 'top') {
|
|
68
|
+
this.$checkbox.style = `flex-direction: column-reverse;`;
|
|
69
|
+
}
|
|
70
|
+
if (value === 'bottom') {
|
|
71
|
+
this.$checkbox.style = `flex-direction: column;`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
get disabled() {
|
|
76
|
+
return this._disabled;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
set disabled(value) {
|
|
80
|
+
this._disabled = value;
|
|
81
|
+
this.querySelector('input').disabled = value;
|
|
82
|
+
this.$checkmark.classList.add('disabled');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
customElements.define('slice-checkbox', Checkbox);
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
slice-codevisualizer {
|
|
2
|
+
display: block;
|
|
3
|
+
width: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.codevisualizer_container {
|
|
7
|
+
position: relative;
|
|
8
|
+
font-size: smaller;
|
|
9
|
+
max-width: 100%;
|
|
10
|
+
background-color: var(--secondary-background-color);
|
|
11
|
+
border: 1px solid var(--primary-color);
|
|
12
|
+
padding: 15px 10px 10px;
|
|
13
|
+
border-radius: var(--border-radius-slice, 10px);
|
|
14
|
+
overflow-x: auto;
|
|
15
|
+
margin: 15px 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.codevisualizer pre {
|
|
19
|
+
margin: 0;
|
|
20
|
+
padding: 0;
|
|
21
|
+
font-family: 'Courier New', Courier, monospace;
|
|
22
|
+
line-height: 1.5;
|
|
23
|
+
white-space: pre;
|
|
24
|
+
tab-size: 2;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.codevisualizer code {
|
|
28
|
+
display: block;
|
|
29
|
+
color: var(--font-primary-color);
|
|
30
|
+
overflow-wrap: normal;
|
|
31
|
+
word-break: normal;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Botón de copiar */
|
|
35
|
+
.copy-button {
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 5px;
|
|
38
|
+
right: 10px;
|
|
39
|
+
padding: 4px 8px;
|
|
40
|
+
font-size: 12px;
|
|
41
|
+
background-color: var(--primary-color);
|
|
42
|
+
color: var(--primary-color-contrast);
|
|
43
|
+
border: none;
|
|
44
|
+
border-radius: var(--border-radius-slice, 4px);
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
opacity: 0.7;
|
|
47
|
+
transition: opacity 0.2s ease, background-color 0.2s ease;
|
|
48
|
+
z-index: 1;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.copy-button:hover {
|
|
52
|
+
opacity: 1;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.copy-button.copied {
|
|
56
|
+
background-color: var(--success-color);
|
|
57
|
+
color: var(--success-contrast);
|
|
58
|
+
opacity: 1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Temas para resaltado de sintaxis adaptados a las variables de Slice */
|
|
62
|
+
.codevisualizer .code-keyword {
|
|
63
|
+
color: var(--primary-color); /* Palabras clave en color primario */
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.codevisualizer .code-string {
|
|
67
|
+
color: var(--success-color); /* Strings en color de éxito */
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.codevisualizer .code-number {
|
|
71
|
+
color: var(--warning-color); /* Números en color de advertencia */
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.codevisualizer .code-comment {
|
|
75
|
+
color: var(--medium-color); /* Comentarios en color medio */
|
|
76
|
+
font-style: italic;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.codevisualizer .code-function {
|
|
80
|
+
color: var(--secondary-color); /* Funciones en color secundario */
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.codevisualizer .code-method {
|
|
84
|
+
color: var(--secondary-color); /* Métodos en color secundario */
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.codevisualizer .code-builtin {
|
|
88
|
+
color: var(--secondary-color); /* Objetos integrados en color secundario */
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.codevisualizer .code-tag {
|
|
92
|
+
color: var(--primary-color); /* Tags HTML en color primario */
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.codevisualizer .code-attribute {
|
|
96
|
+
color: var(--warning-color); /* Atributos HTML en color de advertencia */
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.codevisualizer .code-selector {
|
|
100
|
+
color: var(--primary-color); /* Selectores CSS en color primario */
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.codevisualizer .code-property {
|
|
104
|
+
color: var(--secondary-color); /* Propiedades CSS en color secundario */
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.codevisualizer .code-value {
|
|
108
|
+
color: var(--success-color); /* Valores CSS en color de éxito */
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.codevisualizer .code-unit {
|
|
112
|
+
color: var(--warning-color); /* Unidades CSS en color de advertencia */
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.codevisualizer .code-color {
|
|
116
|
+
color: var(--font-primary-color); /* Colores CSS en color primario */
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* Media query para diseño responsivo */
|
|
120
|
+
@media screen and (max-width: 768px) {
|
|
121
|
+
.codevisualizer_container {
|
|
122
|
+
font-size: 12px;
|
|
123
|
+
padding: 25px 8px 8px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.copy-button {
|
|
127
|
+
font-size: 10px;
|
|
128
|
+
padding: 3px 6px;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
export default class CodeVisualizer extends HTMLElement {
|
|
2
|
+
constructor(props) {
|
|
3
|
+
super();
|
|
4
|
+
slice.attachTemplate(this);
|
|
5
|
+
|
|
6
|
+
this.$container = this.querySelector('.codevisualizer_container');
|
|
7
|
+
this.$code = this.querySelector('.codevisualizer');
|
|
8
|
+
this.$copyButton = this.querySelector('.copy-button');
|
|
9
|
+
|
|
10
|
+
// Configurar el botón de copiado
|
|
11
|
+
this.$copyButton.addEventListener('click', () => this.copyCodeToClipboard());
|
|
12
|
+
|
|
13
|
+
slice.controller.setComponentProps(this, props);
|
|
14
|
+
this.debuggerProps = ['language', 'value'];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
set value(value) {
|
|
18
|
+
this._value = value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get value() {
|
|
22
|
+
return this._value;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set language(value) {
|
|
26
|
+
this._language = value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get language() {
|
|
30
|
+
return this._language;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
init() {
|
|
34
|
+
this.visualizeCode();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
visualizeCode() {
|
|
38
|
+
if (this._value && this._language) {
|
|
39
|
+
const highlightedCode = this.highlightCode(this._value, this._language);
|
|
40
|
+
this.$code.innerHTML = `<pre><code class="language-${this._language}">${highlightedCode}</code></pre>`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
copyCodeToClipboard() {
|
|
45
|
+
// Obtenemos el texto sin formato (sin las etiquetas HTML de resaltado)
|
|
46
|
+
const textToCopy = this._value;
|
|
47
|
+
|
|
48
|
+
// Utilizar el API de clipboard
|
|
49
|
+
navigator.clipboard.writeText(textToCopy)
|
|
50
|
+
.then(() => {
|
|
51
|
+
// Cambiar el texto del botón temporalmente para indicar éxito
|
|
52
|
+
this.$copyButton.textContent = '✓ Copiado!';
|
|
53
|
+
this.$copyButton.classList.add('copied');
|
|
54
|
+
|
|
55
|
+
// Restaurar el texto original después de 1.5 segundos
|
|
56
|
+
setTimeout(() => {
|
|
57
|
+
this.$copyButton.textContent = 'Copiar';
|
|
58
|
+
this.$copyButton.classList.remove('copied');
|
|
59
|
+
}, 1500);
|
|
60
|
+
})
|
|
61
|
+
.catch(err => {
|
|
62
|
+
console.error('Error al copiar al portapapeles: ', err);
|
|
63
|
+
this.$copyButton.textContent = '❌ Error!';
|
|
64
|
+
|
|
65
|
+
setTimeout(() => {
|
|
66
|
+
this.$copyButton.textContent = 'Copiar';
|
|
67
|
+
}, 1500);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
highlightCode(code, language) {
|
|
72
|
+
// Escape HTML to prevent XSS
|
|
73
|
+
const escapedCode = this.escapeHtml(code);
|
|
74
|
+
|
|
75
|
+
switch (language.toLowerCase()) {
|
|
76
|
+
case 'javascript':
|
|
77
|
+
case 'js':
|
|
78
|
+
return this.highlightJavaScript(escapedCode);
|
|
79
|
+
case 'html':
|
|
80
|
+
return this.highlightHtml(escapedCode);
|
|
81
|
+
case 'css':
|
|
82
|
+
return this.highlightCss(escapedCode);
|
|
83
|
+
default:
|
|
84
|
+
return escapedCode;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
escapeHtml(text) {
|
|
89
|
+
return text
|
|
90
|
+
.replace(/&/g, '&')
|
|
91
|
+
.replace(/</g, '<')
|
|
92
|
+
.replace(/>/g, '>')
|
|
93
|
+
.replace(/"/g, '"');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
highlightJavaScript(code) {
|
|
97
|
+
// Este método fue rediseñado por completo para evitar problemas de superposición
|
|
98
|
+
let tokenizedCode = code;
|
|
99
|
+
|
|
100
|
+
// Creamos una estructura para almacenar todos los tokens y luego reemplazarlos de una sola vez
|
|
101
|
+
const tokens = [];
|
|
102
|
+
|
|
103
|
+
// Función para generar un ID único para cada token
|
|
104
|
+
const generateTokenId = (index) => `__TOKEN_${index}__`;
|
|
105
|
+
|
|
106
|
+
// Función para extraer tokens y reemplazarlos con marcadores
|
|
107
|
+
const extractTokens = (regex, className) => {
|
|
108
|
+
tokenizedCode = tokenizedCode.replace(regex, (match) => {
|
|
109
|
+
const tokenId = generateTokenId(tokens.length);
|
|
110
|
+
tokens.push({ id: tokenId, content: match, className });
|
|
111
|
+
return tokenId;
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// Extraer los tokens en orden específico para evitar interferencias
|
|
116
|
+
|
|
117
|
+
// 1. Primero los comentarios
|
|
118
|
+
extractTokens(/\/\/.*$/gm, 'code-comment');
|
|
119
|
+
extractTokens(/\/\*[\s\S]*?\*\//g, 'code-comment');
|
|
120
|
+
|
|
121
|
+
// 2. Luego las cadenas de texto
|
|
122
|
+
extractTokens(/(['"`])(?:\\.|[^\\])*?\1/g, 'code-string');
|
|
123
|
+
|
|
124
|
+
// 3. Luego los números
|
|
125
|
+
extractTokens(/\b(\d+(?:\.\d+)?)\b/g, 'code-number');
|
|
126
|
+
|
|
127
|
+
// 4. Palabras clave
|
|
128
|
+
const keywords = [
|
|
129
|
+
'await', 'async', 'break', 'case', 'catch', 'class', 'const', 'continue',
|
|
130
|
+
'debugger', 'default', 'delete', 'do', 'else', 'export', 'extends', 'false',
|
|
131
|
+
'finally', 'for', 'function', 'if', 'import', 'in', 'instanceof', 'new',
|
|
132
|
+
'null', 'return', 'super', 'switch', 'this', 'throw', 'true', 'try',
|
|
133
|
+
'typeof', 'var', 'void', 'while', 'with', 'yield', 'let'
|
|
134
|
+
];
|
|
135
|
+
extractTokens(new RegExp(`\\b(${keywords.join('|')})\\b`, 'g'), 'code-keyword');
|
|
136
|
+
|
|
137
|
+
// 5. Objetos y métodos integrados
|
|
138
|
+
const builtins = [
|
|
139
|
+
'Array', 'Boolean', 'Date', 'Error', 'Function', 'JSON', 'Math',
|
|
140
|
+
'Number', 'Object', 'Promise', 'RegExp', 'String', 'console', 'document',
|
|
141
|
+
'window', 'slice', 'Map', 'Set', 'Symbol', 'setTimeout', 'setInterval'
|
|
142
|
+
];
|
|
143
|
+
extractTokens(new RegExp(`\\b(${builtins.join('|')})\\b`, 'g'), 'code-builtin');
|
|
144
|
+
|
|
145
|
+
// 6. Métodos y llamadas a funciones (esto debe ir después de extraer las palabras clave)
|
|
146
|
+
extractTokens(/(\.)([a-zA-Z_$][\w$]*)\s*(?=\()/g, 'code-method');
|
|
147
|
+
|
|
148
|
+
// Reemplazar los tokens con el HTML resaltado
|
|
149
|
+
tokens.forEach(token => {
|
|
150
|
+
tokenizedCode = tokenizedCode.replace(
|
|
151
|
+
token.id,
|
|
152
|
+
`<span class="${token.className}">${token.content}</span>`
|
|
153
|
+
);
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
return tokenizedCode;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
highlightHtml(code) {
|
|
160
|
+
// Utilizamos un enfoque similar al de JavaScript para HTML
|
|
161
|
+
let tokenizedCode = code;
|
|
162
|
+
const tokens = [];
|
|
163
|
+
const generateTokenId = (index) => `__TOKEN_${index}__`;
|
|
164
|
+
|
|
165
|
+
const extractTokens = (regex, className) => {
|
|
166
|
+
tokenizedCode = tokenizedCode.replace(regex, (match) => {
|
|
167
|
+
const tokenId = generateTokenId(tokens.length);
|
|
168
|
+
tokens.push({ id: tokenId, content: match, className });
|
|
169
|
+
return tokenId;
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// Extraer tokens HTML en orden
|
|
174
|
+
|
|
175
|
+
// 1. Comentarios HTML
|
|
176
|
+
extractTokens(/<!--[\s\S]*?-->/g, 'code-comment');
|
|
177
|
+
|
|
178
|
+
// 2. Etiquetas HTML
|
|
179
|
+
extractTokens(/(<\/?[a-zA-Z0-9-]+)(\s|>)/g, (match, tag, end) => {
|
|
180
|
+
const tokenId = generateTokenId(tokens.length);
|
|
181
|
+
tokens.push({
|
|
182
|
+
id: tokenId,
|
|
183
|
+
content: `<span class="code-tag">${tag}</span>${end}`,
|
|
184
|
+
className: 'no-class' // Ya incluye su propio elemento span
|
|
185
|
+
});
|
|
186
|
+
return tokenId;
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// 3. Atributos HTML
|
|
190
|
+
extractTokens(/\s([a-zA-Z0-9-]+)=("|')/g, (match, attr, quote) => {
|
|
191
|
+
const tokenId = generateTokenId(tokens.length);
|
|
192
|
+
tokens.push({
|
|
193
|
+
id: tokenId,
|
|
194
|
+
content: ` <span class="code-attribute">${attr}</span>=${quote}`,
|
|
195
|
+
className: 'no-class' // Ya incluye su propio elemento span
|
|
196
|
+
});
|
|
197
|
+
return tokenId;
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// Reemplazar los tokens con el HTML resaltado
|
|
201
|
+
tokens.forEach(token => {
|
|
202
|
+
tokenizedCode = tokenizedCode.replace(
|
|
203
|
+
token.id,
|
|
204
|
+
token.className === 'no-class' ? token.content : `<span class="${token.className}">${token.content}</span>`
|
|
205
|
+
);
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
return tokenizedCode;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
highlightCss(code) {
|
|
212
|
+
// Utilizamos el mismo enfoque para CSS
|
|
213
|
+
let tokenizedCode = code;
|
|
214
|
+
const tokens = [];
|
|
215
|
+
const generateTokenId = (index) => `__TOKEN_${index}__`;
|
|
216
|
+
|
|
217
|
+
const extractTokens = (regex, className, processor = null) => {
|
|
218
|
+
tokenizedCode = tokenizedCode.replace(regex, (match, ...groups) => {
|
|
219
|
+
const tokenId = generateTokenId(tokens.length);
|
|
220
|
+
const content = processor ? processor(match, ...groups) : match;
|
|
221
|
+
tokens.push({ id: tokenId, content, className });
|
|
222
|
+
return tokenId;
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// Comentarios CSS
|
|
227
|
+
extractTokens(/\/\*[\s\S]*?\*\//g, 'code-comment');
|
|
228
|
+
|
|
229
|
+
// Selectores CSS
|
|
230
|
+
extractTokens(/([^\{\}]+)(?=\{)/g, 'code-selector');
|
|
231
|
+
|
|
232
|
+
// Propiedad y valor CSS (manipulando la coincidencia para preservar la estructura)
|
|
233
|
+
tokenizedCode = tokenizedCode.replace(/(\s*)([a-zA-Z-]+)(\s*):(\s*)([^;\{\}]+)(?=;)/g, (match, space1, prop, space2, space3, value) => {
|
|
234
|
+
const propTokenId = generateTokenId(tokens.length);
|
|
235
|
+
tokens.push({ id: propTokenId, content: prop, className: 'code-property' });
|
|
236
|
+
|
|
237
|
+
const valueTokenId = generateTokenId(tokens.length);
|
|
238
|
+
tokens.push({ id: valueTokenId, content: value, className: 'code-value' });
|
|
239
|
+
|
|
240
|
+
return `${space1}<span class="code-property">${prop}</span>${space2}:${space3}<span class="code-value">${value}</span>`;
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
// Colores CSS
|
|
244
|
+
extractTokens(/#([a-fA-F0-9]{3,6})\b/g, 'code-color');
|
|
245
|
+
|
|
246
|
+
// Reemplazar los tokens restantes
|
|
247
|
+
tokens.forEach(token => {
|
|
248
|
+
if (token.className !== 'no-replace') {
|
|
249
|
+
tokenizedCode = tokenizedCode.replace(
|
|
250
|
+
token.id,
|
|
251
|
+
`<span class="${token.className}">${token.content}</span>`
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
return tokenizedCode;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
customElements.define('slice-codevisualizer', CodeVisualizer);
|
|
261
|
+
|
|
262
|
+
|