u2ui 1.0.0 → 1.4.5
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/LICENSE +21 -21
- package/README.md +36 -36
- package/attr/behavior/README.md +6 -4
- package/attr/behavior/behavior.js +265 -261
- package/attr/behavior/manifest.json +42 -42
- package/attr/confirm/README.md +8 -8
- package/attr/confirm/confirm.js +86 -90
- package/attr/confirm/manifest.json +42 -42
- package/attr/disableif/README.md +37 -0
- package/attr/disableif/disableif.js +59 -0
- package/attr/disableif/manifest.json +38 -0
- package/attr/draghandle/README.md +15 -15
- package/attr/draghandle/draghandle.js +24 -42
- package/attr/draghandle/manifest.json +30 -0
- package/attr/dropzone/README.md +32 -0
- package/attr/dropzone/dropzone.js +485 -0
- package/attr/dropzone/manifest.json +36 -0
- package/attr/focusgroup/README.md +9 -9
- package/attr/focusgroup/focusgroup.js +97 -100
- package/attr/focusgroup/manifest.json +30 -38
- package/attr/href/README.md +5 -5
- package/attr/href/href.js +50 -42
- package/attr/href/manifest.json +42 -42
- package/attr/intersect/README.md +15 -15
- package/attr/intersect/intersect.js +98 -98
- package/attr/intersect/manifest.json +44 -57
- package/attr/lightbox/README.md +27 -0
- package/attr/lightbox/lightbox.js +120 -0
- package/attr/lightbox/manifest.json +29 -0
- package/attr/movable/README.md +27 -0
- package/attr/movable/manifest.json +47 -0
- package/attr/movable/movable.js +111 -0
- package/attr/navigable/README.md +9 -9
- package/attr/navigable/TargetObserver.js +90 -91
- package/attr/navigable/U2TargetObserver.js +75 -75
- package/attr/navigable/manifest.json +34 -42
- package/attr/navigable/navigable.js +85 -87
- package/attr/parallax/README.md +10 -10
- package/attr/parallax/manifest.json +36 -0
- package/attr/parallax/parallax.js +119 -119
- package/attr/scrollspy/README.md +43 -0
- package/attr/scrollspy/manifest.json +28 -0
- package/attr/scrollspy/scrollspy.js +85 -0
- package/attr/selectable/README.md +42 -0
- package/attr/selectable/SelectionManager.js +171 -0
- package/attr/selectable/manifest.json +33 -0
- package/attr/selectable/selectable.js +28 -0
- package/attr/skin/README.md +15 -16
- package/attr/skin/manifest.json +40 -0
- package/attr/skin/skin.css +49 -50
- package/attr/store/README.md +41 -0
- package/attr/store/manifest.json +28 -0
- package/attr/store/store.js +62 -0
- package/class/badge/README.md +2 -2
- package/class/badge/badge.css +34 -34
- package/class/card/README.md +51 -0
- package/class/card/card.css +31 -0
- package/class/flex/README.md +16 -16
- package/class/flex/flex.css +15 -25
- package/class/grid/README.md +18 -18
- package/class/grid/grid.css +38 -40
- package/class/reset/README.md +6 -6
- package/class/reset/reset.css +8 -8
- package/class/table/README.md +22 -21
- package/class/table/table.css +125 -125
- package/class/unstyle/README.md +7 -5
- package/class/unstyle/unstyle.css +14 -12
- package/class/width/README.md +18 -18
- package/class/width/width.css +21 -22
- package/css/README.md +11 -0
- package/css/base/README.md +8 -2
- package/css/base/base.css +153 -127
- package/css/base/beta.css +34 -50
- package/css/base/full.css +5 -5
- package/css/base/nomotion.css +8 -8
- package/css/base/print.css +36 -36
- package/css/classless/README.md +10 -4
- package/css/classless/aria.css +51 -64
- package/css/classless/classless.css +118 -124
- package/css/classless/full.css +11 -11
- package/css/classless/more.css +314 -340
- package/css/classless/simple.css +314 -103
- package/css/classless/snippeds/a/icons.css +66 -12
- package/css/classless/snippeds/a/tests.html +118 -0
- package/css/classless/snippeds/blockquote/big-quotes.css +36 -0
- package/css/classless/snippeds/blockquote/tests.html +62 -0
- package/css/classless/snippeds/button/square.css +22 -0
- package/css/classless/snippeds/button/tests.html +53 -0
- package/css/classless/snippeds/experiments/aria-header-nav-dropdown.css +46 -0
- package/css/classless/snippeds/hr/gradient.css +2 -2
- package/css/classless/snippeds/hr/section_sign.css +16 -16
- package/css/classless/snippeds/hr/tests.html +49 -49
- package/css/classless/snippeds/p/indent.css +9 -0
- package/css/classless/snippeds/p/initial.css +9 -0
- package/css/classless/snippeds/p/tests.html +60 -0
- package/css/classless/variables.css +132 -99
- package/css/norm/README.md +7 -1
- package/css/norm/beta.css +41 -39
- package/css/norm/norm.css +89 -98
- package/css/norm/oldies.css +71 -60
- package/css/{classes → utils}/README.md +10 -4
- package/css/{classes/classes.css → utils/utils.css} +78 -78
- package/el/accordion/README.md +60 -59
- package/el/accordion/accordion.css +11 -7
- package/el/accordion/accordion.js +211 -258
- package/el/accordion/manifest.json +44 -57
- package/el/alert/README.md +86 -67
- package/el/alert/alert.css +72 -73
- package/el/alert/alert.js +206 -187
- package/el/alert/manifest.json +59 -77
- package/el/breadcrumb/README.md +41 -0
- package/el/breadcrumb/breadcrumb.css +22 -0
- package/el/breadcrumb/breadcrumb.js +119 -0
- package/el/breadcrumb/manifest.json +42 -0
- package/el/buttongroup/README.md +36 -36
- package/el/buttongroup/buttongroup.css +38 -30
- package/el/buttongroup/buttongroup.js +68 -56
- package/el/buttongroup/manifest.json +28 -0
- package/el/bytes/README.md +4 -4
- package/el/bytes/bytes.css +6 -6
- package/el/bytes/bytes.js +98 -97
- package/el/bytes/manifest.json +90 -95
- package/el/calendar/README.md +64 -0
- package/el/calendar/calendar.css +36 -0
- package/el/calendar/calendar.js +391 -0
- package/el/calendar/ext/drag.js +69 -0
- package/el/calendar/ext/keyNavigation.js +101 -0
- package/el/calendar/manifest.json +69 -0
- package/el/carousel/README.md +14 -14
- package/el/carousel/carousel.css +45 -46
- package/el/carousel/carousel.js +398 -371
- package/el/carousel/manifest.json +44 -58
- package/el/carousel-nav/README.md +13 -14
- package/el/carousel-nav/carousel-nav.js +74 -74
- package/el/carousel-nav/manifest.json +31 -0
- package/el/chart/README.md +46 -0
- package/el/chart/chart.css +7 -0
- package/el/chart/chart.js +188 -0
- package/el/chart/engines/apexcharts.js +103 -0
- package/el/chart/engines/billboard.js +79 -0
- package/el/chart/engines/chart.js.js +32 -0
- package/el/chart/engines/chartist.js +74 -0
- package/el/chart/engines/echarts.js +65 -0
- package/el/chart/engines/frappe.js +49 -0
- package/el/chart/engines/nvd3.js +139 -0
- package/el/chart/engines/plotly.js +73 -0
- package/el/chart/manifest.json +54 -0
- package/el/code/README.md +21 -21
- package/el/code/code.css +46 -46
- package/el/code/code.js +291 -289
- package/el/code/manifest.json +59 -66
- package/el/cookiebanner/README.md +70 -0
- package/el/cookiebanner/cookiebanner.css +42 -0
- package/el/cookiebanner/cookiebanner.js +161 -0
- package/el/cookiebanner/extensions/googleConsentMode.js +36 -0
- package/el/cookiebanner/knownItems.js +291 -0
- package/el/cookiebanner/manifest.json +85 -0
- package/el/cookiebanner/ui.js +426 -0
- package/el/copy/README.md +9 -7
- package/el/copy/copy.css +3 -3
- package/el/copy/copy.js +89 -117
- package/el/copy/manifest.json +37 -49
- package/el/counter/README.md +12 -9
- package/el/counter/counter.css +8 -8
- package/el/counter/counter.js +96 -95
- package/el/counter/manifest.json +50 -59
- package/el/drawer/README.md +35 -0
- package/el/drawer/drawer.css +77 -0
- package/el/drawer/drawer.js +166 -0
- package/el/drawer/manifest.json +27 -0
- package/el/fields/README.md +34 -0
- package/el/fields/fields.css +5 -0
- package/el/fields/fields.js +133 -0
- package/el/fields/manifest.json +32 -0
- package/el/ico/README.md +119 -118
- package/el/ico/debug.js +86 -0
- package/el/ico/font/Font Awesome.css +22 -22
- package/el/ico/font/LigatureSymbols.css +7 -7
- package/el/ico/font/Material Icons.css +6 -6
- package/el/ico/font/RemixFilled.css +8 -8
- package/el/ico/font/RemixOutlined.css +8 -8
- package/el/ico/font/old/anicons.css +31 -31
- package/el/ico/font/old/devicons.css +210 -210
- package/el/ico/font/old/material.all.css +36 -36
- package/el/ico/font/old/remix.css +15 -15
- package/el/ico/font/old/utf8.css +54 -54
- package/el/ico/ico.css +122 -110
- package/el/ico/ico.js +163 -189
- package/el/ico/manifest.json +68 -86
- package/el/input/README.md +41 -39
- package/el/input/input.css +95 -35
- package/el/input/input.js +682 -331
- package/el/input/manifest.json +54 -0
- package/el/maintitlebar/README.md +39 -0
- package/el/maintitlebar/maintitlebar.css +40 -0
- package/el/maintitlebar/maintitlebar.js +17 -0
- package/el/maintitlebar/manifest.json +32 -0
- package/el/masonry/README.md +19 -19
- package/el/masonry/manifest.json +49 -60
- package/el/masonry/masonry.css +27 -27
- package/el/masonry/masonry.js +93 -92
- package/el/menubutton/README.md +39 -0
- package/el/menubutton/manifest.json +44 -0
- package/el/{splitbutton/splitbutton.css → menubutton/menubutton.css} +51 -47
- package/el/menubutton/menubutton.js +90 -0
- package/el/number/README.md +9 -6
- package/el/number/manifest.json +162 -121
- package/el/number/number.css +6 -6
- package/el/number/number.js +67 -67
- package/el/out/README.md +5 -5
- package/el/out/manifest.json +26 -38
- package/el/out/out.css +2 -2
- package/el/out/out.js +42 -59
- package/el/pagination/README.md +32 -0
- package/el/pagination/manifest.json +47 -0
- package/el/pagination/pagination.css +27 -0
- package/el/pagination/pagination.js +147 -0
- package/el/parallax-bg/README.md +26 -6
- package/el/parallax-bg/manifest.json +32 -0
- package/el/parallax-bg/parallax-bg.css +13 -13
- package/el/parallax-bg/parallax-bg.js +197 -186
- package/el/qrcode/README.md +7 -7
- package/el/qrcode/manifest.json +32 -43
- package/el/qrcode/package.json +22 -22
- package/el/qrcode/qrcode.css +13 -13
- package/el/qrcode/qrcode.js +53 -45
- package/el/rating/README.md +9 -20
- package/el/rating/manifest.json +52 -65
- package/el/rating/rating.css +10 -10
- package/el/rating/rating.js +148 -139
- package/el/responsive/README.md +43 -0
- package/el/responsive/manifest.json +41 -0
- package/el/responsive/responsive.css +4 -0
- package/el/responsive/responsive.js +143 -0
- package/el/rte/README.md +10 -10
- package/el/rte/manifest.json +33 -0
- package/el/rte/rte.css +9 -9
- package/el/rte/rte.js +56 -56
- package/el/skeleton/README.md +3 -3
- package/el/skeleton/manifest.json +37 -51
- package/el/skeleton/skeleton.css +67 -60
- package/el/skeleton/skeleton.js +71 -72
- package/el/splitpanel/README.md +33 -13
- package/el/splitpanel/manifest.json +36 -49
- package/el/splitpanel/splitpanel.css +20 -17
- package/el/splitpanel/splitpanel.js +117 -116
- package/el/spot/README.md +36 -0
- package/el/spot/manifest.json +55 -0
- package/el/spot/spot.css +23 -0
- package/el/spot/spot.js +106 -0
- package/el/system/README.md +29 -0
- package/el/system/demoHtml.html +660 -0
- package/el/system/manifest.json +32 -0
- package/el/system/styler.js +661 -0
- package/el/system/system.js +84 -0
- package/el/table/README.md +80 -68
- package/el/table/ext/autoFormatTable.js +228 -0
- package/el/table/manifest.json +32 -43
- package/el/table/table.css +4 -59
- package/el/table/table.js +468 -194
- package/el/tabs/README.md +17 -17
- package/el/tabs/manifest.json +44 -59
- package/el/tabs/tabs.css +22 -22
- package/el/tabs/tabs.js +192 -210
- package/el/textfit/README.md +7 -7
- package/el/textfit/manifest.json +33 -45
- package/el/textfit/textfit.css +5 -5
- package/el/textfit/textfit.js +80 -80
- package/el/time/README.md +6 -5
- package/el/time/manifest.json +79 -118
- package/el/time/time.js +179 -168
- package/el/toc/README.md +27 -0
- package/el/toc/manifest.json +36 -0
- package/el/toc/toc.css +3 -0
- package/el/toc/toc.js +85 -0
- package/el/tooltip/README.md +13 -10
- package/el/tooltip/manifest.json +56 -69
- package/el/tooltip/tooltip.css +100 -97
- package/el/tooltip/tooltip.js +146 -82
- package/el/tree/README.md +133 -0
- package/el/tree/ext/dnd.js +53 -0
- package/el/tree/ext/item.js +35 -0
- package/el/tree/manifest.json +61 -0
- package/el/tree/tree.css +18 -0
- package/el/tree/tree.js +236 -0
- package/el/typewriter/README.md +11 -11
- package/el/typewriter/manifest.json +45 -66
- package/el/typewriter/typewriter.css +6 -6
- package/el/typewriter/typewriter.js +161 -166
- package/el/video/README.md +37 -0
- package/el/video/manifest.json +96 -0
- package/el/video/video.js +550 -0
- package/js/Placer/Placer.js +156 -156
- package/js/Placer/README.md +14 -16
- package/js/PointerObserver/PointerObserver-no-scroll.js +146 -0
- package/js/PointerObserver/PointerObserver.js +161 -130
- package/js/PointerObserver/README.md +6 -7
- package/js/SelectorObserver/README.md +9 -9
- package/js/SelectorObserver/SelectorObserver.js +199 -200
- package/js/Tour/README.md +56 -0
- package/js/Tour/Tour.js +156 -0
- package/js/contextmenu/README.md +6 -31
- package/js/contextmenu/contextmenu.js +338 -336
- package/js/dialog/README.md +8 -7
- package/js/dialog/dialog.js +228 -261
- package/js/drag/README.md +28 -0
- package/js/drag/drag.js +38 -0
- package/js/drag/indicateDrop.js +80 -0
- package/js/loading/README.md +24 -0
- package/js/loading/loading.js +139 -0
- package/js/navigator/README.md +26 -0
- package/js/navigator/navigator.js +430 -0
- package/js/navigator/url-change-event.js +29 -0
- package/js/rte/README.md +13 -14
- package/js/rte/old/NodeCleaner.js +315 -315
- package/js/rte/old/Rte/Rte.ui.mjs +154 -154
- package/js/rte/old/Rte/index.mjs +5 -5
- package/js/rte/old/Rte/main.css +189 -189
- package/js/rte/old/old.rte.js +131 -131
- package/js/rte/old/range-selection.old.js +394 -394
- package/js/rte/rte.js +7 -7
- package/js/rte/src/behavior.js +228 -228
- package/js/rte/src/events.js +73 -73
- package/js/rte/src/fixes.js +250 -250
- package/js/rte/src/range.js +469 -472
- package/js/rte/src/rte.js +71 -71
- package/js/rte/src/ui/items/ai.js +166 -167
- package/js/rte/src/ui/items/code.js +93 -93
- package/js/rte/src/ui/items/undo.js +183 -183
- package/js/rte/src/ui.items.js +6 -7
- package/js/rte/src/ui.js +268 -268
- package/js/rte/src/util/indentHtml.js +21 -15
- package/js/serviceWorker/README.md +17 -0
- package/js/serviceWorker/serviceWorker.js +84 -0
- package/js/serviceWorker/sw.js +221 -0
- package/js/shortcut/README.md +6 -6
- package/js/shortcut/shortcut.js +53 -89
- package/package.json +9 -8
- package/theme/brutalist/README.md +10 -0
- package/theme/brutalist/theme.css +98 -0
- package/theme/elegance/README.md +10 -0
- package/theme/elegance/theme.css +120 -0
- package/theme/luxury/README.md +10 -0
- package/theme/luxury/theme.css +107 -0
- package/theme/minimalism/README.md +10 -0
- package/theme/minimalism/theme.css +103 -0
- package/theme/natur/README.md +10 -0
- package/theme/natur/theme.css +101 -0
- package/theme/pastell/README.md +10 -0
- package/theme/pastell/theme.css +99 -0
- package/theme/pop/README.md +10 -0
- package/theme/pop/theme.css +101 -0
- package/theme/prompt.css +175 -0
- package/theme/retro/README.md +10 -0
- package/theme/retro/theme.css +99 -0
- package/theme/soft/README.md +10 -0
- package/theme/soft/theme.css +84 -0
- package/theme/tech/README.md +10 -0
- package/theme/tech/theme.css +98 -0
- package/theme/test/README.md +10 -0
- package/theme/test/theme.css +109 -0
- package/theme/test.html +284 -0
- package/theme/tmp/README.md +10 -0
- package/theme/tmp/theme.css +323 -0
- package/u2/auto.js +156 -161
- package/u2/auto.ui.js +82 -85
- package/u2/plan-scoped-refactoring.md +236 -0
- package/u2/projects.json +757 -467
- package/u2/tools/baseElement.js +217 -95
- package/u2/tools/baseElement.test.html +139 -119
- package/u2/tools/ce-inspector.js +307 -307
- package/u2/tools/ce-inspector.test.html +67 -65
- package/u2/tools/ce-manfest-from-element.js +207 -207
- package/u2/tools/dev-iframe.js +212 -213
- package/u2/tools/dev-iframe.test.html +72 -74
- package/u2/tools/eventsExplorer.js +102 -101
- package/u2/tools/logo/u1.svg +9 -9
- package/u2/tools/promiseElementById.js +14 -0
- package/u2/tools/update.repos.json.js +259 -234
- package/u2/tools/update.skill.js +176 -0
- package/u2/tools/variable-styler.js +317 -0
- package/u2/u2.js +30 -14
- package/u2/utils.js +61 -59
- package/.htaccess +0 -7
- package/attr/behavior/tests/minimal.html +0 -19
- package/attr/behavior/tests/test.html +0 -98
- package/attr/confirm/tests/minimal.html +0 -23
- package/attr/confirm/tests/test.html +0 -79
- package/attr/draghandle/tests/minimal.html +0 -44
- package/attr/focusgroup/tests/minimal.html +0 -27
- package/attr/focusgroup/tests/test.html +0 -154
- package/attr/href/tests/minimal.html +0 -17
- package/attr/href/tests/test.html +0 -70
- package/attr/intersect/tests/minimal.html +0 -30
- package/attr/intersect/tests/test.html +0 -64
- package/attr/navigable/tests/U1TargetObserver.html +0 -56
- package/attr/navigable/tests/minimal.html +0 -17
- package/attr/navigable/tests/targetObserver.html +0 -106
- package/attr/navigable/tests/test.html +0 -84
- package/attr/parallax/tests/minimal.html +0 -25
- package/attr/parallax/tests/performance.html +0 -102
- package/attr/parallax/tests/test.html +0 -108
- package/attr/skin/tests/minimal.html +0 -34
- package/attr/skin/tests/test.html +0 -96
- package/class/badge/tests/minimal.html +0 -17
- package/class/badge/tests/test.html +0 -112
- package/class/card1/README.md +0 -45
- package/class/card1/card1.css +0 -30
- package/class/card1/tests/minimal.html +0 -33
- package/class/card1/tests/test.html +0 -78
- package/class/flex/tests/minimal.html +0 -31
- package/class/flex/tests/test.html +0 -58
- package/class/grid/tests/minimal.html +0 -34
- package/class/grid/tests/test.html +0 -78
- package/class/input/README.md +0 -49
- package/class/input/input.css +0 -33
- package/class/input/tests/minimal.html +0 -39
- package/class/input/tests/test.html +0 -29
- package/class/reset/tests/minimal.html +0 -23
- package/class/table/tests/minimal.html +0 -40
- package/class/table/tests/test.html +0 -226
- package/class/unstyle/tests/minimal.html +0 -22
- package/class/unstyle/tests/test.html +0 -32
- package/class/width/tests/minimal.html +0 -27
- package/class/width/tests/test.html +0 -101
- package/css/base/tests/nomotion.html +0 -89
- package/css/base/tests/test.html +0 -539
- package/css/classes/tests/test.html +0 -63
- package/css/classless/snippeds/experiments/conventions.css +0 -41
- package/css/classless/tests/aria.html +0 -101
- package/css/classless/tests/foreign/classless-almond.css.html +0 -445
- package/css/classless/tests/foreign/classless-classless.css.html +0 -831
- package/css/classless/tests/foreign/classless-mvp.html +0 -415
- package/css/classless/tests/foreign/classless.sakura.html +0 -224
- package/css/classless/tests/foreign/stylestage.dev.html +0 -304
- package/css/classless/tests/foreign/test-homogenizer.html +0 -433
- package/css/classless/tests/foreign/test-html5-elements-tester.html +0 -956
- package/css/classless/tests/foreign/test-opinionated_css.html +0 -148
- package/css/classless/tests/list-bullet.html +0 -110
- package/css/classless/tests/more.html +0 -246
- package/css/classless/tests/oklch.experiments.html +0 -280
- package/css/classless/tests/test.html +0 -106
- package/css/classless/tests/variables.html +0 -109
- package/css/norm/tests/test.html +0 -434
- package/css/norm/tests/test.js +0 -103
- package/el/accordion/tests/minimal.html +0 -44
- package/el/accordion/tests/test.html +0 -168
- package/el/alert/alert copy.js +0 -224
- package/el/alert/tests/minimal.html +0 -36
- package/el/alert/tests/test.html +0 -105
- package/el/buttongroup/tests/minimal.html +0 -31
- package/el/buttongroup/tests/test.html +0 -83
- package/el/bytes/tests/minimal.html +0 -19
- package/el/bytes/tests/test.html +0 -117
- package/el/carousel/tests/experiments.html +0 -77
- package/el/carousel/tests/minimal.html +0 -31
- package/el/carousel/tests/nested.html +0 -54
- package/el/carousel/tests/test.html +0 -136
- package/el/carousel-nav/tests/minimal.html +0 -32
- package/el/carousel-nav/tests/test.html +0 -59
- package/el/code/tests/minimal.html +0 -35
- package/el/code/tests/test.html +0 -162
- package/el/copy/tests/minimal.html +0 -21
- package/el/copy/tests/test.html +0 -75
- package/el/counter/tests/minimal.html +0 -27
- package/el/counter/tests/test.html +0 -106
- package/el/ico/tests/combinations.html +0 -86
- package/el/ico/tests/emojis.html +0 -213
- package/el/ico/tests/fonts.html +0 -110
- package/el/ico/tests/ico-directory.html +0 -254
- package/el/ico/tests/minimal.html +0 -46
- package/el/ico/tests/test.html +0 -210
- package/el/ico/tests/util-multi.svg +0 -6
- package/el/ico/tests/util.css +0 -2
- package/el/ico/tests/util.js +0 -110
- package/el/input/tests/formParticipation.html +0 -113
- package/el/input/tests/minimal.html +0 -33
- package/el/input/tests/test.html +0 -258
- package/el/masonry/tests/minimal.html +0 -39
- package/el/masonry/tests/test.html +0 -42
- package/el/number/tests/minimal.html +0 -25
- package/el/number/tests/test.html +0 -138
- package/el/out/tests/minimal.html +0 -25
- package/el/out/tests/test.html +0 -37
- package/el/parallax-bg/tests/bg.jpg +0 -0
- package/el/parallax-bg/tests/bg1.jpg +0 -0
- package/el/parallax-bg/tests/bg2.jpg +0 -0
- package/el/parallax-bg/tests/demo.html +0 -88
- package/el/parallax-bg/tests/minimal.html +0 -30
- package/el/parallax-bg/tests/test.html +0 -64
- package/el/parallax-bg/tests/visible.html +0 -90
- package/el/qrcode/tests/minimal.html +0 -26
- package/el/qrcode/tests/test.html +0 -31
- package/el/rating/tests/minimal.html +0 -26
- package/el/rating/tests/tests.html +0 -77
- package/el/rte/tests/minimal.html +0 -25
- package/el/rte/tests/test.html +0 -37
- package/el/skeleton/tests/minimal.html +0 -22
- package/el/skeleton/tests/test.html +0 -22
- package/el/splitbutton/README.md +0 -39
- package/el/splitbutton/splitbutton.js +0 -26
- package/el/splitbutton/tests/minimal.html +0 -30
- package/el/splitbutton/tests/test.html +0 -68
- package/el/splitpanel/tests/minimal.html +0 -31
- package/el/splitpanel/tests/tests.html +0 -121
- package/el/table/tests/minimal.html +0 -38
- package/el/table/tests/test.html +0 -108
- package/el/tabs/tests/minimal.html +0 -35
- package/el/tabs/tests/test.html +0 -180
- package/el/textfit/tests/minimal.html +0 -25
- package/el/textfit/tests/test.html +0 -26
- package/el/time/tests/minimal.html +0 -19
- package/el/time/tests/test.html +0 -160
- package/el/time/time copy.js +0 -141
- package/el/time/time.old.uhtml.js +0 -129
- package/el/tooltip/tests/minimal.html +0 -25
- package/el/tooltip/tests/test.html +0 -178
- package/el/tree1/README.md +0 -111
- package/el/tree1/manifest.json +0 -78
- package/el/tree1/tests/animated.html +0 -134
- package/el/tree1/tests/custom.html +0 -51
- package/el/tree1/tests/minimal.html +0 -44
- package/el/tree1/tests/test.html +0 -260
- package/el/tree1/tree1.css +0 -26
- package/el/tree1/tree1.js +0 -265
- package/el/typewriter/tests/minimal.html +0 -25
- package/el/typewriter/tests/test.html +0 -78
- package/js/Placer/tests/minimal.html +0 -34
- package/js/Placer/tests/test.html +0 -49
- package/js/PointerObserver/tests/minimal.html +0 -29
- package/js/PointerObserver/tests/test.html +0 -35
- package/js/SelectorObserver/tests/minimal.html +0 -21
- package/js/SelectorObserver/tests/test.html +0 -57
- package/js/SelectorObserver/tests/tests.html +0 -161
- package/js/contextmenu/tests/minimal.html +0 -44
- package/js/contextmenu/tests/test.html +0 -131
- package/js/dialog/tests/minimal.html +0 -29
- package/js/dialog/tests/notification.mp3 +0 -0
- package/js/dialog/tests/test.html +0 -135
- package/js/rte/tests/ai.html +0 -81
- package/js/rte/tests/behavior.html +0 -88
- package/js/rte/tests/events.html +0 -69
- package/js/rte/tests/fixes.html +0 -95
- package/js/rte/tests/minimal.html +0 -34
- package/js/rte/tests/notes.md +0 -6
- package/js/rte/tests/range.html +0 -167
- package/js/rte/tests/selection-explorer.html +0 -222
- package/js/rte/tests/test.html +0 -92
- package/js/shortcut/tests/minimal.html +0 -23
- package/js/shortcut/tests/test.html +0 -68
- package/u2/experiments/Waiter/test.html +0 -132
- package/u2/experiments/getElementByIdPromise/test.html +0 -76
- package/u2/experiments/patchInputValue.html +0 -124
- package/u2/experiments/radiobutton/test.html +0 -75
- package/u2/experiments/tests/test.html +0 -223
- package/u2/experiments/u1-responsive/responsive.js +0 -62
- package/u2/experiments/u1-responsive/test.html +0 -65
- package/u2/experiments/u2Element.js +0 -139
- package/u2/experiments/u2Element.test.html +0 -47
- package/u2/old-stuff/IterableWeakMap/mod.js +0 -70
- package/u2/old-stuff/css/onStyleSheet/mod.js +0 -114
- package/u2/old-stuff/css/onStyleSheet/monkeypatches.js +0 -28
- package/u2/old-stuff/css/onStyleSheet/test/include.css +0 -19
- package/u2/old-stuff/css/onStyleSheet/test/style-has-include.css +0 -6
- package/u2/old-stuff/css/onStyleSheet/test/style-no-include.css +0 -3
- package/u2/old-stuff/css/onStyleSheet/test/test.html +0 -48
- package/u2/old-stuff/css/parser/mod.js +0 -182
- package/u2/old-stuff/css/parser/parser_old/mod.js +0 -128
- package/u2/old-stuff/css/parser/parser_old/test.html +0 -43
- package/u2/old-stuff/css/parser/parser_old/util.js +0 -22
- package/u2/old-stuff/css/parser/style.html +0 -52
- package/u2/old-stuff/css/parser/test.html +0 -38
- package/u2/old-stuff/el/ai-texter/README.md +0 -23
- package/u2/old-stuff/el/ai-texter/ai-texter.css +0 -12
- package/u2/old-stuff/el/ai-texter/ai-texter.js +0 -153
- package/u2/old-stuff/el/ai-texter/tests/minimal.html +0 -47
- package/u2/old-stuff/el/ai-texter/tests/test.html +0 -71
- package/u2/old-stuff/init.js +0 -38
- package/u2/old-stuff/markHashLinks.js +0 -51
- package/u2/old-stuff/onElement/mod.js +0 -73
- package/u2/old-stuff/test-helpers/mod.js +0 -36
- package/u2/old-stuff/test-helpers/test.html +0 -4
- package/u2/old-stuff/tests/init.js.html +0 -51
- package/u2/old-stuff/viewport.js +0 -64
- package/u2/tests/boilerplate.html +0 -46
- package/u2/tests/kacheln.html +0 -245
- package/u2/tests/showcase.html +0 -270
- package/u2/tests/showcase2.html +0 -157
- package/u2/tests/test-init.js +0 -35
- package/u2/tests/test.html +0 -355
- package/u2/tools/logo/u1ui.svg +0 -6
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# Scoped-Refactoring: isolierte u2-Instanzen (z.B. CMS-Panel)
|
|
2
|
+
|
|
3
|
+
## Ziel
|
|
4
|
+
|
|
5
|
+
Eine u2-Instanz **isoliert** in einem Shadow-DOM betreiben — konkreter Anwendungsfall: das CMS-Panel
|
|
6
|
+
soll seine **eigene** u2-Version laden, ohne `window.customElements` zu verschmutzen
|
|
7
|
+
oder mit der u2-Version der Host-Seite zu kollidieren.
|
|
8
|
+
|
|
9
|
+
Dazu müssen zwei Dinge zusammenkommen:
|
|
10
|
+
|
|
11
|
+
1. Element-Dateien registrieren sich **nicht mehr selbst global** (kein
|
|
12
|
+
`customElements.define(...)` als Import-Side-Effect).
|
|
13
|
+
2. Registrierung läuft über eine **austauschbare Registry** — global
|
|
14
|
+
(`window.customElements`) oder scoped (`new CustomElementRegistry()`), gebunden
|
|
15
|
+
an einen ShadowRoot.
|
|
16
|
+
|
|
17
|
+
## Ausgangslage
|
|
18
|
+
|
|
19
|
+
- `el/{name}/{name}.js` definiert am Datei-Ende `customElements.define('u2-{name}', …)`
|
|
20
|
+
als Side-Effect.
|
|
21
|
+
- [`u2/auto.js`](auto.js) beobachtet das DOM per `MutationObserver`, importiert bei
|
|
22
|
+
Gebrauch das passende Modul und verlässt sich darauf, dass **der Import** das Element
|
|
23
|
+
global registriert.
|
|
24
|
+
- **43 von 44** Element-Dateien sind bereits 1:1 `el/{name}/{name}.js` → `u2-{name}`
|
|
25
|
+
und exportieren `export default class`.
|
|
26
|
+
- Sonderfälle:
|
|
27
|
+
- [`el/calendar/calendar.js`](../el/calendar/calendar.js) definiert **zwei** Elemente
|
|
28
|
+
(`u2-calendar` + `u2-calendaritem`); `U2CalendarItem` ist aktuell **nicht** exportiert.
|
|
29
|
+
- [`el/system/styler.js`](../el/system/styler.js) → `u2-system-styler` (Tag ≠ Ordnername,
|
|
30
|
+
wird nicht über auto.js geladen).
|
|
31
|
+
- Einige Elemente rendern **andere** u2-Elemente in ihr eigenes Shadow-DOM und
|
|
32
|
+
verlassen sich auf den globalen Side-Effect, z.B.
|
|
33
|
+
[`el/accordion/accordion.js`](../el/accordion/accordion.js) → `import('../ico/ico.js')`,
|
|
34
|
+
ebenso `buttongroup`→`focusgroup`, `fields`→`responsive`, `rating`→`ico`.
|
|
35
|
+
|
|
36
|
+
## Zielarchitektur
|
|
37
|
+
|
|
38
|
+
### `U2Auto` — Factory statt globalem Modul-Side-Effect
|
|
39
|
+
|
|
40
|
+
Der MutationObserver-Mechanismus aus [`u2/auto.js`](auto.js) wird zu einer Klasse,
|
|
41
|
+
die eine **Registry** und einen **Root** kapselt. Beim Erkennen eines Elements
|
|
42
|
+
importiert sie das Modul und registriert es **selbst** aus den Exports — statt sich auf
|
|
43
|
+
den Side-Effect zu verlassen.
|
|
44
|
+
|
|
45
|
+
```js
|
|
46
|
+
class U2Auto {
|
|
47
|
+
// registry defaults to the shadow's own registry, else the global one
|
|
48
|
+
constructor(root, registry = root.registry ?? customElements) {
|
|
49
|
+
this.root = root;
|
|
50
|
+
this.registry = registry;
|
|
51
|
+
this.mo = new MutationObserver(entries => {
|
|
52
|
+
for (const entry of entries)
|
|
53
|
+
for (const node of entry.addedNodes) this._newNodeRoot(node);
|
|
54
|
+
});
|
|
55
|
+
this.mo.observe(root, { childList: true, subtree: true });
|
|
56
|
+
this._newNodeRoot(root);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async _loadEl(name) {
|
|
60
|
+
const tag = 'u2-' + name;
|
|
61
|
+
if (this.registry.get(tag)) return;
|
|
62
|
+
const mod = await import(rootUrl + 'el/' + name + '/' + name + '.js');
|
|
63
|
+
if (!this.registry.get(tag)) this.registry.define(tag, mod.default);
|
|
64
|
+
for (const [t, cls] of Object.entries(mod.extraElements ?? {}))
|
|
65
|
+
if (!this.registry.get(t)) this.registry.define(t, cls);
|
|
66
|
+
}
|
|
67
|
+
// … _newNode / _newNodeRoot / class + attr handling wie bisher
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- **Global** (heutiges Verhalten): beim Laden von `auto.js` wird automatisch
|
|
72
|
+
`new U2Auto(document.documentElement)` erzeugt → Registry = `customElements`.
|
|
73
|
+
- **Scoped**: `new U2Auto(shadowRoot, scopedRegistry)` → registriert **nur** in dieses
|
|
74
|
+
Shadow, `window.customElements` bleibt unberührt.
|
|
75
|
+
|
|
76
|
+
### Warum die Registry ein Parameter bleibt (nicht lazy ableitbar)
|
|
77
|
+
|
|
78
|
+
Eine scoped Registry wird **bei `attachShadow({ registry })` gebunden** und lässt sich
|
|
79
|
+
danach nicht mehr an einen bestehenden ShadowRoot hängen. Wenn U2Auto den ShadowRoot
|
|
80
|
+
bekommt, ist es zum *Erzeugen* der Registry längst zu spät.
|
|
81
|
+
|
|
82
|
+
- **Zurücklesen** geht über den nativen Getter `ShadowRoot.prototype.registry` → daher
|
|
83
|
+
der Default `registry = root.registry ?? customElements`.
|
|
84
|
+
- Aber der Aufrufer muss die Registry **vorher** erzeugt und beim `attachShadow`
|
|
85
|
+
mitgegeben haben. `el.shadowRoot ? new CustomElementRegistry() : customElements` wäre
|
|
86
|
+
**falsch**: die dort neu erzeugte Registry ist mit nichts verdrahtet.
|
|
87
|
+
- Root-Typ-Check: `root instanceof ShadowRoot` (nicht `el.shadowRoot`, denn U2Auto
|
|
88
|
+
bekommt den Root selbst, nicht den Host).
|
|
89
|
+
|
|
90
|
+
### Convenience-Helper zum Attachen
|
|
91
|
+
|
|
92
|
+
Da Registry-Erzeugung und `attachShadow` zusammengehören:
|
|
93
|
+
|
|
94
|
+
```js
|
|
95
|
+
function attachU2Shadow(host, opts = {}) {
|
|
96
|
+
const registry = new CustomElementRegistry();
|
|
97
|
+
const shadow = host.attachShadow({ mode: 'open', ...opts, registry });
|
|
98
|
+
new U2Auto(shadow, registry);
|
|
99
|
+
return shadow;
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### `define()`-Helper — der zentrale Seam
|
|
104
|
+
|
|
105
|
+
Statt roher `customElements.define(...)`-Aufrufe eine geführte, idempotente Funktion:
|
|
106
|
+
|
|
107
|
+
```js
|
|
108
|
+
// u2/define.js
|
|
109
|
+
export function define(tag, cls, registry = customElements) {
|
|
110
|
+
if (!registry.get(tag)) registry.define(tag, cls);
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Der Guard macht Doppel-Registrierung harmlos (wichtig für die Übergangsphase, in der
|
|
115
|
+
sowohl U2Auto als auch der Datei-Side-Effect definieren können).
|
|
116
|
+
|
|
117
|
+
## Firefox / Scoped Custom Element Registries
|
|
118
|
+
|
|
119
|
+
- Native `attachShadow({ registry })`, `new CustomElementRegistry()` und der Getter
|
|
120
|
+
`ShadowRoot.prototype.registry`: **Chrome/Safari ja, Firefox noch nicht.**
|
|
121
|
+
- Lösung: der offizielle Polyfill
|
|
122
|
+
**`@webcomponents/scoped-custom-element-registry`**.
|
|
123
|
+
- **Wichtig:** der Polyfill **behält den Tag-Namen** bei (`u2-foo` bleibt `u2-foo`).
|
|
124
|
+
Er renamed nicht, sondern patcht `attachShadow`, den `innerHTML`-Setter,
|
|
125
|
+
`createElement`, `importNode` etc. und wendet im jeweiligen Scope den richtigen
|
|
126
|
+
Konstruktor auf denselben Tag an.
|
|
127
|
+
→ **CSS `u2-foo {}` matcht weiterhin**, Shadow-`<style>` sowieso.
|
|
128
|
+
- Der „Name ändert sich / CSS bricht"-Fall gilt nur bei selbstgebautem Poor-man's-Scoping
|
|
129
|
+
(`u2-foo-v2` pro Scope) — das machen wir **nicht**.
|
|
130
|
+
- Realkosten des Polyfills:
|
|
131
|
+
- muss **vor** dem ersten scoped ShadowRoot geladen sein,
|
|
132
|
+
- etwas Laufzeit-Overhead,
|
|
133
|
+
- wenige Edge-Cases (`el.constructor`).
|
|
134
|
+
- Feature-Detection:
|
|
135
|
+
```js
|
|
136
|
+
if (!('registry' in ShadowRoot.prototype))
|
|
137
|
+
await import('.../scoped-custom-element-registry.min.js');
|
|
138
|
+
```
|
|
139
|
+
Einmal am Anfang laden, danach funktioniert scoped überall gleich.
|
|
140
|
+
|
|
141
|
+
## CSS-Anmerkung
|
|
142
|
+
|
|
143
|
+
Komponenten-CSS liegt bereits im jeweiligen Shadow der Elemente (z.B. accordion
|
|
144
|
+
importiert `ico.css` in seinen eigenen ShadowRoot). Das globale `impCss` aus auto.js ist
|
|
145
|
+
nur für classless/utilities/base zuständig. Für ein scoped Panel entscheidet man separat,
|
|
146
|
+
ob und welche dieser globalen Stylesheets **in** das Panel-Shadow geladen werden — das ist
|
|
147
|
+
unabhängig vom Element-Registry-Thema.
|
|
148
|
+
|
|
149
|
+
## Interne Element-Deps (der harte Teil)
|
|
150
|
+
|
|
151
|
+
Elemente, die andere u2-Elemente in ihr **eigenes** Shadow rendern, dürfen sich nicht mehr
|
|
152
|
+
auf den globalen Side-Effect verlassen. In einer scoped Registry ist `u2-ico` sonst nicht
|
|
153
|
+
sichtbar.
|
|
154
|
+
|
|
155
|
+
**Umstellung** (registry-agnostisch, schon heute non-breaking):
|
|
156
|
+
|
|
157
|
+
```js
|
|
158
|
+
// vorher (Side-Effect)
|
|
159
|
+
import('../ico/ico.js');
|
|
160
|
+
|
|
161
|
+
// nachher (explizit + Guard)
|
|
162
|
+
import U2Ico from '../ico/ico.js';
|
|
163
|
+
define('u2-ico', U2Ico);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Betroffen u.a.: `accordion`→`ico`, `rating`→`ico`, `buttongroup`→`focusgroup`,
|
|
167
|
+
`fields`→`responsive`.
|
|
168
|
+
|
|
169
|
+
> Vollständig sauber wird das erst, wenn solche Kind-Elemente in **dieselbe** scoped
|
|
170
|
+
> Registry registriert werden wie das Eltern-Shadow. Für die erste Ausbaustufe (globale
|
|
171
|
+
> Nutzung) reicht die explizite `define()`-Umstellung; die scoped-Verkettung ist ein
|
|
172
|
+
> Folge-Schritt.
|
|
173
|
+
|
|
174
|
+
## Migrationsplan (phasenweise)
|
|
175
|
+
|
|
176
|
+
### Phase 1 — Additive Vorbereitung (non-breaking)
|
|
177
|
+
|
|
178
|
+
Ziel: alles vorbereiten, ohne bestehendes Verhalten zu ändern.
|
|
179
|
+
|
|
180
|
+
1. **`export default` überall garantieren** (fehlt nur in 3 Dateien).
|
|
181
|
+
Sekundär-Klassen mit exportieren:
|
|
182
|
+
```js
|
|
183
|
+
// el/calendar/calendar.js
|
|
184
|
+
export const extraElements = { 'u2-calendaritem': U2CalendarItem };
|
|
185
|
+
```
|
|
186
|
+
2. **`u2/define.js`** anlegen (siehe oben).
|
|
187
|
+
3. **Datei-Enden umstellen**: `customElements.define('u2-foo', U2Foo)` → `define('u2-foo', U2Foo)`.
|
|
188
|
+
Verhalten identisch (global), aber Registrierung läuft durch den Seam.
|
|
189
|
+
→ Codemod über die 44 Dateien.
|
|
190
|
+
4. **Interne Deps entkoppeln**: Side-Effect-Importe zwischen Elementen auf
|
|
191
|
+
`import Cls; define('u2-x', Cls)` umstellen. Dank Guard harmlos-redundant, aber schon
|
|
192
|
+
registry-agnostisch.
|
|
193
|
+
5. **`U2Auto`-Klasse** einführen; `auto.js` erzeugt die globale Default-Instanz
|
|
194
|
+
(`new U2Auto(document.documentElement)`) und registriert aus den Exports statt aus dem
|
|
195
|
+
Side-Effect.
|
|
196
|
+
|
|
197
|
+
Nach Phase 1: global unverändert, aber die gesamte Plumbing für scoped ist vorhanden.
|
|
198
|
+
|
|
199
|
+
### Phase 2 — Scoped-Betrieb ermöglichen
|
|
200
|
+
|
|
201
|
+
6. **Polyfill-Loader** + Feature-Detection einbauen.
|
|
202
|
+
7. **`attachU2Shadow(host)`** exportieren.
|
|
203
|
+
8. CMS-Panel: eigenes Shadow via `attachU2Shadow` erzeugen und dort die isolierte
|
|
204
|
+
u2-Instanz laufen lassen.
|
|
205
|
+
|
|
206
|
+
### Phase 3 — Isolation scharf schalten (der einzige echte Break)
|
|
207
|
+
|
|
208
|
+
9. **Self-`define()` am Datei-Ende entfernen**, sodass ein direktes `import 'foo.js'`
|
|
209
|
+
nicht mehr registriert. Erst dann leakt nichts mehr global.
|
|
210
|
+
→ Ein-Zeilen-Codemod pro Datei; auto.js/U2Auto definieren zu dem Zeitpunkt längst selbst.
|
|
211
|
+
|
|
212
|
+
> **Ehrlicher Haken:** *volle* Isolation im Panel gibt es erst mit Phase 3. Solange die
|
|
213
|
+
> Dateien sich selbst global definieren, leakt jedes im Panel geladene Element in
|
|
214
|
+
> `window.customElements`. Phase 2 lässt sich aber komplett fertig testen; nur die
|
|
215
|
+
> Leak-Freiheit kommt zuletzt.
|
|
216
|
+
|
|
217
|
+
## Breaking Changes & Migrationsanweisungen
|
|
218
|
+
|
|
219
|
+
Erst ab **Phase 3** relevant:
|
|
220
|
+
|
|
221
|
+
1. **`import 'u2/el/foo/foo.js'` definiert das Element nicht mehr** — nur noch der Export
|
|
222
|
+
existiert. Grösster Bruch.
|
|
223
|
+
- *Migration:* entweder auto.js verwenden (keine Änderung nötig), oder manuell:
|
|
224
|
+
```js
|
|
225
|
+
import U2Foo from 'u2/el/foo/foo.js';
|
|
226
|
+
customElements.define('u2-foo', U2Foo); // bzw. define(...) aus u2/define.js
|
|
227
|
+
```
|
|
228
|
+
2. **Inter-Element-Side-Effect-Importe** greifen nicht mehr (bereits in Phase 1 auf
|
|
229
|
+
explizites `define()` umgestellt → kein Bruch, wenn Phase 1 gemacht wurde).
|
|
230
|
+
3. **`extraElements`** (calendaritem) muss explizit registriert werden (macht U2Auto).
|
|
231
|
+
|
|
232
|
+
## Offen / später
|
|
233
|
+
|
|
234
|
+
- **Scoped Attribute-Registry** (`u2-*`-Attribute isoliert): gleiche Factory-Idee wie
|
|
235
|
+
`U2Auto`, aber eigener Mechanismus. Bewusst **später**, um den Scope hier klein zu halten.
|
|
236
|
+
- Scoped-Verkettung von Kind-Elementen in die Eltern-Registry (siehe „Interne Deps").
|