@ixfx/components 0.2.4 → 0.2.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/bundle/index.d.ts +130 -130
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +2196 -2196
- package/bundle/index.js.map +1 -1
- package/dist/ac-text.d.ts +97 -0
- package/dist/ac-text.d.ts.map +1 -0
- package/dist/ac-text.js +484 -0
- package/dist/ac-text.js.map +1 -0
- package/dist/{button/button-styles.js → button-DgKUzE5o.js} +49 -3
- package/dist/button-DgKUzE5o.js.map +1 -0
- package/dist/button.d.ts +21 -0
- package/dist/button.d.ts.map +1 -0
- package/dist/button.js +3 -0
- package/dist/checkbox.d.ts +27 -57
- package/dist/checkbox.d.ts.map +1 -1
- package/dist/checkbox.js +74 -88
- package/dist/checkbox.js.map +1 -1
- package/dist/chunk-pbuEa-1d.js +13 -0
- package/dist/colour-C3MQIjFJ-BJV-QC-3.js +4138 -0
- package/dist/colour-C3MQIjFJ-BJV-QC-3.js.map +1 -0
- package/dist/colour-picker-Bw-AZoWx.js +922 -0
- package/dist/colour-picker-Bw-AZoWx.js.map +1 -0
- package/dist/colour-picker.d.ts +2 -0
- package/dist/colour-picker.js +2 -0
- package/dist/crumbs.d.ts +92 -0
- package/dist/crumbs.d.ts.map +1 -0
- package/dist/crumbs.js +789 -0
- package/dist/crumbs.js.map +1 -0
- package/dist/data-display.d.ts +23 -18
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +82 -108
- package/dist/data-display.js.map +1 -1
- package/dist/decorate-BZbkqIhA.js +9 -0
- package/dist/defaults-FEZaGiYZ.js +38 -0
- package/dist/defaults-FEZaGiYZ.js.map +1 -0
- package/dist/dist-By5URG0Y.js +1290 -0
- package/dist/dist-By5URG0Y.js.map +1 -0
- package/dist/dist-D7kJgnSE.js +1039 -0
- package/dist/dist-D7kJgnSE.js.map +1 -0
- package/dist/editable-label.d.ts +71 -0
- package/dist/editable-label.d.ts.map +1 -0
- package/dist/editable-label.js +279 -0
- package/dist/editable-label.js.map +1 -0
- package/dist/hex-editor-Gib1Grg2.d.ts +131 -0
- package/dist/hex-editor-Gib1Grg2.d.ts.map +1 -0
- package/dist/hex-editor-Wd6ZtZA2.js +1147 -0
- package/dist/hex-editor-Wd6ZtZA2.js.map +1 -0
- package/dist/hex.d.ts +2 -0
- package/dist/hex.js +2 -0
- package/dist/highlight-CAjwQ4GE.js +50 -0
- package/dist/highlight-CAjwQ4GE.js.map +1 -0
- package/dist/icon-BR5aTIiP.js +100 -0
- package/dist/icon-BR5aTIiP.js.map +1 -0
- package/dist/icon-DQKdfR7U.d.ts +36 -0
- package/dist/icon-DQKdfR7U.d.ts.map +1 -0
- package/dist/icons.d.ts +3 -0
- package/dist/icons.js +9 -0
- package/dist/icons.js.map +1 -0
- package/dist/incr-search-BjCNClnC.js +311 -0
- package/dist/incr-search-BjCNClnC.js.map +1 -0
- package/dist/incr-search.d.ts +2 -0
- package/dist/incr-search.js +3 -0
- package/dist/index-B1hNR7Z9.d.ts +36 -0
- package/dist/index-B1hNR7Z9.d.ts.map +1 -0
- package/dist/index-C5dK8RZa.d.ts +23 -0
- package/dist/index-C5dK8RZa.d.ts.map +1 -0
- package/dist/index-C9iBN908.d.ts +160 -0
- package/dist/index-C9iBN908.d.ts.map +1 -0
- package/dist/index-CPVcTTXo.d.ts +396 -0
- package/dist/index-CPVcTTXo.d.ts.map +1 -0
- package/dist/index-CQxanqXF.d.ts +183 -0
- package/dist/index-CQxanqXF.d.ts.map +1 -0
- package/dist/index-CpbBI3n7.d.ts +1239 -0
- package/dist/index-CpbBI3n7.d.ts.map +1 -0
- package/dist/index.d.ts +422 -53
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5729 -54
- package/dist/index.js.map +1 -1
- package/dist/interaction-CQDQJf2Q.js +1 -0
- package/dist/keyboard-De_vOHLg.js +20 -0
- package/dist/keyboard-De_vOHLg.js.map +1 -0
- package/dist/labelled-input-base-DS6-6C0r.js +155 -0
- package/dist/labelled-input-base-DS6-6C0r.js.map +1 -0
- package/dist/labelled-input-base-DnRh4reU.d.ts +43 -0
- package/dist/labelled-input-base-DnRh4reU.d.ts.map +1 -0
- package/dist/labelled-radial-input.d.ts +34 -0
- package/dist/labelled-radial-input.d.ts.map +1 -0
- package/dist/labelled-radial-input.js +188 -0
- package/dist/labelled-radial-input.js.map +1 -0
- package/dist/labelled-range-input.d.ts +2 -0
- package/dist/{labelled-range-input/labelled-range-input.js → labelled-range-input.js} +40 -45
- package/dist/labelled-range-input.js.map +1 -0
- package/dist/led.d.ts +21 -16
- package/dist/led.d.ts.map +1 -1
- package/dist/led.js +70 -78
- package/dist/led.js.map +1 -1
- package/dist/menu-BV6UFx_z.js +813 -0
- package/dist/menu-BV6UFx_z.js.map +1 -0
- package/dist/menu-item-Cikacp4F.d.ts +128 -0
- package/dist/menu-item-Cikacp4F.d.ts.map +1 -0
- package/dist/menu-item-DEzL_Yjk.js +766 -0
- package/dist/menu-item-DEzL_Yjk.js.map +1 -0
- package/dist/menu.d.ts +3 -0
- package/dist/menu.js +3 -0
- package/dist/miller.d.ts +324 -0
- package/dist/miller.d.ts.map +1 -0
- package/dist/miller.js +1343 -0
- package/dist/miller.js.map +1 -0
- package/dist/narrowed-text.d.ts +72 -0
- package/dist/narrowed-text.d.ts.map +1 -0
- package/dist/narrowed-text.js +571 -0
- package/dist/narrowed-text.js.map +1 -0
- package/dist/panel.d.ts +43 -0
- package/dist/panel.d.ts.map +1 -0
- package/dist/{panel/panel.js → panel.js} +82 -91
- package/dist/panel.js.map +1 -0
- package/dist/plots.d.ts +2 -0
- package/dist/plots.js +2 -0
- package/dist/polar-pad.d.ts +67 -0
- package/dist/polar-pad.d.ts.map +1 -0
- package/dist/polar-pad.js +537 -0
- package/dist/polar-pad.js.map +1 -0
- package/dist/popup-Ddx9LCzY.js +24 -0
- package/dist/popup-Ddx9LCzY.js.map +1 -0
- package/dist/prominence-CreDBdCs.js +98 -0
- package/dist/prominence-CreDBdCs.js.map +1 -0
- package/dist/radial-input-CNJ8asY2.js +849 -0
- package/dist/radial-input-CNJ8asY2.js.map +1 -0
- package/dist/radial-input-xSTd4kEz.d.ts +70 -0
- package/dist/radial-input-xSTd4kEz.d.ts.map +1 -0
- package/dist/radial-input.d.ts +2 -0
- package/dist/radial-input.js +2 -0
- package/dist/range-input.d.ts +43 -0
- package/dist/range-input.d.ts.map +1 -0
- package/dist/{range-input/range-input.js → range-input.js} +155 -168
- package/dist/range-input.js.map +1 -0
- package/dist/range.d.ts +28 -0
- package/dist/range.d.ts.map +1 -0
- package/dist/range.js +136 -0
- package/dist/range.js.map +1 -0
- package/dist/registry-CZEB1YI9.js +21 -0
- package/dist/registry-CZEB1YI9.js.map +1 -0
- package/dist/selecthorizontal.d.ts +13 -8
- package/dist/selecthorizontal.d.ts.map +1 -1
- package/dist/selecthorizontal.js +19 -23
- package/dist/selecthorizontal.js.map +1 -1
- package/dist/snap-container.d.ts +50 -0
- package/dist/snap-container.d.ts.map +1 -0
- package/dist/snap-container.js +297 -0
- package/dist/snap-container.js.map +1 -0
- package/dist/{split-layout/split-layout.d.ts → split-layout.d.ts} +30 -25
- package/dist/split-layout.d.ts.map +1 -0
- package/dist/split-layout.js +545 -0
- package/dist/split-layout.js.map +1 -0
- package/dist/style.css +133 -0
- package/dist/swipe.d.ts +48 -0
- package/dist/swipe.d.ts.map +1 -0
- package/dist/swipe.js +204 -0
- package/dist/swipe.js.map +1 -0
- package/dist/tab-list-CFF7uSYH.d.ts +66 -0
- package/dist/tab-list-CFF7uSYH.d.ts.map +1 -0
- package/dist/tabs.d.ts +2 -0
- package/dist/tabs.js +203 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tickled-controller-Cq1Va0rR.d.ts +218 -0
- package/dist/tickled-controller-Cq1Va0rR.d.ts.map +1 -0
- package/dist/tickled-styles-Bg3QbcrD.js +327 -0
- package/dist/tickled-styles-Bg3QbcrD.js.map +1 -0
- package/dist/timeline-DBWJsSjd.js +1748 -0
- package/dist/timeline-DBWJsSjd.js.map +1 -0
- package/dist/timeline.d.ts +2 -0
- package/dist/timeline.js +2 -0
- package/dist/{styles/tooltip.js → tooltip-DMxmBNky.js} +6 -2
- package/dist/tooltip-DMxmBNky.js.map +1 -0
- package/dist/tooltip-kfUBWYVB.d.ts +26 -0
- package/dist/tooltip-kfUBWYVB.d.ts.map +1 -0
- package/dist/tree-component-CQpoPo4s.d.ts +326 -0
- package/dist/tree-component-CQpoPo4s.d.ts.map +1 -0
- package/dist/tree-data-model-DGvRVOFY.js +190 -0
- package/dist/tree-data-model-DGvRVOFY.js.map +1 -0
- package/dist/tree.d.ts +100 -0
- package/dist/tree.d.ts.map +1 -0
- package/dist/tree.js +1144 -0
- package/dist/tree.js.map +1 -0
- package/dist/types-BKaqnpwx.d.ts +8 -0
- package/dist/types-BKaqnpwx.d.ts.map +1 -0
- package/dist/xy-axis-BANbgrI5.js +6243 -0
- package/dist/xy-axis-BANbgrI5.js.map +1 -0
- package/dist/xy-axis-CIFok7MF.d.ts +141 -0
- package/dist/xy-axis-CIFok7MF.d.ts.map +1 -0
- package/dist/xy-pad.d.ts +74 -110
- package/dist/xy-pad.d.ts.map +1 -1
- package/dist/xy-pad.js +300 -320
- package/dist/xy-pad.js.map +1 -1
- package/package.json +10 -18
- package/dist/ac-text/ac-text.d.ts +0 -99
- package/dist/ac-text/ac-text.d.ts.map +0 -1
- package/dist/ac-text/ac-text.js +0 -571
- package/dist/ac-text/ac-text.js.map +0 -1
- package/dist/button/button-styles.d.ts +0 -2
- package/dist/button/button-styles.d.ts.map +0 -1
- package/dist/button/button-styles.js.map +0 -1
- package/dist/button/button.d.ts +0 -16
- package/dist/button/button.d.ts.map +0 -1
- package/dist/button/button.js +0 -58
- package/dist/button/button.js.map +0 -1
- package/dist/button/radio-group.d.ts +0 -44
- package/dist/button/radio-group.d.ts.map +0 -1
- package/dist/button/radio-group.js +0 -385
- package/dist/button/radio-group.js.map +0 -1
- package/dist/button/split-button.d.ts +0 -59
- package/dist/button/split-button.d.ts.map +0 -1
- package/dist/button/split-button.js +0 -480
- package/dist/button/split-button.js.map +0 -1
- package/dist/button/types.d.ts +0 -18
- package/dist/button/types.d.ts.map +0 -1
- package/dist/button/types.js +0 -2
- package/dist/button/types.js.map +0 -1
- package/dist/colour-picker/colour-picker-popup.d.ts +0 -102
- package/dist/colour-picker/colour-picker-popup.d.ts.map +0 -1
- package/dist/colour-picker/colour-picker-popup.js +0 -399
- package/dist/colour-picker/colour-picker-popup.js.map +0 -1
- package/dist/colour-picker/colour-picker.d.ts +0 -100
- package/dist/colour-picker/colour-picker.d.ts.map +0 -1
- package/dist/colour-picker/colour-picker.js +0 -567
- package/dist/colour-picker/colour-picker.js.map +0 -1
- package/dist/colour-picker/index.d.ts +0 -4
- package/dist/colour-picker/index.d.ts.map +0 -1
- package/dist/colour-picker/index.js +0 -3
- package/dist/colour-picker/index.js.map +0 -1
- package/dist/colour-picker/styles.d.ts +0 -2
- package/dist/colour-picker/styles.d.ts.map +0 -1
- package/dist/colour-picker/styles.js +0 -139
- package/dist/colour-picker/styles.js.map +0 -1
- package/dist/colour-picker/types.d.ts +0 -33
- package/dist/colour-picker/types.d.ts.map +0 -1
- package/dist/colour-picker/types.js +0 -2
- package/dist/colour-picker/types.js.map +0 -1
- package/dist/colour-picker/util.d.ts +0 -15
- package/dist/colour-picker/util.d.ts.map +0 -1
- package/dist/colour-picker/util.js +0 -35
- package/dist/colour-picker/util.js.map +0 -1
- package/dist/common/searchable.d.ts +0 -9
- package/dist/common/searchable.d.ts.map +0 -1
- package/dist/common/searchable.js +0 -9
- package/dist/common/searchable.js.map +0 -1
- package/dist/common/tree-component.d.ts +0 -172
- package/dist/common/tree-component.d.ts.map +0 -1
- package/dist/common/tree-component.js +0 -8
- package/dist/common/tree-component.js.map +0 -1
- package/dist/common/tree-data-model.d.ts +0 -100
- package/dist/common/tree-data-model.d.ts.map +0 -1
- package/dist/common/tree-data-model.js +0 -207
- package/dist/common/tree-data-model.js.map +0 -1
- package/dist/common/tree-item.d.ts +0 -7
- package/dist/common/tree-item.d.ts.map +0 -1
- package/dist/common/tree-item.js +0 -2
- package/dist/common/tree-item.js.map +0 -1
- package/dist/common/types.d.ts +0 -69
- package/dist/common/types.d.ts.map +0 -1
- package/dist/common/types.js +0 -6
- package/dist/common/types.js.map +0 -1
- package/dist/crumbs/crumb-navigation.d.ts +0 -96
- package/dist/crumbs/crumb-navigation.d.ts.map +0 -1
- package/dist/crumbs/crumb-navigation.js +0 -911
- package/dist/crumbs/crumb-navigation.js.map +0 -1
- package/dist/crumbs/crumb-path-controller.d.ts +0 -18
- package/dist/crumbs/crumb-path-controller.d.ts.map +0 -1
- package/dist/crumbs/crumb-path-controller.js +0 -81
- package/dist/crumbs/crumb-path-controller.js.map +0 -1
- package/dist/crumbs/crumb-path.d.ts +0 -65
- package/dist/crumbs/crumb-path.d.ts.map +0 -1
- package/dist/crumbs/crumb-path.js +0 -691
- package/dist/crumbs/crumb-path.js.map +0 -1
- package/dist/editable-label/editable-label.d.ts +0 -98
- package/dist/editable-label/editable-label.d.ts.map +0 -1
- package/dist/editable-label/editable-label.js +0 -348
- package/dist/editable-label/editable-label.js.map +0 -1
- package/dist/editable-label/editable-number.d.ts +0 -96
- package/dist/editable-label/editable-number.d.ts.map +0 -1
- package/dist/editable-label/editable-number.js +0 -702
- package/dist/editable-label/editable-number.js.map +0 -1
- package/dist/hex/colour.d.ts +0 -6
- package/dist/hex/colour.d.ts.map +0 -1
- package/dist/hex/colour.js +0 -33
- package/dist/hex/colour.js.map +0 -1
- package/dist/hex/data.d.ts +0 -18
- package/dist/hex/data.d.ts.map +0 -1
- package/dist/hex/data.js +0 -61
- package/dist/hex/data.js.map +0 -1
- package/dist/hex/diff.d.ts +0 -14
- package/dist/hex/diff.d.ts.map +0 -1
- package/dist/hex/diff.js +0 -31
- package/dist/hex/diff.js.map +0 -1
- package/dist/hex/hex-editor.d.ts +0 -101
- package/dist/hex/hex-editor.d.ts.map +0 -1
- package/dist/hex/hex-editor.js +0 -894
- package/dist/hex/hex-editor.js.map +0 -1
- package/dist/hex/selection.d.ts +0 -11
- package/dist/hex/selection.d.ts.map +0 -1
- package/dist/hex/selection.js +0 -218
- package/dist/hex/selection.js.map +0 -1
- package/dist/hex/types.d.ts +0 -34
- package/dist/hex/types.d.ts.map +0 -1
- package/dist/hex/types.js +0 -4
- package/dist/hex/types.js.map +0 -1
- package/dist/icons/defaults.d.ts +0 -27
- package/dist/icons/defaults.d.ts.map +0 -1
- package/dist/icons/defaults.js +0 -34
- package/dist/icons/defaults.js.map +0 -1
- package/dist/icons/icon.d.ts +0 -31
- package/dist/icons/icon.d.ts.map +0 -1
- package/dist/icons/icon.js +0 -125
- package/dist/icons/icon.js.map +0 -1
- package/dist/icons/index.d.ts +0 -5
- package/dist/icons/index.d.ts.map +0 -1
- package/dist/icons/index.js +0 -6
- package/dist/icons/index.js.map +0 -1
- package/dist/icons/registry.d.ts +0 -11
- package/dist/icons/registry.d.ts.map +0 -1
- package/dist/icons/registry.js +0 -17
- package/dist/icons/registry.js.map +0 -1
- package/dist/incr-search/ac-adapter.d.ts +0 -18
- package/dist/incr-search/ac-adapter.d.ts.map +0 -1
- package/dist/incr-search/ac-adapter.js +0 -29
- package/dist/incr-search/ac-adapter.js.map +0 -1
- package/dist/incr-search/controller-miller.d.ts +0 -9
- package/dist/incr-search/controller-miller.d.ts.map +0 -1
- package/dist/incr-search/controller-miller.js +0 -8
- package/dist/incr-search/controller-miller.js.map +0 -1
- package/dist/incr-search/controller-tree.d.ts +0 -55
- package/dist/incr-search/controller-tree.d.ts.map +0 -1
- package/dist/incr-search/controller-tree.js +0 -106
- package/dist/incr-search/controller-tree.js.map +0 -1
- package/dist/incr-search/element-search.d.ts +0 -15
- package/dist/incr-search/element-search.d.ts.map +0 -1
- package/dist/incr-search/element-search.js +0 -82
- package/dist/incr-search/element-search.js.map +0 -1
- package/dist/incr-search/fuzzy.d.ts +0 -3
- package/dist/incr-search/fuzzy.d.ts.map +0 -1
- package/dist/incr-search/fuzzy.js +0 -37
- package/dist/incr-search/fuzzy.js.map +0 -1
- package/dist/incr-search/highlight.d.ts +0 -5
- package/dist/incr-search/highlight.d.ts.map +0 -1
- package/dist/incr-search/highlight.js +0 -54
- package/dist/incr-search/highlight.js.map +0 -1
- package/dist/incr-search/incr-search.d.ts +0 -3
- package/dist/incr-search/incr-search.d.ts.map +0 -1
- package/dist/incr-search/incr-search.js +0 -73
- package/dist/incr-search/incr-search.js.map +0 -1
- package/dist/incr-search/index.d.ts +0 -12
- package/dist/incr-search/index.d.ts.map +0 -1
- package/dist/incr-search/index.js +0 -8
- package/dist/incr-search/index.js.map +0 -1
- package/dist/incr-search/types.d.ts +0 -59
- package/dist/incr-search/types.d.ts.map +0 -1
- package/dist/incr-search/types.js +0 -2
- package/dist/incr-search/types.js.map +0 -1
- package/dist/interaction/index.d.ts +0 -10
- package/dist/interaction/index.d.ts.map +0 -1
- package/dist/interaction/index.js +0 -10
- package/dist/interaction/index.js.map +0 -1
- package/dist/interaction/tickled-controller.d.ts +0 -186
- package/dist/interaction/tickled-controller.d.ts.map +0 -1
- package/dist/interaction/tickled-controller.js +0 -256
- package/dist/interaction/tickled-controller.js.map +0 -1
- package/dist/interaction/tickled-styles.d.ts +0 -53
- package/dist/interaction/tickled-styles.d.ts.map +0 -1
- package/dist/interaction/tickled-styles.js +0 -106
- package/dist/interaction/tickled-styles.js.map +0 -1
- package/dist/interaction/tree-keyboard-controller.d.ts +0 -30
- package/dist/interaction/tree-keyboard-controller.d.ts.map +0 -1
- package/dist/interaction/tree-keyboard-controller.js +0 -105
- package/dist/interaction/tree-keyboard-controller.js.map +0 -1
- package/dist/keyboard.d.ts +0 -16
- package/dist/keyboard.d.ts.map +0 -1
- package/dist/keyboard.js +0 -22
- package/dist/keyboard.js.map +0 -1
- package/dist/labelled-radial-input/index.d.ts +0 -2
- package/dist/labelled-radial-input/index.d.ts.map +0 -1
- package/dist/labelled-radial-input/index.js +0 -2
- package/dist/labelled-radial-input/index.js.map +0 -1
- package/dist/labelled-radial-input/labelled-radial-input.d.ts +0 -77
- package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +0 -1
- package/dist/labelled-radial-input/labelled-radial-input.js +0 -214
- package/dist/labelled-radial-input/labelled-radial-input.js.map +0 -1
- package/dist/labelled-range-input/index.d.ts +0 -2
- package/dist/labelled-range-input/index.d.ts.map +0 -1
- package/dist/labelled-range-input/index.js +0 -2
- package/dist/labelled-range-input/index.js.map +0 -1
- package/dist/labelled-range-input/labelled-range-input.d.ts +0 -80
- package/dist/labelled-range-input/labelled-range-input.d.ts.map +0 -1
- package/dist/labelled-range-input/labelled-range-input.js.map +0 -1
- package/dist/menu/index.d.ts +0 -14
- package/dist/menu/index.d.ts.map +0 -1
- package/dist/menu/index.js +0 -13
- package/dist/menu/index.js.map +0 -1
- package/dist/menu/menu-bar.d.ts +0 -23
- package/dist/menu/menu-bar.d.ts.map +0 -1
- package/dist/menu/menu-bar.js +0 -110
- package/dist/menu/menu-bar.js.map +0 -1
- package/dist/menu/menu-check-item.d.ts +0 -33
- package/dist/menu/menu-check-item.d.ts.map +0 -1
- package/dist/menu/menu-check-item.js +0 -175
- package/dist/menu/menu-check-item.js.map +0 -1
- package/dist/menu/menu-command-controller.d.ts +0 -14
- package/dist/menu/menu-command-controller.d.ts.map +0 -1
- package/dist/menu/menu-command-controller.js +0 -22
- package/dist/menu/menu-command-controller.js.map +0 -1
- package/dist/menu/menu-container.d.ts +0 -36
- package/dist/menu/menu-container.d.ts.map +0 -1
- package/dist/menu/menu-container.js +0 -351
- package/dist/menu/menu-container.js.map +0 -1
- package/dist/menu/menu-from-tree.d.ts +0 -17
- package/dist/menu/menu-from-tree.d.ts.map +0 -1
- package/dist/menu/menu-from-tree.js +0 -103
- package/dist/menu/menu-from-tree.js.map +0 -1
- package/dist/menu/menu-header.d.ts +0 -12
- package/dist/menu/menu-header.d.ts.map +0 -1
- package/dist/menu/menu-header.js +0 -36
- package/dist/menu/menu-header.js.map +0 -1
- package/dist/menu/menu-item.d.ts +0 -41
- package/dist/menu/menu-item.d.ts.map +0 -1
- package/dist/menu/menu-item.js +0 -240
- package/dist/menu/menu-item.js.map +0 -1
- package/dist/menu/menu-radio-group.d.ts +0 -24
- package/dist/menu/menu-radio-group.d.ts.map +0 -1
- package/dist/menu/menu-radio-group.js +0 -71
- package/dist/menu/menu-radio-group.js.map +0 -1
- package/dist/menu/menu-radio-item.d.ts +0 -22
- package/dist/menu/menu-radio-item.d.ts.map +0 -1
- package/dist/menu/menu-radio-item.js +0 -116
- package/dist/menu/menu-radio-item.js.map +0 -1
- package/dist/menu/menu-separator.d.ts +0 -11
- package/dist/menu/menu-separator.d.ts.map +0 -1
- package/dist/menu/menu-separator.js +0 -29
- package/dist/menu/menu-separator.js.map +0 -1
- package/dist/menu/menu-sub-trigger.d.ts +0 -46
- package/dist/menu/menu-sub-trigger.d.ts.map +0 -1
- package/dist/menu/menu-sub-trigger.js +0 -302
- package/dist/menu/menu-sub-trigger.js.map +0 -1
- package/dist/menu/menu-trigger.d.ts +0 -57
- package/dist/menu/menu-trigger.d.ts.map +0 -1
- package/dist/menu/menu-trigger.js +0 -351
- package/dist/menu/menu-trigger.js.map +0 -1
- package/dist/miller/index.d.ts +0 -5
- package/dist/miller/index.d.ts.map +0 -1
- package/dist/miller/index.js +0 -5
- package/dist/miller/index.js.map +0 -1
- package/dist/miller/miller-base.d.ts +0 -184
- package/dist/miller/miller-base.d.ts.map +0 -1
- package/dist/miller/miller-base.js +0 -1249
- package/dist/miller/miller-base.js.map +0 -1
- package/dist/miller/miller-list.d.ts +0 -30
- package/dist/miller/miller-list.d.ts.map +0 -1
- package/dist/miller/miller-list.js +0 -192
- package/dist/miller/miller-list.js.map +0 -1
- package/dist/miller/miller-tree-controller.d.ts +0 -58
- package/dist/miller/miller-tree-controller.d.ts.map +0 -1
- package/dist/miller/miller-tree-controller.js +0 -134
- package/dist/miller/miller-tree-controller.js.map +0 -1
- package/dist/miller/types.d.ts +0 -63
- package/dist/miller/types.d.ts.map +0 -1
- package/dist/miller/types.js +0 -6
- package/dist/miller/types.js.map +0 -1
- package/dist/mixins/labelled-input-base.d.ts +0 -38
- package/dist/mixins/labelled-input-base.d.ts.map +0 -1
- package/dist/mixins/labelled-input-base.js +0 -171
- package/dist/mixins/labelled-input-base.js.map +0 -1
- package/dist/mixins/labelled-input-util.d.ts +0 -3
- package/dist/mixins/labelled-input-util.d.ts.map +0 -1
- package/dist/mixins/labelled-input-util.js +0 -10
- package/dist/mixins/labelled-input-util.js.map +0 -1
- package/dist/my-element.d.ts +0 -14
- package/dist/my-element.d.ts.map +0 -1
- package/dist/my-element.js +0 -44
- package/dist/my-element.js.map +0 -1
- package/dist/narrowed-text/index.d.ts +0 -3
- package/dist/narrowed-text/index.d.ts.map +0 -1
- package/dist/narrowed-text/index.js +0 -3
- package/dist/narrowed-text/index.js.map +0 -1
- package/dist/narrowed-text/narrowed-text.d.ts +0 -48
- package/dist/narrowed-text/narrowed-text.d.ts.map +0 -1
- package/dist/narrowed-text/narrowed-text.js +0 -668
- package/dist/narrowed-text/narrowed-text.js.map +0 -1
- package/dist/narrowed-text/types.d.ts +0 -20
- package/dist/narrowed-text/types.d.ts.map +0 -1
- package/dist/narrowed-text/types.js +0 -2
- package/dist/narrowed-text/types.js.map +0 -1
- package/dist/panel/panel-group.d.ts +0 -23
- package/dist/panel/panel-group.d.ts.map +0 -1
- package/dist/panel/panel-group.js +0 -109
- package/dist/panel/panel-group.js.map +0 -1
- package/dist/panel/panel.d.ts +0 -39
- package/dist/panel/panel.d.ts.map +0 -1
- package/dist/panel/panel.js.map +0 -1
- package/dist/plots/colour-map.d.ts +0 -31
- package/dist/plots/colour-map.d.ts.map +0 -1
- package/dist/plots/colour-map.js +0 -133
- package/dist/plots/colour-map.js.map +0 -1
- package/dist/plots/data.d.ts +0 -27
- package/dist/plots/data.d.ts.map +0 -1
- package/dist/plots/data.js +0 -47
- package/dist/plots/data.js.map +0 -1
- package/dist/plots/single-axis.d.ts +0 -41
- package/dist/plots/single-axis.d.ts.map +0 -1
- package/dist/plots/single-axis.js +0 -428
- package/dist/plots/single-axis.js.map +0 -1
- package/dist/plots/svg-utils.d.ts +0 -12
- package/dist/plots/svg-utils.d.ts.map +0 -1
- package/dist/plots/svg-utils.js +0 -64
- package/dist/plots/svg-utils.js.map +0 -1
- package/dist/plots/xy-axis.d.ts +0 -42
- package/dist/plots/xy-axis.d.ts.map +0 -1
- package/dist/plots/xy-axis.js +0 -307
- package/dist/plots/xy-axis.js.map +0 -1
- package/dist/polar-pad/polar-pad.d.ts +0 -132
- package/dist/polar-pad/polar-pad.d.ts.map +0 -1
- package/dist/polar-pad/polar-pad.js +0 -598
- package/dist/polar-pad/polar-pad.js.map +0 -1
- package/dist/radial-input/radial-input.d.ts +0 -45
- package/dist/radial-input/radial-input.d.ts.map +0 -1
- package/dist/radial-input/radial-input.js +0 -692
- package/dist/radial-input/radial-input.js.map +0 -1
- package/dist/radial-input/svg-utils.d.ts +0 -147
- package/dist/radial-input/svg-utils.d.ts.map +0 -1
- package/dist/radial-input/svg-utils.js +0 -346
- package/dist/radial-input/svg-utils.js.map +0 -1
- package/dist/radial-input/types.d.ts +0 -25
- package/dist/radial-input/types.d.ts.map +0 -1
- package/dist/radial-input/types.js +0 -5
- package/dist/radial-input/types.js.map +0 -1
- package/dist/range/range-multi.d.ts +0 -62
- package/dist/range/range-multi.d.ts.map +0 -1
- package/dist/range/range-multi.js +0 -652
- package/dist/range/range-multi.js.map +0 -1
- package/dist/range/range.d.ts +0 -23
- package/dist/range/range.d.ts.map +0 -1
- package/dist/range/range.js +0 -153
- package/dist/range/range.js.map +0 -1
- package/dist/range-input/index.d.ts +0 -2
- package/dist/range-input/index.d.ts.map +0 -1
- package/dist/range-input/index.js +0 -2
- package/dist/range-input/index.js.map +0 -1
- package/dist/range-input/range-input.d.ts +0 -92
- package/dist/range-input/range-input.d.ts.map +0 -1
- package/dist/range-input/range-input.js.map +0 -1
- package/dist/snap-container/snap-container.d.ts +0 -45
- package/dist/snap-container/snap-container.d.ts.map +0 -1
- package/dist/snap-container/snap-container.js +0 -352
- package/dist/snap-container/snap-container.js.map +0 -1
- package/dist/split-layout/split-layout.d.ts.map +0 -1
- package/dist/split-layout/split-layout.js +0 -674
- package/dist/split-layout/split-layout.js.map +0 -1
- package/dist/styles/popup.d.ts +0 -11
- package/dist/styles/popup.d.ts.map +0 -1
- package/dist/styles/popup.js +0 -20
- package/dist/styles/popup.js.map +0 -1
- package/dist/styles/prominence.d.ts +0 -58
- package/dist/styles/prominence.d.ts.map +0 -1
- package/dist/styles/prominence.js +0 -94
- package/dist/styles/prominence.js.map +0 -1
- package/dist/styles/tooltip.d.ts +0 -2
- package/dist/styles/tooltip.d.ts.map +0 -1
- package/dist/styles/tooltip.js.map +0 -1
- package/dist/svg-edit-label.d.ts +0 -2
- package/dist/svg-edit-label.d.ts.map +0 -1
- package/dist/svg-edit-label.js +0 -110
- package/dist/svg-edit-label.js.map +0 -1
- package/dist/swipe/index.d.ts +0 -2
- package/dist/swipe/index.d.ts.map +0 -1
- package/dist/swipe/index.js +0 -2
- package/dist/swipe/index.js.map +0 -1
- package/dist/swipe/swipe.d.ts +0 -65
- package/dist/swipe/swipe.d.ts.map +0 -1
- package/dist/swipe/swipe.js +0 -229
- package/dist/swipe/swipe.js.map +0 -1
- package/dist/tabs/tab-layout-item.d.ts +0 -10
- package/dist/tabs/tab-layout-item.d.ts.map +0 -1
- package/dist/tabs/tab-layout-item.js +0 -20
- package/dist/tabs/tab-layout-item.js.map +0 -1
- package/dist/tabs/tab-layout.d.ts +0 -10
- package/dist/tabs/tab-layout.d.ts.map +0 -1
- package/dist/tabs/tab-layout.js +0 -25
- package/dist/tabs/tab-layout.js.map +0 -1
- package/dist/tabs/tab-list-item.d.ts +0 -34
- package/dist/tabs/tab-list-item.d.ts.map +0 -1
- package/dist/tabs/tab-list-item.js +0 -195
- package/dist/tabs/tab-list-item.js.map +0 -1
- package/dist/tabs/tab-list.d.ts +0 -31
- package/dist/tabs/tab-list.d.ts.map +0 -1
- package/dist/tabs/tab-list.js +0 -257
- package/dist/tabs/tab-list.js.map +0 -1
- package/dist/tabs/tab-panel.d.ts +0 -11
- package/dist/tabs/tab-panel.d.ts.map +0 -1
- package/dist/tabs/tab-panel.js +0 -30
- package/dist/tabs/tab-panel.js.map +0 -1
- package/dist/tabs/tab-panels.d.ts +0 -30
- package/dist/tabs/tab-panels.d.ts.map +0 -1
- package/dist/tabs/tab-panels.js +0 -80
- package/dist/tabs/tab-panels.js.map +0 -1
- package/dist/timeline/index.d.ts +0 -9
- package/dist/timeline/index.d.ts.map +0 -1
- package/dist/timeline/index.js +0 -8
- package/dist/timeline/index.js.map +0 -1
- package/dist/timeline/timeline-controller.d.ts +0 -48
- package/dist/timeline/timeline-controller.d.ts.map +0 -1
- package/dist/timeline/timeline-controller.js +0 -81
- package/dist/timeline/timeline-controller.js.map +0 -1
- package/dist/timeline/timeline-draw.d.ts +0 -28
- package/dist/timeline/timeline-draw.d.ts.map +0 -1
- package/dist/timeline/timeline-draw.js +0 -330
- package/dist/timeline/timeline-draw.js.map +0 -1
- package/dist/timeline/timeline-element.d.ts +0 -140
- package/dist/timeline/timeline-element.d.ts.map +0 -1
- package/dist/timeline/timeline-element.js +0 -888
- package/dist/timeline/timeline-element.js.map +0 -1
- package/dist/timeline/timeline-interactions.d.ts +0 -40
- package/dist/timeline/timeline-interactions.d.ts.map +0 -1
- package/dist/timeline/timeline-interactions.js +0 -393
- package/dist/timeline/timeline-interactions.js.map +0 -1
- package/dist/timeline/timeline-styles.d.ts +0 -2
- package/dist/timeline/timeline-styles.d.ts.map +0 -1
- package/dist/timeline/timeline-styles.js +0 -153
- package/dist/timeline/timeline-styles.js.map +0 -1
- package/dist/timeline/timeline-track-tabs.d.ts +0 -30
- package/dist/timeline/timeline-track-tabs.d.ts.map +0 -1
- package/dist/timeline/timeline-track-tabs.js +0 -204
- package/dist/timeline/timeline-track-tabs.js.map +0 -1
- package/dist/timeline/types.d.ts +0 -144
- package/dist/timeline/types.d.ts.map +0 -1
- package/dist/timeline/types.js +0 -3
- package/dist/timeline/types.js.map +0 -1
- package/dist/tree/index.d.ts +0 -5
- package/dist/tree/index.d.ts.map +0 -1
- package/dist/tree/index.js +0 -5
- package/dist/tree/index.js.map +0 -1
- package/dist/tree/tree-base.d.ts +0 -70
- package/dist/tree/tree-base.d.ts.map +0 -1
- package/dist/tree/tree-base.js +0 -1028
- package/dist/tree/tree-base.js.map +0 -1
- package/dist/tree/tree-controller.d.ts +0 -14
- package/dist/tree/tree-controller.d.ts.map +0 -1
- package/dist/tree/tree-controller.js +0 -96
- package/dist/tree/tree-controller.js.map +0 -1
- package/dist/tree/tree-list.d.ts +0 -20
- package/dist/tree/tree-list.d.ts.map +0 -1
- package/dist/tree/tree-list.js +0 -174
- package/dist/tree/tree-list.js.map +0 -1
- package/dist/tree/types.d.ts +0 -14
- package/dist/tree/types.d.ts.map +0 -1
- package/dist/tree/types.js +0 -7
- package/dist/tree/types.js.map +0 -1
- package/dist/util/checkbox.d.ts +0 -2
- package/dist/util/checkbox.d.ts.map +0 -1
- package/dist/util/checkbox.js +0 -69
- package/dist/util/checkbox.js.map +0 -1
- package/dist/util/circle-arc.d.ts +0 -34
- package/dist/util/circle-arc.d.ts.map +0 -1
- package/dist/util/circle-arc.js +0 -85
- package/dist/util/circle-arc.js.map +0 -1
- package/dist/util/clamp.d.ts +0 -4
- package/dist/util/clamp.d.ts.map +0 -1
- package/dist/util/clamp.js +0 -23
- package/dist/util/clamp.js.map +0 -1
- package/dist/util/compare.d.ts +0 -53
- package/dist/util/compare.d.ts.map +0 -1
- package/dist/util/compare.js +0 -91
- package/dist/util/compare.js.map +0 -1
- package/dist/util/content-editable.d.ts +0 -2
- package/dist/util/content-editable.d.ts.map +0 -1
- package/dist/util/content-editable.js +0 -13
- package/dist/util/content-editable.js.map +0 -1
- package/dist/util/coordinates.d.ts +0 -3
- package/dist/util/coordinates.d.ts.map +0 -1
- package/dist/util/coordinates.js +0 -11
- package/dist/util/coordinates.js.map +0 -1
- package/dist/util/drag.d.ts +0 -16
- package/dist/util/drag.d.ts.map +0 -1
- package/dist/util/drag.js +0 -20
- package/dist/util/drag.js.map +0 -1
- package/dist/util/is-numeric.d.ts +0 -2
- package/dist/util/is-numeric.d.ts.map +0 -1
- package/dist/util/is-numeric.js +0 -9
- package/dist/util/is-numeric.js.map +0 -1
- package/dist/util/key-value.d.ts +0 -5
- package/dist/util/key-value.d.ts.map +0 -1
- package/dist/util/key-value.js +0 -29
- package/dist/util/key-value.js.map +0 -1
- package/dist/util/near.d.ts +0 -2
- package/dist/util/near.d.ts.map +0 -1
- package/dist/util/near.js +0 -6
- package/dist/util/near.js.map +0 -1
- package/dist/util/primitive-types.d.ts +0 -6
- package/dist/util/primitive-types.d.ts.map +0 -1
- package/dist/util/primitive-types.js +0 -2
- package/dist/util/primitive-types.js.map +0 -1
- package/dist/util/svg-editable-text.d.ts +0 -26
- package/dist/util/svg-editable-text.d.ts.map +0 -1
- package/dist/util/svg-editable-text.js +0 -119
- package/dist/util/svg-editable-text.js.map +0 -1
- package/dist/util/time.d.ts +0 -2
- package/dist/util/time.d.ts.map +0 -1
- package/dist/util/time.js +0 -2
- package/dist/util/time.js.map +0 -1
- package/dist/util/tooltip-controller.d.ts +0 -10
- package/dist/util/tooltip-controller.d.ts.map +0 -1
- package/dist/util/tooltip-controller.js +0 -237
- package/dist/util/tooltip-controller.js.map +0 -1
- package/dist/util/tooltip.d.ts +0 -21
- package/dist/util/tooltip.d.ts.map +0 -1
- package/dist/util/tooltip.js +0 -98
- package/dist/util/tooltip.js.map +0 -1
- package/dist/util/value-drag.d.ts +0 -33
- package/dist/util/value-drag.d.ts.map +0 -1
- package/dist/util/value-drag.js +0 -154
- package/dist/util/value-drag.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item-DEzL_Yjk.js","names":[],"sources":["../src/menu/menu-container.ts","../src/menu/menu-trigger.ts","../src/menu/menu-item.ts"],"sourcesContent":["import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { popupSurfaceStyles } from '../styles/popup.js';\nimport { TickledController, tickledStyles } from '../interaction/index.js';\n\n@customElement(`ixfx-menu-container`)\nexport class MenuContainer extends LitElement {\n @property({ type: String, attribute: `anchor` }) anchor?: string;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @query(`.popover`) private _popover!: HTMLElement;\n\n // TickledController manages input mode and tickled state\n private tickled = new TickledController<number>(this, {\n getItems: () => {\n const items = this._getMenuItems();\n return items.map((item, i) => ({\n id: i,\n enabled: !item.hasAttribute('disabled')\n }));\n },\n onTickle: (index) => {\n // When an item is tickled (hovered/keyboard focused), handle submenu opening\n const items = this._getMenuItems();\n if (index !== undefined) {\n const item = items[index];\n // Ensure the item is focusable and focus it\n item.tabIndex = 0;\n item.focus({ preventScroll: true });\n }\n },\n onStateChange: () => {\n // Sync DOM attributes for slotted content\n this._syncTickledClasses();\n }\n });\n\n static styles = [popupSurfaceStyles, tickledStyles, css`\n :host {\n display: block;\n }\n\n .popover {\n padding: var(--space-xs) 0;\n min-width: 160px;\n }\n\n :host {\n opacity: 1;\n transform: translateY(0) scale(1);\n transition: opacity 0.12s ease-out, transform 0.12s ease-out,\n display 0.12s allow-discrete, overlay 0.12s allow-discrete;\n }\n\n @starting-style :host {\n opacity: 0;\n transform: translateY(-4px) scale(0.97);\n }\n\n ::slotted(menu-separator) {\n display: block;\n margin: var(--space-xs) 0;\n }\n `];\n\n private _updateIconSections(): void {\n const slot = this.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n if (!slot)\n return;\n\n const assigned = slot.assignedElements({ flatten: true });\n\n // Group direct children into sections delimited by separators and headers\n const sections: Element[][] = [];\n let section: Element[] = [];\n for (const el of assigned) {\n if (el.tagName === `IXFX-MENU-SEPARATOR` || el.tagName === `IXFX-MENU-HEADER`) {\n if (section.length > 0) {\n sections.push(section); section = [];\n }\n } else {\n section.push(el);\n }\n }\n if (section.length > 0)\n sections.push(section);\n\n this._propagateContext();\n\n for (const sec of sections) {\n const hasIcon = sec.some((el) => {\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n return [...el.children].some(ri => ri.hasAttribute(`icon-name`));\n }\n return el.hasAttribute(`icon-name`);\n });\n\n for (const el of sec) {\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n for (const ri of el.children) {\n if (hasIcon)\n ri.setAttribute(`data-icon-section`, ``);\n else ri.removeAttribute(`data-icon-section`);\n }\n } else {\n if (hasIcon)\n el.setAttribute(`data-icon-section`, ``);\n else el.removeAttribute(`data-icon-section`);\n }\n }\n }\n\n this.performUpdate();\n }\n\n private _propagateContext(): void {\n const slot = this.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n if (!slot)\n return;\n for (const el of slot.assignedElements({ flatten: true })) {\n if (`registry` in el)\n (el as any).registry = this.registry;\n if (`keyboardManager` in el)\n (el as any).keyboardManager = this.keyboardManager;\n }\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(`registry`) || changedProperties.has(`keyboardManager`)) {\n this._propagateContext();\n }\n }\n\n /**\n * Sync data-input-mode to :host so CSS variables cascade to slotted items\n */\n willUpdate(changed: Map<PropertyKey, unknown>): void {\n super.willUpdate(changed);\n // Set data-input-mode on :host so tickledStyles CSS variables cascade\n // through shadow DOM to slotted menu items\n this.setAttribute('data-input-mode', this.tickled.inputMode);\n }\n\n render() {\n return html`\n <div\n class=\"popover popup-surface\"\n role=\"menu\"\n @keydown=${this._handleKeydown}\n @mouseover=${this._handleMouseOver}\n >\n <slot @slotchange=${this._updateIconSections}></slot>\n </div>\n `;\n }\n\n private _getMenuItems(): HTMLElement[] {\n const slot = this.shadowRoot?.querySelector(`slot`);\n if (!slot)\n return [];\n\n const skipTags = [`IXFX-MENU-SEPARATOR`, `IXFX-MENU-HEADER`];\n const result: HTMLElement[] = [];\n\n for (const el of slot.assignedElements({ flatten: true })) {\n if (skipTags.includes(el.tagName))\n continue;\n if (el.hasAttribute(`disabled`))\n continue;\n const role = el.getAttribute(`role`);\n if (role === `none` || role === `presentation`)\n continue;\n\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n const groupSlot = el.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n for (const radioItem of groupSlot?.assignedElements({ flatten: true }) ?? []) {\n if (!radioItem.hasAttribute(`disabled`)) {\n result.push(radioItem as HTMLElement);\n }\n }\n } else {\n result.push(el as HTMLElement);\n }\n }\n\n return result;\n }\n\n /**\n * Sync .tickled class on slotted items to match controller state\n * This is called via onStateChange whenever the tickled state changes\n */\n private _syncTickledClasses(): void {\n const items = this._getMenuItems();\n items.forEach((item, i) => {\n if (this.tickled.isTickled(i)) {\n item.classList.add(`tickled`);\n item.tabIndex = 0;\n // Set inline styles to ensure visibility across shadow DOM boundaries\n const innerItem = item.shadowRoot?.querySelector(`.item`) as HTMLElement | null;\n if (innerItem) {\n innerItem.style.background = `rgba(0, 0, 0, 0.06)`;\n innerItem.style.borderColor = `var(--accent)`;\n innerItem.style.color = `inherit`;\n }\n } else {\n item.classList.remove(`tickled`);\n item.tabIndex = -1;\n // Clear inline styles\n const innerItem = item.shadowRoot?.querySelector(`.item`) as HTMLElement | null;\n if (innerItem) {\n innerItem.style.background = ``;\n innerItem.style.borderColor = ``;\n innerItem.style.color = ``;\n }\n }\n });\n\n // Focus the tickled item if in keyboard mode\n if (this.tickled.inputMode === 'keyboard' && this.tickled.tickledId !== undefined) {\n const tickledItem = items[this.tickled.tickledId];\n tickledItem?.focus();\n }\n }\n\n private _handleMouseOver = (e: MouseEvent): void => {\n const items = this._getMenuItems();\n // composedPath crosses shadow boundaries to find the hovered menu item\n const path = e.composedPath();\n const hoveredIndex = items.findIndex(item => path.includes(item));\n if (hoveredIndex !== -1) {\n const item = items[hoveredIndex];\n // If IXFX-MENU-CONTAINER appears before this item in the composed path, the\n // event originated from inside a nested submenu. Skip the focus override so the\n // inner container keeps ownership of focus. stopPropagation() alone is not\n // sufficient because it does not reliably cross shadow-root boundaries with\n // popovers in the stack — both this handler and the inner one will fire.\n const itemPathIndex = path.indexOf(item);\n const isFromInsideSubmenu = path.slice(0, itemPathIndex).some(\n node => node instanceof Element && node.tagName === `IXFX-MENU-CONTAINER`,\n );\n if (!isFromInsideSubmenu) {\n // Use TickledController to handle mouse hover\n this.tickled.handlePointerEnter(hoveredIndex);\n }\n // Stop propagation so ancestor MenuContainers don't override this focus\n // with their own mouseover handler (e.g. outer menu focusing the sub-trigger).\n e.stopPropagation();\n }\n };\n\n focusFirst(): void {\n this.tickled.handleKeyboardNavigation('first');\n }\n\n private _focusNext(items: HTMLElement[], direction: number): void {\n if (items.length === 0) {\n return;\n }\n\n this.tickled.handleKeyboardNavigation(direction > 0 ? 'next' : 'previous');\n }\n\n private _focusItem(items: HTMLElement[], index: number): void {\n if (items.length === 0) {\n return;\n }\n\n // Clamp index to valid range\n const clampedIndex = Math.max(0, Math.min(index, items.length - 1));\n this.tickled.handleKeyboardNavigation(clampedIndex);\n }\n\n private _activateFocusedItem(items: HTMLElement[]): void {\n const tickledIndex = this.tickled.tickledId;\n if (tickledIndex === undefined) {\n return;\n }\n \n const item = items[tickledIndex];\n if (!item) {\n return;\n }\n\n const tagName = item.tagName;\n\n if (tagName === `IXFX-MENU-SUB-TRIGGER`) {\n // Native menu behavior handles submenu navigation automatically\n return;\n }\n\n if (tagName === `IXFX-MENU-CHECK-ITEM`) {\n const checkItem = item as any;\n checkItem.checked = !checkItem.checked;\n checkItem.dispatchEvent(new CustomEvent(`command`, {\n detail: { command: checkItem.command, checked: checkItem.checked },\n bubbles: true,\n composed: true,\n }));\n return;\n }\n\n if (tagName === `IXFX-MENU-RADIO-ITEM`) {\n item.dispatchEvent(new CustomEvent(`radio-select`, {\n detail: { value: (item as any).value },\n bubbles: true,\n composed: true,\n }));\n return;\n }\n\n if (tagName === `IXFX-MENU-ITEM`) {\n const command = (item as any).command;\n if (command) {\n item.dispatchEvent(new CustomEvent(`command`, {\n detail: { command },\n bubbles: true,\n composed: true,\n }));\n }\n return;\n }\n\n (item as HTMLElement).click();\n }\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n const items = this._getMenuItems();\n if (items.length === 0) {\n return;\n }\n\n switch (e.key) {\n case `ArrowDown`:\n e.preventDefault();\n e.stopPropagation();\n this._focusNext(items, 1);\n break;\n case `ArrowUp`:\n e.preventDefault();\n e.stopPropagation();\n this._focusNext(items, -1);\n break;\n case `Home`:\n e.preventDefault();\n e.stopPropagation();\n this._focusItem(items, 0);\n break;\n case `End`:\n e.preventDefault();\n e.stopPropagation();\n this._focusItem(items, items.length - 1);\n break;\n case `Enter`:\n case ` `:\n e.preventDefault();\n e.stopPropagation();\n this._activateFocusedItem(items);\n break;\n }\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-container': MenuContainer;\n }\n}\n","import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { popupSurfaceStyles } from '../styles/popup.js';\nimport './menu-container.js';\n\ntype MenuMode = `trigger` | `dropdown` | `context`;\ntype Placement = `bottom-start` | `bottom-end` | `right-start`;\n\nexport type MenuTriggerCommandDetail = {\n readonly command?: string;\n readonly value?: string;\n readonly checked?: boolean;\n};\n\nexport type MenuTriggerCommandEvent = CustomEvent<MenuTriggerCommandDetail>;\n\n@customElement(`ixfx-menu-trigger`)\nexport class MenuTrigger extends LitElement {\n @property({ type: String }) mode: MenuMode = `trigger`;\n @property({ type: String }) label = `⋮`;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @property({ type: String }) placement: Placement = `bottom-start`;\n\n @state() private _isOpen = false;\n @state() private _hasMenu = false;\n @state() private _hasTriggerSlot = false;\n\n @query(`.trigger-btn`) private _triggerBtn!: HTMLButtonElement;\n @query(`.popup`) private _popup!: HTMLElement;\n\n private static _count = 0;\n\n private _anchorName = `--mt-${MenuTrigger._count++}`;\n private _clickListener = this._handleClickOutside.bind(this);\n\n connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener(`keydown`, this._handleKeydown);\n this.addEventListener(`command`, this._handleCommand as EventListener);\n this.addEventListener(`radio-change`, this._handleRadioChange as EventListener);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener(`keydown`, this._handleKeydown);\n this.removeEventListener(`command`, this._handleCommand as EventListener);\n this.removeEventListener(`radio-change`, this._handleRadioChange as EventListener);\n document.removeEventListener(`click`, this._clickListener);\n }\n\n firstUpdated(): void {\n this.style.setProperty(`--anchor-name`, this._anchorName);\n this._popup.addEventListener(`toggle`, this._handlePopoverToggle);\n\n this.updateComplete.then(() => {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | undefined;\n if (slot) {\n const assigned = slot.assignedElements({ flatten: true });\n if (assigned.length > 0) {\n this._hasMenu = true;\n this._propagateContext();\n }\n }\n\n this._updatePosition();\n });\n }\n\n updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(`registry`) || changedProperties.has(`keyboardManager`)) {\n this._propagateContext();\n }\n }\n\n private _updatePosition(): void {\n const placements: Record<Placement, { top: string; left: string }> = {\n 'bottom-start': { top: `anchor(bottom)`, left: `anchor(left)` },\n 'bottom-end': { top: `anchor(bottom)`, left: `anchor(right)` },\n 'right-start': { top: `anchor(top)`, left: `anchor(right)` },\n };\n const pos = placements[this.placement];\n this._popup.style.top = pos.top;\n this._popup.style.left = pos.left;\n (this._popup.style as any).positionAnchor = this._anchorName;\n }\n\n private _propagateContext(): void {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | undefined;\n const items = slot?.assignedElements({ flatten: true }) ?? [];\n for (const el of items) {\n if (`registry` in el)\n (el as any).registry = this.registry;\n if (`keyboardManager` in el)\n (el as any).keyboardManager = this.keyboardManager;\n }\n }\n\n private _handleSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n const assigned = slot.assignedElements({ flatten: true });\n this._hasMenu = assigned.length > 0;\n this._propagateContext();\n }\n\n private _handleTriggerSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasTriggerSlot = slot.assignedElements({ flatten: true }).length > 0;\n }\n\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n openMenu(): void {\n this._openMenu();\n }\n\n closeMenu(): void {\n this._closeMenu();\n }\n\n focusTrigger(): void {\n this._triggerBtn?.focus();\n }\n\n private _openMenu(): void {\n if (this._isOpen || !this._popup?.popover)\n return;\n try {\n (this._popup as any).showPopover({ source: this });\n this._isOpen = true;\n document.addEventListener(`click`, this._clickListener);\n this.dispatchEvent(new CustomEvent(`menu-trigger-open`, { bubbles: true, composed: true }));\n requestAnimationFrame(() => {\n this._getMenuContainer()?.focusFirst();\n });\n } catch (err) {\n console.warn(`showPopover failed:`, err);\n }\n }\n\n private _handlePopoverToggle = (e: Event): void => {\n if ((e as ToggleEvent).newState === `closed`) {\n this._isOpen = false;\n document.removeEventListener(`click`, this._clickListener);\n this.dispatchEvent(new CustomEvent(`menu-trigger-close`, { bubbles: true, composed: true }));\n }\n };\n\n private _closeMenu(): void {\n if (!this._isOpen)\n return;\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch { /* ignore */ }\n }\n this._isOpen = false;\n document.removeEventListener(`click`, this._clickListener);\n }\n\n private _handleTriggerClick(e: Event): void {\n e.stopPropagation();\n if (this._isOpen) {\n this._closeMenu();\n this._triggerBtn?.focus();\n } else {\n this._openMenu();\n }\n }\n\n private _handleClickOutside(e: Event): void {\n if (!this.contains(e.target as Node)) {\n if (this._popup?.popover && this._popup.hasAttribute(`open`)) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n }\n }\n\n private _getMenuContainer(): (HTMLElement & { focusFirst: () => void }) | null {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | null;\n const assigned = slot?.assignedElements({ flatten: true }) ?? [];\n const container = assigned.find(el => el.tagName === `IXFX-MENU-CONTAINER`);\n return (container as any) ?? null;\n }\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n if (!this._isOpen)\n return;\n\n if (e.key === `Escape`) {\n e.preventDefault();\n e.stopPropagation();\n this._closeMenu();\n this._triggerBtn?.focus();\n } else if (e.key === `Tab`) {\n this._closeMenu();\n this._triggerBtn?.focus();\n }\n };\n\n private _handleCommand(e: CustomEvent): void {\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n this.dispatchEvent(new CustomEvent<MenuTriggerCommandDetail>(`menu-command`, {\n detail: e.detail,\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleRadioChange(e: CustomEvent): void {\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n this.dispatchEvent(new CustomEvent<MenuTriggerCommandDetail>(`menu-command`, {\n detail: {\n command: e.detail.name,\n value: e.detail.value,\n },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleContextMenu(e: MouseEvent): void {\n if (this.mode !== `context`)\n return;\n e.preventDefault();\n this._popup.style.top = `${e.clientY}px`;\n this._popup.style.left = `${e.clientX}px`;\n this._popup.style.position = `fixed`;\n (this._popup.style as any).positionAnchor = `none`;\n if (this._popup?.popover) {\n try {\n (this._popup as any).showPopover();\n } catch {\n // ignore\n }\n }\n }\n\n static styles = [\n popupSurfaceStyles,\n css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n .trigger-area {\n anchor-name: var(--anchor-name);\n display: inline-flex;\n align-items: stretch;\n }\n\n .trigger-btn {\n background: none;\n border: none;\n color: var(--surface-3-text);\n cursor: pointer;\n padding: var(--space-s) var(--space-m);\n font-size: var(--text-m);\n font-weight: 600;\n border-radius: var(--radius-s);\n opacity: 0.6;\n transition: opacity var(--transition), background var(--transition);\n }\n\n .trigger-btn:hover {\n background: var(--_trigger-hover-bg, var(--surface-4));\n color: var(--surface-3-text);\n opacity: var(--_trigger-hover-opacity, 1);\n }\n\n .trigger-btn:focus-visible {\n background: var(--surface-4);\n color: var(--surface-3-text);\n outline: none;\n opacity: 1;\n }\n\n .popup {\n position: fixed;\n position-anchor: var(--anchor-name);\n inset: auto;\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n z-index: 100;\n position-try-fallbacks: flip-inline, flip-block, flip-block flip-inline;\n }\n\n .popup[popover] {\n opacity: 1;\n transform: translateY(0) scale(1);\n transition: opacity 0.12s ease-out, transform 0.12s ease-out,\n display 0.12s allow-discrete, overlay 0.12s allow-discrete;\n }\n\n @starting-style .popup {\n opacity: 0;\n transform: translateY(-4px) scale(0.97);\n }\n `,\n ];\n\n render() {\n const showButton = this.mode !== `dropdown` && this._hasMenu && !this._hasTriggerSlot;\n return html`\n <div\n class=\"trigger-area\"\n @click=${this._handleTriggerClick}\n @contextmenu=${this._handleContextMenu}\n >\n ${showButton\n ? html`<button class=\"trigger-btn\" part=\"base\">${this.label}</button>`\n : null}\n <slot name=\"trigger\" @slotchange=${this._handleTriggerSlotChange}></slot>\n </div>\n <div\n class=\"popup popup-surface\"\n popover=\"auto\"\n @click=${(e: Event) => e.stopPropagation()}\n >\n <slot name=\"menu\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-trigger': MenuTrigger;\n }\n}\n","import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { tickledItemStyles } from '../interaction/index.js';\nimport '../icons/icon.js';\n\nexport type MenuItemCommandDetail = {\n readonly command: string;\n readonly args: string;\n};\n\nexport type MenuItemCommandEvent = CustomEvent<MenuItemCommandDetail>;\n\n@customElement(`ixfx-menu-item`)\nexport class MenuItem extends LitElement {\n @property({ type: String }) command = ``;\n @property({ type: String, attribute: `command-args` }) commandArgs = ``;\n @property({ type: String }) label = ``;\n @property({ type: Boolean }) disabled = false;\n @property({ type: String, attribute: `icon-name` }) iconName = ``;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @property({ attribute: false }) submenuPopover?: HTMLElement;\n\n @state() private _hasChildren = false;\n @query(`slot`) private _slot!: HTMLSlotElement;\n\n private _hoverTimeout: number | null = null;\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n }\n }\n\n private _handleSlotChange(): void {\n const assigned = this._slot?.assignedElements() ?? [];\n this._hasChildren = assigned.length > 0;\n }\n\n private _handleMouseEnter(): void {\n if (this.disabled || !this._hasChildren || !this.submenuPopover)\n return;\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n }\n this._hoverTimeout = window.setTimeout(() => {\n this._showSubmenu();\n }, 150);\n }\n\n private _handleMouseLeave(): void {\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n this._hoverTimeout = null;\n }\n this._hideSubmenu();\n }\n\n private _showSubmenu(): void {\n if (!this.submenuPopover?.popover)\n return;\n try {\n this.submenuPopover.showPopover();\n } catch (err) {\n console.warn(`showPopover failed:`, err);\n }\n }\n\n private _hideSubmenu(): void {\n if (!this.submenuPopover?.popover)\n return;\n try {\n this.submenuPopover.hidePopover();\n } catch (err) {\n console.warn(`hidePopover failed:`, err);\n }\n }\n\n private handleClick(): void {\n if (this.disabled)\n return;\n\n this.dispatchEvent(new CustomEvent<MenuItemCommandDetail>(`command`, {\n detail: { command: this.command, args: this.commandArgs },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _resolvedLabel(): string {\n if (this.label)\n return this.label;\n if (this.registry && this.command) {\n return this.registry.get(this.command)?.label ?? ``;\n }\n return ``;\n }\n\n private _resolvedIcon(): string | null {\n if (this.iconName)\n return this.iconName;\n if (this.registry && this.command) {\n return this.registry.get(this.command)?.icon ?? null;\n }\n return null;\n }\n\n willUpdate(changedProperties: Map<string, unknown>): void {\n super.willUpdate(changedProperties);\n const resolvedIcon = this._resolvedIcon();\n if (resolvedIcon && !this.iconName) {\n this.setAttribute(`data-icon-section`, ``);\n } else if (!resolvedIcon && !this.iconName) {\n this.removeAttribute(`data-icon-section`);\n }\n }\n\n updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n }\n\n private _getShortcut(): string | null {\n if (!this.keyboardManager || !this.command)\n return null;\n const bindings = (this.keyboardManager as any).getBindings?.() ?? [];\n const binding = bindings.find((b: any) => b.commandId === this.command);\n if (!binding)\n return null;\n const mods = Array.from(binding.modifiers ?? [], (m: string) =>\n ({ ctrl: `⌃`, shift: `⇧`, alt: `⌥`, meta: `⌘` })[m] ?? m);\n const key = binding.key?.length === 1 ? binding.key.toUpperCase() : binding.key;\n return [...mods, key].join(``);\n }\n\n static override styles = [tickledItemStyles, css`\n :host {\n display: block;\n }\n\n .item {\n display: flex !important;\n align-items: center;\n padding: 6px var(--space-m);\n font-size: var(--text-m);\n background: var(--item-bg, transparent);\n border: var(--item-border, 1px solid transparent);\n color: var(--item-text, inherit);\n }\n\n :host(.tickled) .item {\n background: rgba(0, 0, 0, 0.06);\n border: 1px solid var(--accent);\n color: inherit;\n }\n\n :host(:focus) {\n outline: none;\n }\n\n .item.disabled {\n opacity: var(--disabled-opacity);\n cursor: default;\n }\n\n .item.disabled:hover {\n background: transparent;\n }\n\n .icon-slot {\n width: 0;\n overflow: hidden;\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n :host([icon-name]) .icon-slot,\n :host([data-icon-section]) .icon-slot {\n width: 1em;\n height: 1em;\n margin-right: var(--space-s);\n }\n\n .label {\n flex: 1;\n }\n\n .shortcut {\n margin-left: auto;\n color: var(--surface-muted-text);\n font-size: var(--text-s);\n }\n\n .arrow {\n color: var(--surface-muted-text);\n margin-left: var(--space-m);\n }\n `];\n\n render() {\n const shortcut = this._getShortcut();\n const resolvedIcon = this._resolvedIcon();\n return html`\n <div \n class=\"item ${this.disabled ? `disabled` : ``}\"\n @click=${this.handleClick}\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n tabindex=\"${this.disabled ? -1 : 0}\"\n role=\"menuitem\"\n aria-haspopup=\"${this._hasChildren ? `true` : `false`}\"\n aria-expanded=\"${this.submenuPopover?.matches(`:popover-open`) ?? false}\"\n >\n <span class=\"icon-slot\">${resolvedIcon ? html`<ixfx-icon name=\"${resolvedIcon}\"></ixfx-icon>` : null}</span>\n <span class=\"label\"><slot></slot>${this._resolvedLabel()}</span>\n ${shortcut ? html`<span class=\"shortcut\">${shortcut}</span>` : null}\n ${this._hasChildren ? html`<span class=\"arrow\"><ixfx-icon name=\"chevron-right\"></ixfx-icon></span>` : null}\n </div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-item': MenuItem;\n }\n}\n"],"mappings":";;;;;;;;AAOO,IAAA,gBAAA,MAAM,sBAAsB,WAAW;;;iBAO1B,IAAI,kBAA0B,MAAM;GACpD,gBAAgB;AAEd,WADc,KAAK,eACP,CAAC,KAAK,MAAM,OAAO;KAC7B,IAAI;KACJ,SAAS,CAAC,KAAK,aAAa,WAAW;KACxC,EAAE;;GAEL,WAAW,UAAU;IAEnB,MAAM,QAAQ,KAAK,eAAe;AAClC,QAAI,UAAU,KAAA,GAAW;KACvB,MAAM,OAAO,MAAM;AAEnB,UAAK,WAAW;AAChB,UAAK,MAAM,EAAE,eAAe,MAAM,CAAC;;;GAGvC,qBAAqB;AAEnB,SAAK,qBAAqB;;GAE7B,CAAC;2BA8L0B,MAAwB;GAClD,MAAM,QAAQ,KAAK,eAAe;GAElC,MAAM,OAAO,EAAE,cAAc;GAC7B,MAAM,eAAe,MAAM,WAAU,SAAQ,KAAK,SAAS,KAAK,CAAC;AACjE,OAAI,iBAAiB,IAAI;IACvB,MAAM,OAAO,MAAM;IAMnB,MAAM,gBAAgB,KAAK,QAAQ,KAAK;AAIxC,QAAI,CAHwB,KAAK,MAAM,GAAG,cAAc,CAAC,MACvD,SAAQ,gBAAgB,WAAW,KAAK,YAAY,sBAE9B,CAEtB,MAAK,QAAQ,mBAAmB,aAAa;AAI/C,MAAE,iBAAiB;;;yBA+EG,MAA2B;GACnD,MAAM,QAAQ,KAAK,eAAe;AAClC,OAAI,MAAM,WAAW,EACnB;AAGF,WAAQ,EAAE,KAAV;IACE,KAAK;AACH,OAAE,gBAAgB;AAClB,OAAE,iBAAiB;AACnB,UAAK,WAAW,OAAO,EAAE;AACzB;IACF,KAAK;AACH,OAAE,gBAAgB;AAClB,OAAE,iBAAiB;AACnB,UAAK,WAAW,OAAO,GAAG;AAC1B;IACF,KAAK;AACH,OAAE,gBAAgB;AAClB,OAAE,iBAAiB;AACnB,UAAK,WAAW,OAAO,EAAE;AACzB;IACF,KAAK;AACH,OAAE,gBAAgB;AAClB,OAAE,iBAAiB;AACnB,UAAK,WAAW,OAAO,MAAM,SAAS,EAAE;AACxC;IACF,KAAK;IACL,KAAK;AACH,OAAE,gBAAgB;AAClB,OAAE,iBAAiB;AACnB,UAAK,qBAAqB,MAAM;AAChC;;;;;gBAjUU;GAAC;GAAoB;GAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BrD;;CAEF,sBAAoC;EAClC,MAAM,OAAO,KAAK,YAAY,cAAc,OAAO;AACnD,MAAI,CAAC,KACH;EAEF,MAAM,WAAW,KAAK,iBAAiB,EAAE,SAAS,MAAM,CAAC;EAGzD,MAAM,WAAwB,EAAE;EAChC,IAAI,UAAqB,EAAE;AAC3B,OAAK,MAAM,MAAM,SACf,KAAI,GAAG,YAAY,yBAAyB,GAAG,YAAY;OACrD,QAAQ,SAAS,GAAG;AACtB,aAAS,KAAK,QAAQ;AAAE,cAAU,EAAE;;QAGtC,SAAQ,KAAK,GAAG;AAGpB,MAAI,QAAQ,SAAS,EACnB,UAAS,KAAK,QAAQ;AAExB,OAAK,mBAAmB;AAExB,OAAK,MAAM,OAAO,UAAU;GAC1B,MAAM,UAAU,IAAI,MAAM,OAAO;AAC/B,QAAI,GAAG,YAAY,wBACjB,QAAO,CAAC,GAAG,GAAG,SAAS,CAAC,MAAK,OAAM,GAAG,aAAa,YAAY,CAAC;AAElE,WAAO,GAAG,aAAa,YAAY;KACnC;AAEF,QAAK,MAAM,MAAM,IACf,KAAI,GAAG,YAAY,wBACjB,MAAK,MAAM,MAAM,GAAG,SAClB,KAAI,QACF,IAAG,aAAa,qBAAqB,GAAG;OACrC,IAAG,gBAAgB,oBAAoB;YAG1C,QACF,IAAG,aAAa,qBAAqB,GAAG;OACrC,IAAG,gBAAgB,oBAAoB;;AAKlD,OAAK,eAAe;;CAGtB,oBAAkC;EAChC,MAAM,OAAO,KAAK,YAAY,cAAc,OAAO;AACnD,MAAI,CAAC,KACH;AACF,OAAK,MAAM,MAAM,KAAK,iBAAiB,EAAE,SAAS,MAAM,CAAC,EAAE;AACzD,OAAI,cAAc,GACf,IAAW,WAAW,KAAK;AAC9B,OAAI,qBAAqB,GACtB,IAAW,kBAAkB,KAAK;;;CAIzC,QAAiB,mBAA+C;AAC9D,MAAI,kBAAkB,IAAI,WAAW,IAAI,kBAAkB,IAAI,kBAAkB,CAC/E,MAAK,mBAAmB;;;;;CAO5B,WAAW,SAA0C;AACnD,QAAM,WAAW,QAAQ;AAGzB,OAAK,aAAa,mBAAmB,KAAK,QAAQ,UAAU;;CAG9D,SAAS;AACP,SAAO,IAAI;;;;mBAII,KAAK,eAAe;qBAClB,KAAK,iBAAiB;;4BAEf,KAAK,oBAAoB;;;;CAKnD,gBAAuC;EACrC,MAAM,OAAO,KAAK,YAAY,cAAc,OAAO;AACnD,MAAI,CAAC,KACH,QAAO,EAAE;EAEX,MAAM,WAAW,CAAC,uBAAuB,mBAAmB;EAC5D,MAAM,SAAwB,EAAE;AAEhC,OAAK,MAAM,MAAM,KAAK,iBAAiB,EAAE,SAAS,MAAM,CAAC,EAAE;AACzD,OAAI,SAAS,SAAS,GAAG,QAAQ,CAC/B;AACF,OAAI,GAAG,aAAa,WAAW,CAC7B;GACF,MAAM,OAAO,GAAG,aAAa,OAAO;AACpC,OAAI,SAAS,UAAU,SAAS,eAC9B;AAEF,OAAI,GAAG,YAAY,yBAAyB;IAC1C,MAAM,YAAY,GAAG,YAAY,cAAc,OAAO;AACtD,SAAK,MAAM,aAAa,WAAW,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,CAC1E,KAAI,CAAC,UAAU,aAAa,WAAW,CACrC,QAAO,KAAK,UAAyB;SAIzC,QAAO,KAAK,GAAkB;;AAIlC,SAAO;;;;;;CAOT,sBAAoC;EAClC,MAAM,QAAQ,KAAK,eAAe;AAClC,QAAM,SAAS,MAAM,MAAM;AACzB,OAAI,KAAK,QAAQ,UAAU,EAAE,EAAE;AAC7B,SAAK,UAAU,IAAI,UAAU;AAC7B,SAAK,WAAW;IAEhB,MAAM,YAAY,KAAK,YAAY,cAAc,QAAQ;AACzD,QAAI,WAAW;AACb,eAAU,MAAM,aAAa;AAC7B,eAAU,MAAM,cAAc;AAC9B,eAAU,MAAM,QAAQ;;UAErB;AACL,SAAK,UAAU,OAAO,UAAU;AAChC,SAAK,WAAW;IAEhB,MAAM,YAAY,KAAK,YAAY,cAAc,QAAQ;AACzD,QAAI,WAAW;AACb,eAAU,MAAM,aAAa;AAC7B,eAAU,MAAM,cAAc;AAC9B,eAAU,MAAM,QAAQ;;;IAG5B;AAGF,MAAI,KAAK,QAAQ,cAAc,cAAc,KAAK,QAAQ,cAAc,KAAA,EAClD,OAAM,KAAK,QAAQ,YAC1B,OAAO;;CA8BxB,aAAmB;AACjB,OAAK,QAAQ,yBAAyB,QAAQ;;CAGhD,WAAmB,OAAsB,WAAyB;AAChE,MAAI,MAAM,WAAW,EACnB;AAGF,OAAK,QAAQ,yBAAyB,YAAY,IAAI,SAAS,WAAW;;CAG5E,WAAmB,OAAsB,OAAqB;AAC5D,MAAI,MAAM,WAAW,EACnB;EAIF,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,MAAM,SAAS,EAAE,CAAC;AACnE,OAAK,QAAQ,yBAAyB,aAAa;;CAGrD,qBAA6B,OAA4B;EACvD,MAAM,eAAe,KAAK,QAAQ;AAClC,MAAI,iBAAiB,KAAA,EACnB;EAGF,MAAM,OAAO,MAAM;AACnB,MAAI,CAAC,KACH;EAGF,MAAM,UAAU,KAAK;AAErB,MAAI,YAAY,wBAEd;AAGF,MAAI,YAAY,wBAAwB;GACtC,MAAM,YAAY;AAClB,aAAU,UAAU,CAAC,UAAU;AAC/B,aAAU,cAAc,IAAI,YAAY,WAAW;IACjD,QAAQ;KAAE,SAAS,UAAU;KAAS,SAAS,UAAU;KAAS;IAClE,SAAS;IACT,UAAU;IACX,CAAC,CAAC;AACH;;AAGF,MAAI,YAAY,wBAAwB;AACtC,QAAK,cAAc,IAAI,YAAY,gBAAgB;IACjD,QAAQ,EAAE,OAAQ,KAAa,OAAO;IACtC,SAAS;IACT,UAAU;IACX,CAAC,CAAC;AACH;;AAGF,MAAI,YAAY,kBAAkB;GAChC,MAAM,UAAW,KAAa;AAC9B,OAAI,QACF,MAAK,cAAc,IAAI,YAAY,WAAW;IAC5C,QAAQ,EAAE,SAAS;IACnB,SAAS;IACT,UAAU;IACX,CAAC,CAAC;AAEL;;AAGD,OAAqB,OAAO;;;YA5T9B,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAU,CAAC,CAAA,EAAA,cAAA,WAAA,UAAA,KAAA,EAAA;YAC/C,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,cAAA,WAAA,YAAA,KAAA,EAAA;YAC9B,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,cAAA,WAAA,mBAAA,KAAA,EAAA;YAC9B,MAAM,WAAW,CAAA,EAAA,cAAA,WAAA,YAAA,KAAA,EAAA;4BALnB,cAAc,sBAAsB,CAAA,EAAA,cAAA;;;;ACY9B,IAAA,cAAA,MAAM,oBAAoB,WAAW;;;;;;cACG;eACT;mBAGe;iBAExB;kBACC;yBACO;qBAOb,QAAQ,aAAY;wBACjB,KAAK,oBAAoB,KAAK,KAAK;+BA4G5B,MAAmB;AACjD,OAAK,EAAkB,aAAa,UAAU;AAC5C,SAAK,UAAU;AACf,aAAS,oBAAoB,SAAS,KAAK,eAAe;AAC1D,SAAK,cAAc,IAAI,YAAY,sBAAsB;KAAE,SAAS;KAAM,UAAU;KAAM,CAAC,CAAC;;;yBA6CtE,MAA2B;AACnD,OAAI,CAAC,KAAK,QACR;AAEF,OAAI,EAAE,QAAQ,UAAU;AACtB,MAAE,gBAAgB;AAClB,MAAE,iBAAiB;AACnB,SAAK,YAAY;AACjB,SAAK,aAAa,OAAO;cAChB,EAAE,QAAQ,OAAO;AAC1B,SAAK,YAAY;AACjB,SAAK,aAAa,OAAO;;;;;gBA3KL;;CAKxB,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,WAAS,iBAAiB,WAAW,KAAK,eAAe;AACzD,OAAK,iBAAiB,WAAW,KAAK,eAAgC;AACtE,OAAK,iBAAiB,gBAAgB,KAAK,mBAAoC;;CAGjF,uBAA6B;AAC3B,QAAM,sBAAsB;AAC5B,WAAS,oBAAoB,WAAW,KAAK,eAAe;AAC5D,OAAK,oBAAoB,WAAW,KAAK,eAAgC;AACzE,OAAK,oBAAoB,gBAAgB,KAAK,mBAAoC;AAClF,WAAS,oBAAoB,SAAS,KAAK,eAAe;;CAG5D,eAAqB;AACnB,OAAK,MAAM,YAAY,iBAAiB,KAAK,YAAY;AACzD,OAAK,OAAO,iBAAiB,UAAU,KAAK,qBAAqB;AAEjE,OAAK,eAAe,WAAW;GAC7B,MAAM,OAAO,KAAK,YAAY,cAAc,oBAAoB;AAChE,OAAI;QACe,KAAK,iBAAiB,EAAE,SAAS,MAAM,CAC5C,CAAC,SAAS,GAAG;AACvB,UAAK,WAAW;AAChB,UAAK,mBAAmB;;;AAI5B,QAAK,iBAAiB;IACtB;;CAGJ,QAAQ,mBAA+C;AACrD,MAAI,kBAAkB,IAAI,WAAW,IAAI,kBAAkB,IAAI,kBAAkB,CAC/E,MAAK,mBAAmB;;CAI5B,kBAAgC;EAM9B,MAAM,MAAM;GAJV,gBAAgB;IAAE,KAAK;IAAkB,MAAM;IAAgB;GAC/D,cAAc;IAAE,KAAK;IAAkB,MAAM;IAAiB;GAC9D,eAAe;IAAE,KAAK;IAAe,MAAM;IAAiB;GAExC,CAAC,KAAK;AAC5B,OAAK,OAAO,MAAM,MAAM,IAAI;AAC5B,OAAK,OAAO,MAAM,OAAO,IAAI;AAC5B,OAAK,OAAO,MAAc,iBAAiB,KAAK;;CAGnD,oBAAkC;EAEhC,MAAM,SADO,KAAK,YAAY,cAAc,oBAAoB,GAC5C,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE;AAC7D,OAAK,MAAM,MAAM,OAAO;AACtB,OAAI,cAAc,GACf,IAAW,WAAW,KAAK;AAC9B,OAAI,qBAAqB,GACtB,IAAW,kBAAkB,KAAK;;;CAIzC,kBAA0B,GAAgB;EAExC,MAAM,WADO,EAAE,OACO,iBAAiB,EAAE,SAAS,MAAM,CAAC;AACzD,OAAK,WAAW,SAAS,SAAS;AAClC,OAAK,mBAAmB;;CAG1B,yBAAiC,GAAgB;EAC/C,MAAM,OAAO,EAAE;AACf,OAAK,kBAAkB,KAAK,iBAAiB,EAAE,SAAS,MAAM,CAAC,CAAC,SAAS;;CAG3E,IAAI,SAAkB;AACpB,SAAO,KAAK;;CAGd,WAAiB;AACf,OAAK,WAAW;;CAGlB,YAAkB;AAChB,OAAK,YAAY;;CAGnB,eAAqB;AACnB,OAAK,aAAa,OAAO;;CAG3B,YAA0B;AACxB,MAAI,KAAK,WAAW,CAAC,KAAK,QAAQ,QAChC;AACF,MAAI;AACD,QAAK,OAAe,YAAY,EAAE,QAAQ,MAAM,CAAC;AAClD,QAAK,UAAU;AACf,YAAS,iBAAiB,SAAS,KAAK,eAAe;AACvD,QAAK,cAAc,IAAI,YAAY,qBAAqB;IAAE,SAAS;IAAM,UAAU;IAAM,CAAC,CAAC;AAC3F,+BAA4B;AAC1B,SAAK,mBAAmB,EAAE,YAAY;KACtC;WACK,KAAK;AACZ,WAAQ,KAAK,uBAAuB,IAAI;;;CAY5C,aAA2B;AACzB,MAAI,CAAC,KAAK,QACR;AACF,MAAI,KAAK,QAAQ,QACf,KAAI;AACD,QAAK,OAAe,aAAa;UAC5B;AAEV,OAAK,UAAU;AACf,WAAS,oBAAoB,SAAS,KAAK,eAAe;;CAG5D,oBAA4B,GAAgB;AAC1C,IAAE,iBAAiB;AACnB,MAAI,KAAK,SAAS;AAChB,QAAK,YAAY;AACjB,QAAK,aAAa,OAAO;QAEzB,MAAK,WAAW;;CAIpB,oBAA4B,GAAgB;AAC1C,MAAI,CAAC,KAAK,SAAS,EAAE,OAAe;OAC9B,KAAK,QAAQ,WAAW,KAAK,OAAO,aAAa,OAAO,CAC1D,KAAI;AACD,SAAK,OAAe,aAAa;WAC5B;;;CAOd,oBAA+E;AAI7E,WAHa,KAAK,YAAY,cAAc,oBAAoB,GACzC,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,EACrC,MAAK,OAAM,GAAG,YAAY,sBACpC,IAAY;;CAkB/B,eAAuB,GAAsB;AAC3C,MAAI,KAAK,QAAQ,QACf,KAAI;AACD,QAAK,OAAe,aAAa;UAC5B;AAIV,OAAK,cAAc,IAAI,YAAsC,gBAAgB;GAC3E,QAAQ,EAAE;GACV,SAAS;GACT,UAAU;GACX,CAAC,CAAC;;CAGL,mBAA2B,GAAsB;AAC/C,MAAI,KAAK,QAAQ,QACf,KAAI;AACD,QAAK,OAAe,aAAa;UAC5B;AAIV,OAAK,cAAc,IAAI,YAAsC,gBAAgB;GAC3E,QAAQ;IACN,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,OAAO;IACjB;GACD,SAAS;GACT,UAAU;GACX,CAAC,CAAC;;CAGL,mBAA2B,GAAqB;AAC9C,MAAI,KAAK,SAAS,UAChB;AACF,IAAE,gBAAgB;AAClB,OAAK,OAAO,MAAM,MAAM,GAAG,EAAE,QAAQ;AACrC,OAAK,OAAO,MAAM,OAAO,GAAG,EAAE,QAAQ;AACtC,OAAK,OAAO,MAAM,WAAW;AAC5B,OAAK,OAAO,MAAc,iBAAiB;AAC5C,MAAI,KAAK,QAAQ,QACf,KAAI;AACD,QAAK,OAAe,aAAa;UAC5B;;;gBAMI,CACd,oBACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8DJ;;CAED,SAAS;EACP,MAAM,aAAa,KAAK,SAAS,cAAc,KAAK,YAAY,CAAC,KAAK;AACtE,SAAO,IAAI;;;iBAGE,KAAK,oBAAoB;uBACnB,KAAK,mBAAmB;;UAErC,aACE,IAAI,2CAA2C,KAAK,MAAM,aAC1D,KAAK;2CAC0B,KAAK,yBAAyB;;;;;kBAKvD,MAAa,EAAE,iBAAiB,CAAC;;0CAET,KAAK,kBAAkB;;;;;YAlU9D,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,YAAA,WAAA,QAAA,KAAA,EAAA;YAC1B,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,YAAA,WAAA,SAAA,KAAA,EAAA;YAC1B,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,YAAA,WAAA,YAAA,KAAA,EAAA;YAC9B,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,YAAA,WAAA,mBAAA,KAAA,EAAA;YAC9B,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,YAAA,WAAA,aAAA,KAAA,EAAA;YAE1B,OAAO,CAAA,EAAA,YAAA,WAAA,WAAA,KAAA,EAAA;YACP,OAAO,CAAA,EAAA,YAAA,WAAA,YAAA,KAAA,EAAA;YACP,OAAO,CAAA,EAAA,YAAA,WAAA,mBAAA,KAAA,EAAA;YAEP,MAAM,eAAe,CAAA,EAAA,YAAA,WAAA,eAAA,KAAA,EAAA;YACrB,MAAM,SAAS,CAAA,EAAA,YAAA,WAAA,UAAA,KAAA,EAAA;yCAbjB,cAAc,oBAAoB,CAAA,EAAA,YAAA;;;ACH5B,IAAA,WAAA,MAAM,iBAAiB,WAAW;;;iBACD;qBAC+B;eACjC;kBACI;kBACuB;sBAK/B;uBAGO;;CAEvC,uBAA6B;AAC3B,QAAM,sBAAsB;AAC5B,MAAI,KAAK,cACP,cAAa,KAAK,cAAc;;CAIpC,oBAAkC;EAChC,MAAM,WAAW,KAAK,OAAO,kBAAkB,IAAI,EAAE;AACrD,OAAK,eAAe,SAAS,SAAS;;CAGxC,oBAAkC;AAChC,MAAI,KAAK,YAAY,CAAC,KAAK,gBAAgB,CAAC,KAAK,eAC/C;AACF,MAAI,KAAK,cACP,cAAa,KAAK,cAAc;AAElC,OAAK,gBAAgB,OAAO,iBAAiB;AAC3C,QAAK,cAAc;KAClB,IAAI;;CAGT,oBAAkC;AAChC,MAAI,KAAK,eAAe;AACtB,gBAAa,KAAK,cAAc;AAChC,QAAK,gBAAgB;;AAEvB,OAAK,cAAc;;CAGrB,eAA6B;AAC3B,MAAI,CAAC,KAAK,gBAAgB,QACxB;AACF,MAAI;AACF,QAAK,eAAe,aAAa;WAC1B,KAAK;AACZ,WAAQ,KAAK,uBAAuB,IAAI;;;CAI5C,eAA6B;AAC3B,MAAI,CAAC,KAAK,gBAAgB,QACxB;AACF,MAAI;AACF,QAAK,eAAe,aAAa;WAC1B,KAAK;AACZ,WAAQ,KAAK,uBAAuB,IAAI;;;CAI5C,cAA4B;AAC1B,MAAI,KAAK,SACP;AAEF,OAAK,cAAc,IAAI,YAAmC,WAAW;GACnE,QAAQ;IAAE,SAAS,KAAK;IAAS,MAAM,KAAK;IAAa;GACzD,SAAS;GACT,UAAU;GACX,CAAC,CAAC;;CAGL,iBAAiC;AAC/B,MAAI,KAAK,MACP,QAAO,KAAK;AACd,MAAI,KAAK,YAAY,KAAK,QACxB,QAAO,KAAK,SAAS,IAAI,KAAK,QAAQ,EAAE,SAAS;AAEnD,SAAO;;CAGT,gBAAuC;AACrC,MAAI,KAAK,SACP,QAAO,KAAK;AACd,MAAI,KAAK,YAAY,KAAK,QACxB,QAAO,KAAK,SAAS,IAAI,KAAK,QAAQ,EAAE,QAAQ;AAElD,SAAO;;CAGT,WAAW,mBAA+C;AACxD,QAAM,WAAW,kBAAkB;EACnC,MAAM,eAAe,KAAK,eAAe;AACzC,MAAI,gBAAgB,CAAC,KAAK,SACxB,MAAK,aAAa,qBAAqB,GAAG;WACjC,CAAC,gBAAgB,CAAC,KAAK,SAChC,MAAK,gBAAgB,oBAAoB;;CAI7C,QAAQ,mBAA+C;AACrD,QAAM,QAAQ,kBAAkB;;CAGlC,eAAsC;AACpC,MAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,QACjC,QAAO;EAET,MAAM,WADY,KAAK,gBAAwB,eAAe,IAAI,EAAE,EAC3C,MAAM,MAAW,EAAE,cAAc,KAAK,QAAQ;AACvE,MAAI,CAAC,QACH,QAAO;EACT,MAAM,OAAO,MAAM,KAAK,QAAQ,aAAa,EAAE,GAAG,OAC/C;GAAE,MAAM;GAAK,OAAO;GAAK,KAAK;GAAK,MAAM;GAAK,EAAE,MAAM,EAAE;EAC3D,MAAM,MAAM,QAAQ,KAAK,WAAW,IAAI,QAAQ,IAAI,aAAa,GAAG,QAAQ;AAC5E,SAAO,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,GAAG;;;gBAGP,CAAC,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgE9C;;CAEF,SAAS;EACP,MAAM,WAAW,KAAK,cAAc;EACpC,MAAM,eAAe,KAAK,eAAe;AACzC,SAAO,IAAI;;sBAEO,KAAK,WAAW,aAAa,GAAG;iBACrC,KAAK,YAAY;sBACZ,KAAK,kBAAkB;sBACvB,KAAK,kBAAkB;oBACzB,KAAK,WAAW,KAAK,EAAE;;yBAElB,KAAK,eAAe,SAAS,QAAQ;yBACrC,KAAK,gBAAgB,QAAQ,gBAAgB,IAAI,MAAM;;kCAE9C,eAAe,IAAI,oBAAoB,aAAa,kBAAkB,KAAK;2CAClE,KAAK,gBAAgB,CAAC;UACvD,WAAW,IAAI,0BAA0B,SAAS,WAAW,KAAK;UAClE,KAAK,eAAe,IAAI,4EAA4E,KAAK;;0BAEzF,KAAK,kBAAkB;;;;YA9M9C,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,SAAA,WAAA,WAAA,KAAA,EAAA;YAC1B,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAgB,CAAC,CAAA,EAAA,SAAA,WAAA,eAAA,KAAA,EAAA;YACrD,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,SAAA,WAAA,SAAA,KAAA,EAAA;YAC1B,SAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,SAAA,WAAA,YAAA,KAAA,EAAA;YAC3B,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAa,CAAC,CAAA,EAAA,SAAA,WAAA,YAAA,KAAA,EAAA;YAClD,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,SAAA,WAAA,YAAA,KAAA,EAAA;YAC9B,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,SAAA,WAAA,mBAAA,KAAA,EAAA;YAC9B,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,SAAA,WAAA,kBAAA,KAAA,EAAA;YAE9B,OAAO,CAAA,EAAA,SAAA,WAAA,gBAAA,KAAA,EAAA;YACP,MAAM,OAAO,CAAA,EAAA,SAAA,WAAA,SAAA,KAAA,EAAA;uBAZf,cAAc,iBAAiB,CAAA,EAAA,SAAA"}
|
package/dist/menu.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { i as MenuContainer, n as MenuTrigger, t as MenuItem } from "./menu-item-Cikacp4F.js";
|
|
2
|
+
import { a as menuFromTree, c as MenuSubTrigger, d as MenuCheckItem, f as MenuBar, i as MenuFromTreeOptions, l as MenuHeader, n as MenuRadioGroup, o as menuFromTreeToElements, r as MenuRadioItem, s as MenuSeparator, u as MenuCommandController } from "./index-CQxanqXF.js";
|
|
3
|
+
export { MenuBar, MenuCheckItem, MenuCommandController, MenuContainer, MenuFromTreeOptions, MenuHeader, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubTrigger, MenuTrigger, menuFromTree, menuFromTreeToElements };
|
package/dist/menu.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { n as MenuTrigger, r as MenuContainer, t as MenuItem } from "./menu-item-DEzL_Yjk.js";
|
|
2
|
+
import { a as menuFromTreeToElements, c as MenuHeader, d as MenuBar, i as menuFromTree, l as MenuCommandController, n as MenuRadioGroup, o as MenuSeparator, r as MenuRadioItem, s as MenuSubTrigger, u as MenuCheckItem } from "./menu-BV6UFx_z.js";
|
|
3
|
+
export { MenuBar, MenuCheckItem, MenuCommandController, MenuContainer, MenuHeader, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubTrigger, MenuTrigger, menuFromTree, menuFromTreeToElements };
|
package/dist/miller.d.ts
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { n as TraversableTree, t as TickledController } from "./tickled-controller-Cq1Va0rR.js";
|
|
2
|
+
import { C as TreeNode, S as TreeItem, a as TreeComponent, b as TreeFilterPredicate, c as TreeExpandEvent, d as TreeSearchHost, f as TreeSelectDetail, g as TreeDataModel, h as TreeTickleEvent, i as TreeCollapseEvent, l as TreeItemClickDetail, m as TreeTickleDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeSelectEvent, r as TreeCollapseDetail, s as TreeExpandDetail, t as TreeActivateDetail, u as TreeItemClickEvent, v as LoadChildrenCallback, w as TreeSelectionFilter, y as TreeExclusivity } from "./tree-component-CQpoPo4s.js";
|
|
3
|
+
import * as _$lit from "lit";
|
|
4
|
+
import { LitElement, PropertyValues, TemplateResult, nothing } from "lit";
|
|
5
|
+
|
|
6
|
+
//#region src/miller/types.d.ts
|
|
7
|
+
type MillerSelectionMode = `implicit` | `standard` | `manual` | `checked` | `vscode`;
|
|
8
|
+
type MillerConfig = {
|
|
9
|
+
columnWidths: Record<number, number>;
|
|
10
|
+
};
|
|
11
|
+
/** Detail for the `header-click` event fired when a column header is clicked. */
|
|
12
|
+
type MillerHeaderClickDetail = {
|
|
13
|
+
/** Zero-based column index whose header was clicked. */depth: number; /** The header text (label of the column's parent node). */
|
|
14
|
+
label: string;
|
|
15
|
+
/**
|
|
16
|
+
* Ancestry chain from the root node down to (and including) the node
|
|
17
|
+
* whose label is shown in this header.
|
|
18
|
+
* - depth 0 → [root]
|
|
19
|
+
* - depth 1 → [root, selectedAtDepth0]
|
|
20
|
+
* - depth d → [root, sel[0], …, sel[d-1]]
|
|
21
|
+
*/
|
|
22
|
+
path: TreeNode[];
|
|
23
|
+
};
|
|
24
|
+
/** Detail for the `item-dblclick` event. */
|
|
25
|
+
type MillerItemDblClickDetail = {
|
|
26
|
+
node: TreeNode;
|
|
27
|
+
depth: number;
|
|
28
|
+
};
|
|
29
|
+
/** Detail for the `item-rightclick` event. */
|
|
30
|
+
type MillerItemRightClickDetail = {
|
|
31
|
+
node: TreeNode;
|
|
32
|
+
depth: number;
|
|
33
|
+
mouseEvent: MouseEvent;
|
|
34
|
+
};
|
|
35
|
+
/** Detail for the `header-rightclick` event. */
|
|
36
|
+
type MillerHeaderRightClickDetail = {
|
|
37
|
+
depth: number;
|
|
38
|
+
label: string;
|
|
39
|
+
path: TreeNode[];
|
|
40
|
+
mouseEvent: MouseEvent;
|
|
41
|
+
};
|
|
42
|
+
type MillerHeaderClickEvent = CustomEvent<MillerHeaderClickDetail>;
|
|
43
|
+
type MillerItemDblClickEvent = CustomEvent<MillerItemDblClickDetail>;
|
|
44
|
+
type MillerItemRightClickEvent = CustomEvent<MillerItemRightClickDetail>;
|
|
45
|
+
type MillerHeaderRightClickEvent = CustomEvent<MillerHeaderRightClickDetail>;
|
|
46
|
+
/**
|
|
47
|
+
* A snapshot of all display states for a single item in the miller columns.
|
|
48
|
+
*
|
|
49
|
+
* - `selected`: the item is part of the active selection.
|
|
50
|
+
* - `open`: the item is an ancestor of the current deepest column (it is on
|
|
51
|
+
* the currently open path, regardless of whether it is also selected).
|
|
52
|
+
* - `focused`: the keyboard cursor is currently on this item.
|
|
53
|
+
* - `isLeaf`: the item has no children and cannot be expanded.
|
|
54
|
+
*/
|
|
55
|
+
type MillerItemState = {
|
|
56
|
+
selected: boolean;
|
|
57
|
+
open: boolean;
|
|
58
|
+
focused: boolean;
|
|
59
|
+
isLeaf: boolean;
|
|
60
|
+
};
|
|
61
|
+
//#endregion
|
|
62
|
+
//#region src/miller/miller-base.d.ts
|
|
63
|
+
/**
|
|
64
|
+
* Base class for Miller column components. Handles column lifecycle,
|
|
65
|
+
* column resizing, keyboard navigation, and selection modes.
|
|
66
|
+
*
|
|
67
|
+
* Subclasses must override `renderColumnContent`.
|
|
68
|
+
*
|
|
69
|
+
* ## Interaction modes (`interactionMode`)
|
|
70
|
+
*
|
|
71
|
+
* Controls how clicks map to selection changes. Default: `'standard'`.
|
|
72
|
+
*
|
|
73
|
+
* - `implicit`: Selection follows the cursor path (navigation mode).
|
|
74
|
+
* - `standard`: Single click selects; Shift+click range-selects within a column;
|
|
75
|
+
* Cmd/Ctrl+click toggles individual items.
|
|
76
|
+
* - `manual`: Component never modifies selection. Use `selectedKeys` / `setSelected`
|
|
77
|
+
* / `clearSelection` to drive state externally.
|
|
78
|
+
* - `checked`: Checkboxes on every item (rendered by subclass via `_isChecked` /
|
|
79
|
+
* `_handleCheckboxClick`). Clicking the item navigates/expands; clicking the
|
|
80
|
+
* checkbox toggles selection of the node and all loaded descendants.
|
|
81
|
+
*
|
|
82
|
+
* ## Events
|
|
83
|
+
* - `expand`: FYI event fired after a column opens. Detail: `{ node, depth }`
|
|
84
|
+
* - `collapse`: FYI event fired when a column closes. Detail: `{ node, depth }`
|
|
85
|
+
* - `header-click`: fired when a column header is clicked (requires `headers` attr).
|
|
86
|
+
* Detail: `{ depth, label, path: MillerNode[] }`
|
|
87
|
+
* - `activate`: fired when Enter is pressed on an item. Detail: `{ node, depth }`
|
|
88
|
+
* - `select`: fired when the selection set changes. Detail: `{ selected, previous }`
|
|
89
|
+
* - `item-click`: fired on any item click. Detail: `{ node, depth }`
|
|
90
|
+
* - `tickle`: fired when an item is hovered or keyboard cursor moves to it. Detail: `{ node, depth }`
|
|
91
|
+
*
|
|
92
|
+
* ## CSS variables
|
|
93
|
+
* - `--column-bg`: var(--surface-3)
|
|
94
|
+
* - `--column-header-bg`: var(--surface-2)
|
|
95
|
+
* - `--column-header-text`: var(--surface-muted-text)
|
|
96
|
+
* - `--column-separator`: var(--surface-5)
|
|
97
|
+
* - `--column-resize-handle`: var(--surface-5)
|
|
98
|
+
* - `--column-resize-handle-hover`: var(--accent)
|
|
99
|
+
* - `--column-resize-width`: 4px
|
|
100
|
+
* - `--item-hover-bg`: var(--item-bg-tickled)
|
|
101
|
+
* - `--item-selected-bg`: var(--item-bg-selected)
|
|
102
|
+
* - `--item-selected-text`: var(--item-text-selected)
|
|
103
|
+
*/
|
|
104
|
+
declare class MillerBaseElement extends LitElement implements TreeComponent, TreeSearchHost {
|
|
105
|
+
#private;
|
|
106
|
+
root: TreeNode | undefined;
|
|
107
|
+
model: TreeDataModel | undefined;
|
|
108
|
+
headers: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Controls the column-level interaction pattern (how clicks map to column changes).
|
|
111
|
+
* This is distinct from `selectionFilter` (which restricts which node kinds are selectable).
|
|
112
|
+
* Default: `'standard'`.
|
|
113
|
+
*/
|
|
114
|
+
interactionMode: MillerSelectionMode;
|
|
115
|
+
selectionFilter: TreeSelectionFilter;
|
|
116
|
+
exclusivity: TreeExclusivity;
|
|
117
|
+
/**
|
|
118
|
+
* Callback to load children for a lazy node.
|
|
119
|
+
* Superseded by `model` when both are set.
|
|
120
|
+
* If not set and `model` is not set, clicking a lazy node opens an empty column.
|
|
121
|
+
*/
|
|
122
|
+
loadChildren: LoadChildrenCallback | undefined;
|
|
123
|
+
filterPredicate: TreeFilterPredicate | undefined;
|
|
124
|
+
protected _columns: TreeNode[][];
|
|
125
|
+
protected _loadingDepth: number | undefined;
|
|
126
|
+
protected _selectedByDepth: Map<number, TreeNode>;
|
|
127
|
+
protected _selectedKeys: Set<string>;
|
|
128
|
+
protected _selectedNodes: Set<TreeNode>;
|
|
129
|
+
tickled: TickledController<string>;
|
|
130
|
+
updated(changedProps: PropertyValues): void;
|
|
131
|
+
disconnectedCallback(): void;
|
|
132
|
+
getConfig(): MillerConfig;
|
|
133
|
+
setConfig(config: MillerConfig): void;
|
|
134
|
+
/** Read current selection as an immutable set of item keys. */
|
|
135
|
+
get selectedKeys(): ReadonlySet<string>;
|
|
136
|
+
/** Replace entire selection and trigger a re-render. */
|
|
137
|
+
set selectedKeys(keys: Iterable<string>);
|
|
138
|
+
/** The most recently selected node. */
|
|
139
|
+
get selectedNode(): TreeNode | undefined;
|
|
140
|
+
set selectedNode(node: TreeNode | undefined);
|
|
141
|
+
/** Full selection set (implements TreeComponent interface). */
|
|
142
|
+
get selectedNodes(): ReadonlySet<TreeNode>;
|
|
143
|
+
/** Add `node` to the selection (respects selectionFilter). Dispatches `select` event. */
|
|
144
|
+
select(node: TreeNode): void;
|
|
145
|
+
/** Remove `node` from the selection. Dispatches `select` event. */
|
|
146
|
+
deselect(node: TreeNode): void;
|
|
147
|
+
/**
|
|
148
|
+
* Clear all selection and trigger a re-render.
|
|
149
|
+
*/
|
|
150
|
+
clearSelection(): void;
|
|
151
|
+
/**
|
|
152
|
+
* Select or deselect a single node by key.
|
|
153
|
+
* In `checked` interactionMode this also recursively selects/deselects all loaded descendants.
|
|
154
|
+
*/
|
|
155
|
+
setSelected(node: TreeNode, selected: boolean): void;
|
|
156
|
+
/**
|
|
157
|
+
* Return all MillerNodes whose key is in `_selectedKeys`, searching only
|
|
158
|
+
* the currently visible columns.
|
|
159
|
+
*/
|
|
160
|
+
getSelected(): TreeNode[];
|
|
161
|
+
/**
|
|
162
|
+
* Programmatically navigate to a node by key path.
|
|
163
|
+
*/
|
|
164
|
+
navigateTo(keys: readonly string[]): boolean;
|
|
165
|
+
/**
|
|
166
|
+
* Programmatically navigate to the first node (breadth-first) matching a predicate.
|
|
167
|
+
*/
|
|
168
|
+
navigateToNode(predicate: (node: TreeNode) => boolean): boolean;
|
|
169
|
+
getNodes(): ReadonlyArray<{
|
|
170
|
+
node: TreeNode;
|
|
171
|
+
depth: number;
|
|
172
|
+
}>;
|
|
173
|
+
protected renderColumnContent(nodes: TreeNode[], depth: number): TemplateResult | typeof nothing;
|
|
174
|
+
protected _handleItemClick(node: TreeNode, depth: number, event?: MouseEvent): void;
|
|
175
|
+
/**
|
|
176
|
+
* Called by subclasses (in `checked` interactionMode) when a checkbox is clicked.
|
|
177
|
+
*/
|
|
178
|
+
protected _handleCheckboxClick(event: MouseEvent, node: TreeNode, _depth: number): void;
|
|
179
|
+
/**
|
|
180
|
+
* Called by subclasses when an item is double-clicked.
|
|
181
|
+
*/
|
|
182
|
+
protected _handleItemDblClick(node: TreeNode, depth: number, _event: MouseEvent): void;
|
|
183
|
+
/**
|
|
184
|
+
* Called by subclasses when an item is right-clicked.
|
|
185
|
+
*/
|
|
186
|
+
protected _handleItemRightClick(node: TreeNode, depth: number, event: MouseEvent): void;
|
|
187
|
+
/**
|
|
188
|
+
* Called by subclasses when a column header is right-clicked.
|
|
189
|
+
*/
|
|
190
|
+
protected _handleHeaderRightClick(event: MouseEvent, depth: number): void;
|
|
191
|
+
protected _isSelected(node: TreeNode, depth: number): boolean;
|
|
192
|
+
protected _isOpen(node: TreeNode, depth: number): boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Return the display state for an item identified by key at a given depth.
|
|
195
|
+
*/
|
|
196
|
+
getItemState(key: string, depth: number): MillerItemState | undefined;
|
|
197
|
+
/**
|
|
198
|
+
* Override to provide a custom loading indicator.
|
|
199
|
+
*/
|
|
200
|
+
protected renderLoadingIndicator(): TemplateResult | typeof nothing;
|
|
201
|
+
protected render(): TemplateResult<1>;
|
|
202
|
+
protected _getFocusedIndex(depth: number): number;
|
|
203
|
+
protected _isFocused(node: TreeNode, depth: number): boolean;
|
|
204
|
+
/**
|
|
205
|
+
* Called by subclasses when pointer enters an item.
|
|
206
|
+
* Fires tickle event and switches to mouse mode.
|
|
207
|
+
*/
|
|
208
|
+
protected _handleItemPointerEnter(node: TreeNode, depth: number): void;
|
|
209
|
+
/**
|
|
210
|
+
* Called by subclasses when pointer leaves the column container.
|
|
211
|
+
*/
|
|
212
|
+
protected _handleColumnPointerLeave(): void;
|
|
213
|
+
static styles: _$lit.CSSResult[];
|
|
214
|
+
}
|
|
215
|
+
declare global {
|
|
216
|
+
interface HTMLElementTagNameMap {
|
|
217
|
+
'ixfx-miller-base': MillerBaseElement;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
interface MillerBaseElementEventMap extends TreeComponentEventMap {
|
|
221
|
+
'item-click': TreeItemClickEvent;
|
|
222
|
+
'expand': TreeExpandEvent;
|
|
223
|
+
'collapse': TreeCollapseEvent;
|
|
224
|
+
'select': TreeSelectEvent;
|
|
225
|
+
'tickle': TreeTickleEvent;
|
|
226
|
+
'activate': TreeActivateEvent;
|
|
227
|
+
'item-dblclick': CustomEvent<MillerItemDblClickDetail>;
|
|
228
|
+
'item-rightclick': CustomEvent<MillerItemRightClickDetail>;
|
|
229
|
+
'header-click': CustomEvent<MillerHeaderClickDetail>;
|
|
230
|
+
'header-rightclick': CustomEvent<MillerHeaderRightClickDetail>;
|
|
231
|
+
}
|
|
232
|
+
interface MillerBaseElement {
|
|
233
|
+
addEventListener<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
|
|
234
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
235
|
+
removeEventListener<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | EventListenerOptions): void;
|
|
236
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
237
|
+
}
|
|
238
|
+
//#endregion
|
|
239
|
+
//#region src/miller/miller-list.d.ts
|
|
240
|
+
/**
|
|
241
|
+
* Miller columns with a vertical list layout — items stack in rows like macOS Finder.
|
|
242
|
+
*
|
|
243
|
+
* Usage:
|
|
244
|
+
* ```html
|
|
245
|
+
* <ixfx-miller-list id="miller"></ixfx-miller-list>
|
|
246
|
+
* <script>
|
|
247
|
+
* const el = document.getElementById('miller');
|
|
248
|
+
* el.root = { item: { key: 'root', label: 'Root' }, children: [...] };
|
|
249
|
+
* el.addEventListener('expand', ({ detail }) => {
|
|
250
|
+
* detail.node.children = fetchChildren(detail.node.item.key);
|
|
251
|
+
* el.requestUpdate();
|
|
252
|
+
* });
|
|
253
|
+
* </script>
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
declare class MillerListElement extends MillerBaseElement {
|
|
257
|
+
#private;
|
|
258
|
+
protected renderColumnContent(nodes: TreeNode[], depth: number): TemplateResult;
|
|
259
|
+
static styles: _$lit.CSSResult[];
|
|
260
|
+
}
|
|
261
|
+
declare global {
|
|
262
|
+
interface HTMLElementTagNameMap {
|
|
263
|
+
'ixfx-miller-list': MillerListElement;
|
|
264
|
+
}
|
|
265
|
+
} //# sourceMappingURL=miller-list.d.ts.map
|
|
266
|
+
//#endregion
|
|
267
|
+
//#region src/miller/miller-tree-controller.d.ts
|
|
268
|
+
type MillerTreeControllerOptions<T> = {
|
|
269
|
+
/**
|
|
270
|
+
* Convert a tree node's value to a `MillerItem`.
|
|
271
|
+
* You must supply at minimum `key` and `label`.
|
|
272
|
+
* If `isLeaf` is omitted the controller infers it from whether the
|
|
273
|
+
* `TraversableTree` node has any children.
|
|
274
|
+
*/
|
|
275
|
+
valueToItem: (value: T, node: TraversableTree<T>) => TreeItem;
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* Bridges an `ixfx` `TraversableTree<T>` with an `ixfx-miller-*` component.
|
|
279
|
+
*
|
|
280
|
+
* Usage:
|
|
281
|
+
* ```ts
|
|
282
|
+
* import { Trees } from '@ixfx/collections';
|
|
283
|
+
* import { MillerTreeController } from 'ixfx-components/miller';
|
|
284
|
+
*
|
|
285
|
+
* const root = Trees.Mutable.createNode({ key: 'root', label: 'Root' });
|
|
286
|
+
* Trees.Mutable.addValue({ key: 'a', label: 'Alpha' }, root);
|
|
287
|
+
*
|
|
288
|
+
* const ctrl = new MillerTreeController(
|
|
289
|
+
* Trees.Mutable.asDynamicTraversable(root),
|
|
290
|
+
* document.querySelector('ixfx-miller-list'),
|
|
291
|
+
* { valueToItem: v => ({ key: v.key, label: v.label }) }
|
|
292
|
+
* );
|
|
293
|
+
* ctrl.connect();
|
|
294
|
+
* ```
|
|
295
|
+
*
|
|
296
|
+
* Children are populated lazily: the controller provides a `loadChildren`
|
|
297
|
+
* callback that synchronously reads from the underlying tree.
|
|
298
|
+
*
|
|
299
|
+
* Call `disconnect()` to remove all event listeners and release resources.
|
|
300
|
+
*/
|
|
301
|
+
declare class MillerTreeController<T> {
|
|
302
|
+
#private;
|
|
303
|
+
constructor(root: TraversableTree<T>, element: MillerBaseElement, options: MillerTreeControllerOptions<T>);
|
|
304
|
+
/**
|
|
305
|
+
* Wire up the controller: sets `element.root` and provides `loadChildren` callback.
|
|
306
|
+
* Safe to call again after `disconnect()`.
|
|
307
|
+
*/
|
|
308
|
+
connect(): void;
|
|
309
|
+
/** Remove all event listeners and release internal state. */
|
|
310
|
+
disconnect(): void;
|
|
311
|
+
/**
|
|
312
|
+
* Navigate the component to the first node (depth-first) in the ixfx tree
|
|
313
|
+
* whose value satisfies `predicate`.
|
|
314
|
+
*
|
|
315
|
+
* Any ancestor `MillerNode`s with unloaded children are populated
|
|
316
|
+
* synchronously before calling `element.navigateTo()`.
|
|
317
|
+
*
|
|
318
|
+
* Returns `false` if no matching node is found.
|
|
319
|
+
*/
|
|
320
|
+
navigateToValue(predicate: (value: T) => boolean): boolean;
|
|
321
|
+
}
|
|
322
|
+
//#endregion
|
|
323
|
+
export { type TreeActivateDetail as MillerActivateDetail, type TreeActivateEvent as MillerActivateEvent, MillerBaseElement, MillerBaseElementEventMap, type TreeCollapseDetail as MillerCollapseDetail, type TreeCollapseEvent as MillerCollapseEvent, MillerConfig, type TreeExpandDetail as MillerExpandDetail, type TreeExpandEvent as MillerExpandEvent, MillerHeaderClickDetail, MillerHeaderClickEvent, MillerHeaderRightClickDetail, MillerHeaderRightClickEvent, type TreeItem as MillerItem, type TreeItemClickDetail as MillerItemClickDetail, type TreeItemClickEvent as MillerItemClickEvent, MillerItemDblClickDetail, MillerItemDblClickEvent, MillerItemRightClickDetail, MillerItemRightClickEvent, MillerItemState, MillerListElement, type TreeNode as MillerNode, type TreeSelectDetail as MillerSelectDetail, type TreeSelectEvent as MillerSelectEvent, MillerSelectionMode, type TreeTickleDetail as MillerTickleDetail, type TreeTickleEvent as MillerTickleEvent, MillerTreeController, MillerTreeControllerOptions };
|
|
324
|
+
//# sourceMappingURL=miller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miller.d.ts","names":[],"sources":["../src/miller/types.ts","../src/miller/miller-base.ts","../src/miller/miller-list.ts","../src/miller/miller-tree-controller.ts"],"mappings":"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"}
|