@ixfx/components 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/bundle/chunk-pbuEa-1d.js +13 -0
- package/bundle/index.d.ts +4702 -569
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +34929 -2800
- package/bundle/index.js.map +1 -1
- package/bundle/style.css +133 -0
- package/dist/ac-text/ac-text.d.ts +99 -0
- package/dist/ac-text/ac-text.d.ts.map +1 -0
- package/dist/ac-text/ac-text.js +571 -0
- package/dist/ac-text/ac-text.js.map +1 -0
- package/dist/button/button-styles.d.ts +2 -0
- package/dist/button/button-styles.d.ts.map +1 -0
- package/dist/button/button-styles.js +75 -0
- package/dist/button/button-styles.js.map +1 -0
- package/dist/button/button.d.ts +16 -0
- package/dist/button/button.d.ts.map +1 -0
- package/dist/button/button.js +58 -0
- package/dist/button/button.js.map +1 -0
- package/dist/button/radio-group.d.ts +44 -0
- package/dist/button/radio-group.d.ts.map +1 -0
- package/dist/button/radio-group.js +385 -0
- package/dist/button/radio-group.js.map +1 -0
- package/dist/button/split-button.d.ts +59 -0
- package/dist/button/split-button.d.ts.map +1 -0
- package/dist/button/split-button.js +480 -0
- package/dist/button/split-button.js.map +1 -0
- package/dist/button/types.d.ts +18 -0
- package/dist/button/types.d.ts.map +1 -0
- package/dist/button/types.js +2 -0
- package/dist/button/types.js.map +1 -0
- package/dist/checkbox.d.ts +64 -0
- package/dist/checkbox.d.ts.map +1 -0
- package/dist/checkbox.js +265 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/colour-picker/colour-picker-popup.d.ts +102 -0
- package/dist/colour-picker/colour-picker-popup.d.ts.map +1 -0
- package/dist/colour-picker/colour-picker-popup.js +399 -0
- package/dist/colour-picker/colour-picker-popup.js.map +1 -0
- package/dist/colour-picker/colour-picker.d.ts +100 -0
- package/dist/colour-picker/colour-picker.d.ts.map +1 -0
- package/dist/colour-picker/colour-picker.js +567 -0
- package/dist/colour-picker/colour-picker.js.map +1 -0
- package/dist/colour-picker/index.d.ts +4 -0
- package/dist/colour-picker/index.d.ts.map +1 -0
- package/dist/colour-picker/index.js +3 -0
- package/dist/colour-picker/index.js.map +1 -0
- package/dist/colour-picker/styles.d.ts +2 -0
- package/dist/colour-picker/styles.d.ts.map +1 -0
- package/dist/colour-picker/styles.js +139 -0
- package/dist/colour-picker/styles.js.map +1 -0
- package/dist/colour-picker/types.d.ts +33 -0
- package/dist/colour-picker/types.d.ts.map +1 -0
- package/dist/colour-picker/types.js +2 -0
- package/dist/colour-picker/types.js.map +1 -0
- package/dist/colour-picker/util.d.ts +15 -0
- package/dist/colour-picker/util.d.ts.map +1 -0
- package/dist/colour-picker/util.js +35 -0
- package/dist/colour-picker/util.js.map +1 -0
- package/dist/common/searchable.d.ts +9 -0
- package/dist/common/searchable.d.ts.map +1 -0
- package/dist/common/searchable.js +9 -0
- package/dist/common/searchable.js.map +1 -0
- package/dist/common/tree-component.d.ts +172 -0
- package/dist/common/tree-component.d.ts.map +1 -0
- package/dist/common/tree-component.js +8 -0
- package/dist/common/tree-component.js.map +1 -0
- package/dist/common/tree-data-model.d.ts +100 -0
- package/dist/common/tree-data-model.d.ts.map +1 -0
- package/dist/common/tree-data-model.js +207 -0
- package/dist/common/tree-data-model.js.map +1 -0
- package/dist/common/tree-item.d.ts +7 -0
- package/dist/common/tree-item.d.ts.map +1 -0
- package/dist/common/tree-item.js +2 -0
- package/dist/common/tree-item.js.map +1 -0
- package/dist/common/types.d.ts +69 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/common/types.js +6 -0
- package/dist/common/types.js.map +1 -0
- package/dist/crumbs/crumb-navigation.d.ts +96 -0
- package/dist/crumbs/crumb-navigation.d.ts.map +1 -0
- package/dist/crumbs/crumb-navigation.js +911 -0
- package/dist/crumbs/crumb-navigation.js.map +1 -0
- package/dist/crumbs/crumb-path-controller.d.ts +18 -0
- package/dist/crumbs/crumb-path-controller.d.ts.map +1 -0
- package/dist/crumbs/crumb-path-controller.js +81 -0
- package/dist/crumbs/crumb-path-controller.js.map +1 -0
- package/dist/crumbs/crumb-path.d.ts +65 -0
- package/dist/crumbs/crumb-path.d.ts.map +1 -0
- package/dist/crumbs/crumb-path.js +691 -0
- package/dist/crumbs/crumb-path.js.map +1 -0
- package/dist/data-display.d.ts +10 -3
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +45 -28
- package/dist/data-display.js.map +1 -1
- package/dist/editable-label/editable-label.d.ts +98 -0
- package/dist/editable-label/editable-label.d.ts.map +1 -0
- package/dist/editable-label/editable-label.js +348 -0
- package/dist/editable-label/editable-label.js.map +1 -0
- package/dist/editable-label/editable-number.d.ts +96 -0
- package/dist/editable-label/editable-number.d.ts.map +1 -0
- package/dist/editable-label/editable-number.js +702 -0
- package/dist/editable-label/editable-number.js.map +1 -0
- package/dist/hex/colour.d.ts +6 -0
- package/dist/hex/colour.d.ts.map +1 -0
- package/dist/hex/colour.js +33 -0
- package/dist/hex/colour.js.map +1 -0
- package/dist/hex/data.d.ts +18 -0
- package/dist/hex/data.d.ts.map +1 -0
- package/dist/hex/data.js +61 -0
- package/dist/hex/data.js.map +1 -0
- package/dist/hex/diff.d.ts +14 -0
- package/dist/hex/diff.d.ts.map +1 -0
- package/dist/hex/diff.js +31 -0
- package/dist/hex/diff.js.map +1 -0
- package/dist/hex/hex-editor.d.ts +101 -0
- package/dist/hex/hex-editor.d.ts.map +1 -0
- package/dist/hex/hex-editor.js +894 -0
- package/dist/hex/hex-editor.js.map +1 -0
- package/dist/hex/selection.d.ts +11 -0
- package/dist/hex/selection.d.ts.map +1 -0
- package/dist/hex/selection.js +218 -0
- package/dist/hex/selection.js.map +1 -0
- package/dist/hex/types.d.ts +34 -0
- package/dist/hex/types.d.ts.map +1 -0
- package/dist/hex/types.js +4 -0
- package/dist/hex/types.js.map +1 -0
- package/dist/icons/defaults.d.ts +27 -0
- package/dist/icons/defaults.d.ts.map +1 -0
- package/dist/icons/defaults.js +34 -0
- package/dist/icons/defaults.js.map +1 -0
- package/dist/icons/icon.d.ts +31 -0
- package/dist/icons/icon.d.ts.map +1 -0
- package/dist/icons/icon.js +125 -0
- package/dist/icons/icon.js.map +1 -0
- package/dist/icons/index.d.ts +5 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +6 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/registry.d.ts +11 -0
- package/dist/icons/registry.d.ts.map +1 -0
- package/dist/icons/registry.js +17 -0
- package/dist/icons/registry.js.map +1 -0
- package/dist/incr-search/ac-adapter.d.ts +18 -0
- package/dist/incr-search/ac-adapter.d.ts.map +1 -0
- package/dist/incr-search/ac-adapter.js +29 -0
- package/dist/incr-search/ac-adapter.js.map +1 -0
- package/dist/incr-search/controller-miller.d.ts +9 -0
- package/dist/incr-search/controller-miller.d.ts.map +1 -0
- package/dist/incr-search/controller-miller.js +8 -0
- package/dist/incr-search/controller-miller.js.map +1 -0
- package/dist/incr-search/controller-tree.d.ts +55 -0
- package/dist/incr-search/controller-tree.d.ts.map +1 -0
- package/dist/incr-search/controller-tree.js +106 -0
- package/dist/incr-search/controller-tree.js.map +1 -0
- package/dist/incr-search/element-search.d.ts +15 -0
- package/dist/incr-search/element-search.d.ts.map +1 -0
- package/dist/incr-search/element-search.js +82 -0
- package/dist/incr-search/element-search.js.map +1 -0
- package/dist/incr-search/fuzzy.d.ts +3 -0
- package/dist/incr-search/fuzzy.d.ts.map +1 -0
- package/dist/incr-search/fuzzy.js +37 -0
- package/dist/incr-search/fuzzy.js.map +1 -0
- package/dist/incr-search/highlight.d.ts +5 -0
- package/dist/incr-search/highlight.d.ts.map +1 -0
- package/dist/incr-search/highlight.js +54 -0
- package/dist/incr-search/highlight.js.map +1 -0
- package/dist/incr-search/incr-search.d.ts +3 -0
- package/dist/incr-search/incr-search.d.ts.map +1 -0
- package/dist/incr-search/incr-search.js +73 -0
- package/dist/incr-search/incr-search.js.map +1 -0
- package/dist/incr-search/index.d.ts +12 -0
- package/dist/incr-search/index.d.ts.map +1 -0
- package/dist/incr-search/index.js +8 -0
- package/dist/incr-search/index.js.map +1 -0
- package/dist/incr-search/types.d.ts +59 -0
- package/dist/incr-search/types.d.ts.map +1 -0
- package/dist/incr-search/types.js +2 -0
- package/dist/incr-search/types.js.map +1 -0
- package/dist/index.d.ts +49 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -10
- package/dist/index.js.map +1 -1
- package/dist/interaction/index.d.ts +10 -0
- package/dist/interaction/index.d.ts.map +1 -0
- package/dist/interaction/index.js +10 -0
- package/dist/interaction/index.js.map +1 -0
- package/dist/interaction/tickled-controller.d.ts +186 -0
- package/dist/interaction/tickled-controller.d.ts.map +1 -0
- package/dist/interaction/tickled-controller.js +256 -0
- package/dist/interaction/tickled-controller.js.map +1 -0
- package/dist/interaction/tickled-styles.d.ts +53 -0
- package/dist/interaction/tickled-styles.d.ts.map +1 -0
- package/dist/interaction/tickled-styles.js +106 -0
- package/dist/interaction/tickled-styles.js.map +1 -0
- package/dist/interaction/tree-keyboard-controller.d.ts +30 -0
- package/dist/interaction/tree-keyboard-controller.d.ts.map +1 -0
- package/dist/interaction/tree-keyboard-controller.js +105 -0
- package/dist/interaction/tree-keyboard-controller.js.map +1 -0
- package/dist/keyboard.d.ts +16 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +22 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/labelled-radial-input/index.d.ts +2 -0
- package/dist/labelled-radial-input/index.d.ts.map +1 -0
- package/dist/labelled-radial-input/index.js +2 -0
- package/dist/labelled-radial-input/index.js.map +1 -0
- package/dist/labelled-radial-input/labelled-radial-input.d.ts +77 -0
- package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +1 -0
- package/dist/labelled-radial-input/labelled-radial-input.js +214 -0
- package/dist/labelled-radial-input/labelled-radial-input.js.map +1 -0
- package/dist/labelled-range-input/index.d.ts +2 -0
- package/dist/labelled-range-input/index.d.ts.map +1 -0
- package/dist/labelled-range-input/index.js +2 -0
- package/dist/labelled-range-input/index.js.map +1 -0
- package/dist/labelled-range-input/labelled-range-input.d.ts +80 -0
- package/dist/labelled-range-input/labelled-range-input.d.ts.map +1 -0
- package/dist/labelled-range-input/labelled-range-input.js +137 -0
- package/dist/labelled-range-input/labelled-range-input.js.map +1 -0
- package/dist/led.d.ts +20 -0
- package/dist/led.d.ts.map +1 -0
- package/dist/led.js +100 -0
- package/dist/led.js.map +1 -0
- package/dist/menu/index.d.ts +14 -0
- package/dist/menu/index.d.ts.map +1 -0
- package/dist/menu/index.js +13 -0
- package/dist/menu/index.js.map +1 -0
- package/dist/menu/menu-bar.d.ts +23 -0
- package/dist/menu/menu-bar.d.ts.map +1 -0
- package/dist/menu/menu-bar.js +110 -0
- package/dist/menu/menu-bar.js.map +1 -0
- package/dist/menu/menu-check-item.d.ts +33 -0
- package/dist/menu/menu-check-item.d.ts.map +1 -0
- package/dist/menu/menu-check-item.js +175 -0
- package/dist/menu/menu-check-item.js.map +1 -0
- package/dist/menu/menu-command-controller.d.ts +14 -0
- package/dist/menu/menu-command-controller.d.ts.map +1 -0
- package/dist/menu/menu-command-controller.js +22 -0
- package/dist/menu/menu-command-controller.js.map +1 -0
- package/dist/menu/menu-container.d.ts +36 -0
- package/dist/menu/menu-container.d.ts.map +1 -0
- package/dist/menu/menu-container.js +351 -0
- package/dist/menu/menu-container.js.map +1 -0
- package/dist/menu/menu-from-tree.d.ts +17 -0
- package/dist/menu/menu-from-tree.d.ts.map +1 -0
- package/dist/menu/menu-from-tree.js +103 -0
- package/dist/menu/menu-from-tree.js.map +1 -0
- package/dist/menu/menu-header.d.ts +12 -0
- package/dist/menu/menu-header.d.ts.map +1 -0
- package/dist/menu/menu-header.js +36 -0
- package/dist/menu/menu-header.js.map +1 -0
- package/dist/menu/menu-item.d.ts +41 -0
- package/dist/menu/menu-item.d.ts.map +1 -0
- package/dist/menu/menu-item.js +240 -0
- package/dist/menu/menu-item.js.map +1 -0
- package/dist/menu/menu-radio-group.d.ts +24 -0
- package/dist/menu/menu-radio-group.d.ts.map +1 -0
- package/dist/menu/menu-radio-group.js +71 -0
- package/dist/menu/menu-radio-group.js.map +1 -0
- package/dist/menu/menu-radio-item.d.ts +22 -0
- package/dist/menu/menu-radio-item.d.ts.map +1 -0
- package/dist/menu/menu-radio-item.js +116 -0
- package/dist/menu/menu-radio-item.js.map +1 -0
- package/dist/menu/menu-separator.d.ts +11 -0
- package/dist/menu/menu-separator.d.ts.map +1 -0
- package/dist/menu/menu-separator.js +29 -0
- package/dist/menu/menu-separator.js.map +1 -0
- package/dist/menu/menu-sub-trigger.d.ts +46 -0
- package/dist/menu/menu-sub-trigger.d.ts.map +1 -0
- package/dist/menu/menu-sub-trigger.js +302 -0
- package/dist/menu/menu-sub-trigger.js.map +1 -0
- package/dist/menu/menu-trigger.d.ts +57 -0
- package/dist/menu/menu-trigger.d.ts.map +1 -0
- package/dist/menu/menu-trigger.js +351 -0
- package/dist/menu/menu-trigger.js.map +1 -0
- package/dist/miller/index.d.ts +5 -0
- package/dist/miller/index.d.ts.map +1 -0
- package/dist/miller/index.js +5 -0
- package/dist/miller/index.js.map +1 -0
- package/dist/miller/miller-base.d.ts +184 -0
- package/dist/miller/miller-base.d.ts.map +1 -0
- package/dist/miller/miller-base.js +1249 -0
- package/dist/miller/miller-base.js.map +1 -0
- package/dist/miller/miller-list.d.ts +30 -0
- package/dist/miller/miller-list.d.ts.map +1 -0
- package/dist/miller/miller-list.js +192 -0
- package/dist/miller/miller-list.js.map +1 -0
- package/dist/miller/miller-tree-controller.d.ts +58 -0
- package/dist/miller/miller-tree-controller.d.ts.map +1 -0
- package/dist/miller/miller-tree-controller.js +134 -0
- package/dist/miller/miller-tree-controller.js.map +1 -0
- package/dist/miller/types.d.ts +63 -0
- package/dist/miller/types.d.ts.map +1 -0
- package/dist/miller/types.js +6 -0
- package/dist/miller/types.js.map +1 -0
- package/dist/mixins/labelled-input-base.d.ts +38 -0
- package/dist/mixins/labelled-input-base.d.ts.map +1 -0
- package/dist/mixins/labelled-input-base.js +171 -0
- package/dist/mixins/labelled-input-base.js.map +1 -0
- package/dist/mixins/labelled-input-util.d.ts +3 -0
- package/dist/mixins/labelled-input-util.d.ts.map +1 -0
- package/dist/mixins/labelled-input-util.js +10 -0
- package/dist/mixins/labelled-input-util.js.map +1 -0
- package/dist/my-element.d.ts.map +1 -1
- package/dist/my-element.js +1 -1
- package/dist/my-element.js.map +1 -1
- package/dist/narrowed-text/index.d.ts +3 -0
- package/dist/narrowed-text/index.d.ts.map +1 -0
- package/dist/narrowed-text/index.js +3 -0
- package/dist/narrowed-text/index.js.map +1 -0
- package/dist/narrowed-text/narrowed-text.d.ts +48 -0
- package/dist/narrowed-text/narrowed-text.d.ts.map +1 -0
- package/dist/narrowed-text/narrowed-text.js +668 -0
- package/dist/narrowed-text/narrowed-text.js.map +1 -0
- package/dist/narrowed-text/types.d.ts +20 -0
- package/dist/narrowed-text/types.d.ts.map +1 -0
- package/dist/narrowed-text/types.js +2 -0
- package/dist/narrowed-text/types.js.map +1 -0
- package/dist/panel/panel-group.d.ts +23 -0
- package/dist/panel/panel-group.d.ts.map +1 -0
- package/dist/panel/panel-group.js +109 -0
- package/dist/panel/panel-group.js.map +1 -0
- package/dist/panel/panel.d.ts +39 -0
- package/dist/panel/panel.d.ts.map +1 -0
- package/dist/panel/panel.js +417 -0
- package/dist/panel/panel.js.map +1 -0
- package/dist/plots/colour-map.d.ts +31 -0
- package/dist/plots/colour-map.d.ts.map +1 -0
- package/dist/plots/colour-map.js +133 -0
- package/dist/plots/colour-map.js.map +1 -0
- package/dist/plots/data.d.ts +27 -0
- package/dist/plots/data.d.ts.map +1 -0
- package/dist/plots/data.js +47 -0
- package/dist/plots/data.js.map +1 -0
- package/dist/plots/single-axis.d.ts +41 -0
- package/dist/plots/single-axis.d.ts.map +1 -0
- package/dist/plots/single-axis.js +428 -0
- package/dist/plots/single-axis.js.map +1 -0
- package/dist/plots/svg-utils.d.ts +12 -0
- package/dist/plots/svg-utils.d.ts.map +1 -0
- package/dist/plots/svg-utils.js +64 -0
- package/dist/plots/svg-utils.js.map +1 -0
- package/dist/plots/xy-axis.d.ts +42 -0
- package/dist/plots/xy-axis.d.ts.map +1 -0
- package/dist/plots/xy-axis.js +307 -0
- package/dist/plots/xy-axis.js.map +1 -0
- package/dist/polar-pad/polar-pad.d.ts +132 -0
- package/dist/polar-pad/polar-pad.d.ts.map +1 -0
- package/dist/polar-pad/polar-pad.js +598 -0
- package/dist/polar-pad/polar-pad.js.map +1 -0
- package/dist/radial-input/radial-input.d.ts +45 -0
- package/dist/radial-input/radial-input.d.ts.map +1 -0
- package/dist/radial-input/radial-input.js +692 -0
- package/dist/radial-input/radial-input.js.map +1 -0
- package/dist/radial-input/svg-utils.d.ts +147 -0
- package/dist/radial-input/svg-utils.d.ts.map +1 -0
- package/dist/radial-input/svg-utils.js +346 -0
- package/dist/radial-input/svg-utils.js.map +1 -0
- package/dist/radial-input/types.d.ts +25 -0
- package/dist/radial-input/types.d.ts.map +1 -0
- package/dist/radial-input/types.js +5 -0
- package/dist/radial-input/types.js.map +1 -0
- package/dist/range/range-multi.d.ts +62 -0
- package/dist/range/range-multi.d.ts.map +1 -0
- package/dist/range/range-multi.js +652 -0
- package/dist/range/range-multi.js.map +1 -0
- package/dist/range/range.d.ts +23 -0
- package/dist/range/range.d.ts.map +1 -0
- package/dist/range/range.js +153 -0
- package/dist/range/range.js.map +1 -0
- package/dist/range-input/index.d.ts +2 -0
- package/dist/range-input/index.d.ts.map +1 -0
- package/dist/range-input/index.js +2 -0
- package/dist/range-input/index.js.map +1 -0
- package/dist/range-input/range-input.d.ts +92 -0
- package/dist/range-input/range-input.d.ts.map +1 -0
- package/dist/range-input/range-input.js +472 -0
- package/dist/range-input/range-input.js.map +1 -0
- package/dist/selecthorizontal.d.ts +1 -1
- package/dist/selecthorizontal.d.ts.map +1 -1
- package/dist/selecthorizontal.js +3 -3
- package/dist/selecthorizontal.js.map +1 -1
- package/dist/snap-container/snap-container.d.ts +45 -0
- package/dist/snap-container/snap-container.d.ts.map +1 -0
- package/dist/snap-container/snap-container.js +352 -0
- package/dist/snap-container/snap-container.js.map +1 -0
- package/dist/split-layout/split-layout.d.ts +25 -9
- package/dist/split-layout/split-layout.d.ts.map +1 -1
- package/dist/split-layout/split-layout.js +520 -66
- package/dist/split-layout/split-layout.js.map +1 -1
- package/dist/styles/popup.d.ts +11 -0
- package/dist/styles/popup.d.ts.map +1 -0
- package/dist/styles/popup.js +20 -0
- package/dist/styles/popup.js.map +1 -0
- package/dist/styles/prominence.d.ts +58 -0
- package/dist/styles/prominence.d.ts.map +1 -0
- package/dist/styles/prominence.js +94 -0
- package/dist/styles/prominence.js.map +1 -0
- package/dist/styles/tooltip.d.ts +2 -0
- package/dist/styles/tooltip.d.ts.map +1 -0
- package/dist/styles/tooltip.js +100 -0
- package/dist/styles/tooltip.js.map +1 -0
- package/dist/svg-edit-label.js +1 -1
- package/dist/svg-edit-label.js.map +1 -1
- package/dist/swipe/index.d.ts +2 -0
- package/dist/swipe/index.d.ts.map +1 -0
- package/dist/swipe/index.js +2 -0
- package/dist/swipe/index.js.map +1 -0
- package/dist/swipe/swipe.d.ts +65 -0
- package/dist/swipe/swipe.d.ts.map +1 -0
- package/dist/swipe/swipe.js +229 -0
- package/dist/swipe/swipe.js.map +1 -0
- package/dist/tabs/tab-layout-item.d.ts.map +1 -1
- package/dist/tabs/tab-layout-item.js +1 -1
- package/dist/tabs/tab-layout-item.js.map +1 -1
- package/dist/tabs/tab-layout.d.ts.map +1 -1
- package/dist/tabs/tab-layout.js +1 -1
- package/dist/tabs/tab-layout.js.map +1 -1
- package/dist/tabs/tab-list-item.d.ts +22 -6
- package/dist/tabs/tab-list-item.d.ts.map +1 -1
- package/dist/tabs/tab-list-item.js +174 -42
- package/dist/tabs/tab-list-item.js.map +1 -1
- package/dist/tabs/tab-list.d.ts +15 -5
- package/dist/tabs/tab-list.d.ts.map +1 -1
- package/dist/tabs/tab-list.js +159 -50
- package/dist/tabs/tab-list.js.map +1 -1
- package/dist/tabs/tab-panel.d.ts +1 -1
- package/dist/tabs/tab-panel.d.ts.map +1 -1
- package/dist/tabs/tab-panel.js +2 -2
- package/dist/tabs/tab-panel.js.map +1 -1
- package/dist/tabs/tab-panels.d.ts +3 -3
- package/dist/tabs/tab-panels.d.ts.map +1 -1
- package/dist/tabs/tab-panels.js +6 -6
- package/dist/tabs/tab-panels.js.map +1 -1
- package/dist/timeline/index.d.ts +9 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/index.js +8 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/timeline/timeline-controller.d.ts +48 -0
- package/dist/timeline/timeline-controller.d.ts.map +1 -0
- package/dist/timeline/timeline-controller.js +81 -0
- package/dist/timeline/timeline-controller.js.map +1 -0
- package/dist/timeline/timeline-draw.d.ts +28 -0
- package/dist/timeline/timeline-draw.d.ts.map +1 -0
- package/dist/timeline/timeline-draw.js +330 -0
- package/dist/timeline/timeline-draw.js.map +1 -0
- package/dist/timeline/timeline-element.d.ts +140 -0
- package/dist/timeline/timeline-element.d.ts.map +1 -0
- package/dist/timeline/timeline-element.js +888 -0
- package/dist/timeline/timeline-element.js.map +1 -0
- package/dist/timeline/timeline-interactions.d.ts +40 -0
- package/dist/timeline/timeline-interactions.d.ts.map +1 -0
- package/dist/timeline/timeline-interactions.js +393 -0
- package/dist/timeline/timeline-interactions.js.map +1 -0
- package/dist/timeline/timeline-styles.d.ts +2 -0
- package/dist/timeline/timeline-styles.d.ts.map +1 -0
- package/dist/timeline/timeline-styles.js +153 -0
- package/dist/timeline/timeline-styles.js.map +1 -0
- package/dist/timeline/timeline-track-tabs.d.ts +30 -0
- package/dist/timeline/timeline-track-tabs.d.ts.map +1 -0
- package/dist/timeline/timeline-track-tabs.js +204 -0
- package/dist/timeline/timeline-track-tabs.js.map +1 -0
- package/dist/timeline/types.d.ts +144 -0
- package/dist/timeline/types.d.ts.map +1 -0
- package/dist/timeline/types.js +3 -0
- package/dist/timeline/types.js.map +1 -0
- package/dist/tree/index.d.ts +5 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/index.js +5 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/tree/tree-base.d.ts +70 -0
- package/dist/tree/tree-base.d.ts.map +1 -0
- package/dist/tree/tree-base.js +1028 -0
- package/dist/tree/tree-base.js.map +1 -0
- package/dist/tree/tree-controller.d.ts +14 -0
- package/dist/tree/tree-controller.d.ts.map +1 -0
- package/dist/tree/tree-controller.js +96 -0
- package/dist/tree/tree-controller.js.map +1 -0
- package/dist/tree/tree-list.d.ts +20 -0
- package/dist/tree/tree-list.d.ts.map +1 -0
- package/dist/tree/tree-list.js +174 -0
- package/dist/tree/tree-list.js.map +1 -0
- package/dist/tree/types.d.ts +14 -0
- package/dist/tree/types.d.ts.map +1 -0
- package/dist/tree/types.js +7 -0
- package/dist/tree/types.js.map +1 -0
- package/dist/util/checkbox.d.ts +2 -0
- package/dist/util/checkbox.d.ts.map +1 -0
- package/dist/util/checkbox.js +69 -0
- package/dist/util/checkbox.js.map +1 -0
- package/dist/util/circle-arc.d.ts +6 -6
- package/dist/util/circle-arc.d.ts.map +1 -1
- package/dist/util/circle-arc.js +28 -20
- package/dist/util/circle-arc.js.map +1 -1
- package/dist/util/clamp.d.ts +4 -0
- package/dist/util/clamp.d.ts.map +1 -0
- package/dist/util/clamp.js +23 -0
- package/dist/util/clamp.js.map +1 -0
- package/dist/util/compare.d.ts +8 -8
- package/dist/util/compare.d.ts.map +1 -1
- package/dist/util/compare.js +13 -13
- package/dist/util/compare.js.map +1 -1
- package/dist/util/content-editable.d.ts +1 -1
- package/dist/util/content-editable.d.ts.map +1 -1
- package/dist/util/content-editable.js +2 -2
- package/dist/util/content-editable.js.map +1 -1
- package/dist/util/coordinates.d.ts +3 -0
- package/dist/util/coordinates.d.ts.map +1 -0
- package/dist/util/coordinates.js +11 -0
- package/dist/util/coordinates.js.map +1 -0
- package/dist/util/drag.d.ts +16 -0
- package/dist/util/drag.d.ts.map +1 -0
- package/dist/util/drag.js +20 -0
- package/dist/util/drag.js.map +1 -0
- package/dist/util/is-numeric.d.ts +2 -0
- package/dist/util/is-numeric.d.ts.map +1 -0
- package/dist/util/is-numeric.js +9 -0
- package/dist/util/is-numeric.js.map +1 -0
- package/dist/util/key-value.d.ts +2 -2
- package/dist/util/key-value.d.ts.map +1 -1
- package/dist/util/key-value.js +4 -5
- package/dist/util/key-value.js.map +1 -1
- package/dist/util/near.d.ts +2 -0
- package/dist/util/near.d.ts.map +1 -0
- package/dist/util/near.js +6 -0
- package/dist/util/near.js.map +1 -0
- package/dist/util/svg-editable-text.d.ts +6 -2
- package/dist/util/svg-editable-text.d.ts.map +1 -1
- package/dist/util/svg-editable-text.js +5 -7
- package/dist/util/svg-editable-text.js.map +1 -1
- package/dist/util/time.d.ts.map +1 -1
- package/dist/util/time.js +1 -1
- package/dist/util/time.js.map +1 -1
- package/dist/util/tooltip-controller.d.ts +10 -0
- package/dist/util/tooltip-controller.d.ts.map +1 -0
- package/dist/util/tooltip-controller.js +237 -0
- package/dist/util/tooltip-controller.js.map +1 -0
- package/dist/util/tooltip.d.ts +21 -0
- package/dist/util/tooltip.d.ts.map +1 -0
- package/dist/util/tooltip.js +98 -0
- package/dist/util/tooltip.js.map +1 -0
- package/dist/util/value-drag.d.ts +33 -0
- package/dist/util/value-drag.d.ts.map +1 -0
- package/dist/util/value-drag.js +154 -0
- package/dist/util/value-drag.js.map +1 -0
- package/dist/xy-pad.d.ts +117 -0
- package/dist/xy-pad.d.ts.map +1 -0
- package/dist/xy-pad.js +455 -0
- package/dist/xy-pad.js.map +1 -0
- package/package.json +47 -30
- package/README.md +0 -14
- package/dist/charts/frequency-histogram-plot.d.ts +0 -33
- package/dist/charts/frequency-histogram-plot.d.ts.map +0 -1
- package/dist/charts/frequency-histogram-plot.js +0 -54
- package/dist/charts/frequency-histogram-plot.js.map +0 -1
- package/dist/charts/histogram-vis.d.ts +0 -57
- package/dist/charts/histogram-vis.d.ts.map +0 -1
- package/dist/charts/histogram-vis.js +0 -222
- package/dist/charts/histogram-vis.js.map +0 -1
- package/dist/charts/plot.d.ts +0 -199
- package/dist/charts/plot.d.ts.map +0 -1
- package/dist/charts/plot.js +0 -914
- package/dist/charts/plot.js.map +0 -1
- package/dist/crumb-nav.d.ts +0 -41
- package/dist/crumb-nav.d.ts.map +0 -1
- package/dist/crumb-nav.js +0 -198
- package/dist/crumb-nav.js.map +0 -1
- package/dist/crumb-navigation.d.ts +0 -30
- package/dist/crumb-navigation.d.ts.map +0 -1
- package/dist/crumb-navigation.js +0 -307
- package/dist/crumb-navigation.js.map +0 -1
- package/dist/dial.d.ts +0 -89
- package/dist/dial.d.ts.map +0 -1
- package/dist/dial.js +0 -506
- package/dist/dial.js.map +0 -1
- package/dist/util/drag-controller.d.ts +0 -13
- package/dist/util/drag-controller.d.ts.map +0 -1
- package/dist/util/drag-controller.js +0 -21
- package/dist/util/drag-controller.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const iconBus: EventTarget;
|
|
2
|
+
export type IconChangedDetail = {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
};
|
|
5
|
+
export type IconChangedEvent = CustomEvent<IconChangedDetail>;
|
|
6
|
+
export declare function registerIcon(name: string, svg: string): void;
|
|
7
|
+
export declare function getIcon(name: string): string | undefined;
|
|
8
|
+
export declare function hasIcon(name: string): boolean;
|
|
9
|
+
/** Converts an SVG string to a CSS data-URI value, e.g. for use as a mask-image. */
|
|
10
|
+
export declare function svgToDataUri(svg: string): string;
|
|
11
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/icons/registry.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,aAAoB,CAAC;AAEzC,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1D,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAE9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAG5D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const _registry = new Map();
|
|
2
|
+
export const iconBus = new EventTarget();
|
|
3
|
+
export function registerIcon(name, svg) {
|
|
4
|
+
_registry.set(name, svg);
|
|
5
|
+
iconBus.dispatchEvent(new CustomEvent(`ixfx-icon-change`, { detail: { name } }));
|
|
6
|
+
}
|
|
7
|
+
export function getIcon(name) {
|
|
8
|
+
return _registry.get(name);
|
|
9
|
+
}
|
|
10
|
+
export function hasIcon(name) {
|
|
11
|
+
return _registry.has(name);
|
|
12
|
+
}
|
|
13
|
+
/** Converts an SVG string to a CSS data-URI value, e.g. for use as a mask-image. */
|
|
14
|
+
export function svgToDataUri(svg) {
|
|
15
|
+
return `url("data:image/svg+xml,${encodeURIComponent(svg)}")`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/icons/registry.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE5C,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAKzC,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,GAAW;IACpD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,aAAa,CAAC,IAAI,WAAW,CAAoB,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,2BAA2B,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FuzzySearchOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an ixfx-ac-text-compatible `completionProvider` function from a
|
|
4
|
+
* static item list. Uses synchronous fuzzy search wrapped in a Promise so it
|
|
5
|
+
* fits the async provider signature.
|
|
6
|
+
*
|
|
7
|
+
* Each returned item has `positions` populated with matched character indices,
|
|
8
|
+
* which `ixfx-ac-text` uses to render CSS Custom Highlights on the label.
|
|
9
|
+
*
|
|
10
|
+
* Empty query returns all items in original order (no positions).
|
|
11
|
+
* A cancelled signal causes the returned promise to reject with an AbortError.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createAcCompletionProvider<T extends {
|
|
14
|
+
label: string;
|
|
15
|
+
}>(items: readonly T[], options?: Pick<FuzzySearchOptions<T>, `selector`>): (query: string, signal: AbortSignal) => Promise<(T & {
|
|
16
|
+
positions: ReadonlySet<number>;
|
|
17
|
+
})[]>;
|
|
18
|
+
//# sourceMappingURL=ac-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ac-adapter.d.ts","sourceRoot":"","sources":["../../src/incr-search/ac-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACpE,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,GAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAM,GACpD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG;IAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,EAAE,CAAC,CAuB7F"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createFuzzySearch } from './fuzzy.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an ixfx-ac-text-compatible `completionProvider` function from a
|
|
4
|
+
* static item list. Uses synchronous fuzzy search wrapped in a Promise so it
|
|
5
|
+
* fits the async provider signature.
|
|
6
|
+
*
|
|
7
|
+
* Each returned item has `positions` populated with matched character indices,
|
|
8
|
+
* which `ixfx-ac-text` uses to render CSS Custom Highlights on the label.
|
|
9
|
+
*
|
|
10
|
+
* Empty query returns all items in original order (no positions).
|
|
11
|
+
* A cancelled signal causes the returned promise to reject with an AbortError.
|
|
12
|
+
*/
|
|
13
|
+
export function createAcCompletionProvider(items, options = {}) {
|
|
14
|
+
const selector = options.selector ?? ((item) => item.label);
|
|
15
|
+
const fuzzy = createFuzzySearch(items, { selector });
|
|
16
|
+
return (query, signal) => new Promise((resolve, reject) => {
|
|
17
|
+
if (signal.aborted) {
|
|
18
|
+
reject(new DOMException(`Aborted`, `AbortError`));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const results = fuzzy.find(query).map(r => ({ ...r.item, positions: r.positions }));
|
|
22
|
+
if (signal.aborted) {
|
|
23
|
+
reject(new DOMException(`Aborted`, `AbortError`));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
resolve(results);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ac-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ac-adapter.js","sourceRoot":"","sources":["../../src/incr-search/ac-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAmB,EACnB,UAAmD,EAAE;IAErD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAErD,OAAO,CACL,KAAa,EACb,MAAmB,EACkC,EAAE,CACvD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEpF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `IncrSearchTreeController` from `./controller-tree.js` instead,
|
|
3
|
+
* passing `labelSelector: '.label'` in the options.
|
|
4
|
+
*
|
|
5
|
+
* This module is kept for backwards compatibility and re-exports the unified controller.
|
|
6
|
+
*/
|
|
7
|
+
export { IncrSearchTreeController as IncrSearchMillerController } from './controller-tree.js';
|
|
8
|
+
export type { IncrSearchTreeOptions as IncrSearchMillerOptions } from './controller-tree.js';
|
|
9
|
+
//# sourceMappingURL=controller-miller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-miller.d.ts","sourceRoot":"","sources":["../../src/incr-search/controller-miller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,wBAAwB,IAAI,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC9F,YAAY,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `IncrSearchTreeController` from `./controller-tree.js` instead,
|
|
3
|
+
* passing `labelSelector: '.label'` in the options.
|
|
4
|
+
*
|
|
5
|
+
* This module is kept for backwards compatibility and re-exports the unified controller.
|
|
6
|
+
*/
|
|
7
|
+
export { IncrSearchTreeController as IncrSearchMillerController } from './controller-tree.js';
|
|
8
|
+
//# sourceMappingURL=controller-miller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-miller.js","sourceRoot":"","sources":["../../src/incr-search/controller-miller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,wBAAwB,IAAI,0BAA0B,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FzfOptions } from 'fzf';
|
|
2
|
+
import type { TreeSearchHost } from '../common/searchable.js';
|
|
3
|
+
import type { TreeNode } from '../common/types.js';
|
|
4
|
+
export type IncrSearchTreeOptions = {
|
|
5
|
+
selector: (item: {
|
|
6
|
+
node: TreeNode;
|
|
7
|
+
depth: number;
|
|
8
|
+
}) => string;
|
|
9
|
+
/**
|
|
10
|
+
* CSS selector for the label elements inside the shadow root.
|
|
11
|
+
* Defaults to `.tree-label` (suitable for ixfx-tree-list).
|
|
12
|
+
* Use `.label` for ixfx-miller-list.
|
|
13
|
+
*/
|
|
14
|
+
labelSelector?: string;
|
|
15
|
+
highlightKey?: string;
|
|
16
|
+
input?: HTMLInputElement;
|
|
17
|
+
fzf?: Partial<FzfOptions<{
|
|
18
|
+
node: TreeNode;
|
|
19
|
+
depth: number;
|
|
20
|
+
}>>;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Incremental-search controller for any component implementing `TreeSearchHost`
|
|
24
|
+
* (i.e. `ixfx-tree-list`, `ixfx-miller-list`, `ixfx-crumb-navigation`).
|
|
25
|
+
*
|
|
26
|
+
* Replaces the previous separate `IncrSearchTreeController` / `IncrSearchMillerController`
|
|
27
|
+
* classes — the unified `TreeFilterPredicate` (with depth) means one implementation works
|
|
28
|
+
* for all tree-like components.
|
|
29
|
+
*
|
|
30
|
+
* @example Using with ixfx-tree-list:
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const ctrl = new IncrSearchTreeController(myTreeList, {
|
|
33
|
+
* selector: item => item.node.item.label,
|
|
34
|
+
* });
|
|
35
|
+
* ctrl.connect();
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example Using with ixfx-miller-list (different label selector):
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const ctrl = new IncrSearchTreeController(myMillerList, {
|
|
41
|
+
* selector: item => item.node.item.label,
|
|
42
|
+
* labelSelector: '.label',
|
|
43
|
+
* });
|
|
44
|
+
* ctrl.connect();
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare class IncrSearchTreeController {
|
|
48
|
+
#private;
|
|
49
|
+
constructor(el: TreeSearchHost, opts: IncrSearchTreeOptions);
|
|
50
|
+
connect(): void;
|
|
51
|
+
disconnect(): void;
|
|
52
|
+
setQuery(query: string): Promise<void>;
|
|
53
|
+
clearQuery(): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=controller-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-tree.d.ts","sourceRoot":"","sources":["../../src/incr-search/controller-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAItC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAC9D;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC9D,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,wBAAwB;;gBAOvB,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB;IAS3D,OAAO,IAAI,IAAI;IAiBf,UAAU,IAAI,IAAI;IAcZ,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CA4ClC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { createIncrSearch } from './incr-search.js';
|
|
2
|
+
import { applyHighlights, clearHighlights, buildHighlightTargets } from './highlight.js';
|
|
3
|
+
const DEFAULT_HIGHLIGHT_KEY = `incr-search-highlight`;
|
|
4
|
+
/**
|
|
5
|
+
* Incremental-search controller for any component implementing `TreeSearchHost`
|
|
6
|
+
* (i.e. `ixfx-tree-list`, `ixfx-miller-list`, `ixfx-crumb-navigation`).
|
|
7
|
+
*
|
|
8
|
+
* Replaces the previous separate `IncrSearchTreeController` / `IncrSearchMillerController`
|
|
9
|
+
* classes — the unified `TreeFilterPredicate` (with depth) means one implementation works
|
|
10
|
+
* for all tree-like components.
|
|
11
|
+
*
|
|
12
|
+
* @example Using with ixfx-tree-list:
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const ctrl = new IncrSearchTreeController(myTreeList, {
|
|
15
|
+
* selector: item => item.node.item.label,
|
|
16
|
+
* });
|
|
17
|
+
* ctrl.connect();
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @example Using with ixfx-miller-list (different label selector):
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const ctrl = new IncrSearchTreeController(myMillerList, {
|
|
23
|
+
* selector: item => item.node.item.label,
|
|
24
|
+
* labelSelector: '.label',
|
|
25
|
+
* });
|
|
26
|
+
* ctrl.connect();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class IncrSearchTreeController {
|
|
30
|
+
#el;
|
|
31
|
+
#opts;
|
|
32
|
+
#search;
|
|
33
|
+
#unsub;
|
|
34
|
+
#labelMap = new Map();
|
|
35
|
+
constructor(el, opts) {
|
|
36
|
+
this.#el = el;
|
|
37
|
+
this.#opts = opts;
|
|
38
|
+
this.#search = createIncrSearch({
|
|
39
|
+
selector: opts.selector,
|
|
40
|
+
fzf: opts.fzf,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
connect() {
|
|
44
|
+
this.disconnect();
|
|
45
|
+
const items = this.#el.getNodes();
|
|
46
|
+
for (const item of items) {
|
|
47
|
+
this.#labelMap.set(this.#opts.selector(item), item);
|
|
48
|
+
}
|
|
49
|
+
void this.#search.setItems(items);
|
|
50
|
+
if (this.#opts.input) {
|
|
51
|
+
this.#opts.input.addEventListener(`input`, this.#onInput);
|
|
52
|
+
this.#opts.input.addEventListener(`keydown`, this.#onKeydown);
|
|
53
|
+
}
|
|
54
|
+
this.#unsub = this.#search.onChange(state => this.#onStateChange(state));
|
|
55
|
+
}
|
|
56
|
+
disconnect() {
|
|
57
|
+
if (this.#unsub) {
|
|
58
|
+
this.#unsub();
|
|
59
|
+
this.#unsub = undefined;
|
|
60
|
+
}
|
|
61
|
+
if (this.#opts.input) {
|
|
62
|
+
this.#opts.input.removeEventListener(`input`, this.#onInput);
|
|
63
|
+
this.#opts.input.removeEventListener(`keydown`, this.#onKeydown);
|
|
64
|
+
}
|
|
65
|
+
this.#el.filterPredicate = undefined;
|
|
66
|
+
clearHighlights({ key: this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY });
|
|
67
|
+
this.#labelMap.clear();
|
|
68
|
+
}
|
|
69
|
+
async setQuery(query) {
|
|
70
|
+
await this.#search.setQuery(query);
|
|
71
|
+
}
|
|
72
|
+
async clearQuery() {
|
|
73
|
+
await this.#search.clearQuery();
|
|
74
|
+
}
|
|
75
|
+
#onInput = () => {
|
|
76
|
+
const value = this.#opts.input?.value ?? ``;
|
|
77
|
+
void this.setQuery(value);
|
|
78
|
+
};
|
|
79
|
+
#onKeydown = (e) => {
|
|
80
|
+
if (e.key === `Escape` && this.#opts.input) {
|
|
81
|
+
this.#opts.input.value = ``;
|
|
82
|
+
void this.clearQuery();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
#onStateChange(state) {
|
|
86
|
+
const matched = new Set(state.results.map(r => r.item.node.item.key));
|
|
87
|
+
const hasQuery = state.query.trim().length > 0;
|
|
88
|
+
this.#el.filterPredicate = hasQuery && matched.size > 0
|
|
89
|
+
? (node, _depth) => matched.has(node.item.key)
|
|
90
|
+
: undefined;
|
|
91
|
+
const key = this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY;
|
|
92
|
+
if (!this.#el.shadowRoot)
|
|
93
|
+
return;
|
|
94
|
+
if (!state.query.trim()) {
|
|
95
|
+
clearHighlights({ key });
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const labelSelector = this.#opts.labelSelector ?? `.tree-label`;
|
|
99
|
+
const targets = buildHighlightTargets(this.#el.shadowRoot, labelSelector, state.positionsByItem, (labelEl) => {
|
|
100
|
+
const text = labelEl.textContent ?? ``;
|
|
101
|
+
return this.#labelMap.get(text);
|
|
102
|
+
}, (labelEl) => labelEl.textContent ?? ``);
|
|
103
|
+
applyHighlights(targets, { key });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=controller-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-tree.js","sourceRoot":"","sources":["../../src/incr-search/controller-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ElementIncrSearchOptions, IncrSearchChangeCallback } from './types.js';
|
|
2
|
+
type ElementItem = {
|
|
3
|
+
readonly key: string;
|
|
4
|
+
readonly label: string;
|
|
5
|
+
};
|
|
6
|
+
export type ElementIncrSearch = {
|
|
7
|
+
readonly setQuery: (query: string, signal?: AbortSignal) => Promise<void>;
|
|
8
|
+
readonly clearQuery: () => Promise<void>;
|
|
9
|
+
readonly refresh: () => void;
|
|
10
|
+
readonly onChange: (cb: IncrSearchChangeCallback<ElementItem>) => () => void;
|
|
11
|
+
readonly dispose: () => void;
|
|
12
|
+
};
|
|
13
|
+
export declare function createElementIncrSearch(opts: ElementIncrSearchOptions): ElementIncrSearch;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=element-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-search.d.ts","sourceRoot":"","sources":["../../src/incr-search/element-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,YAAY,CAAC;AAIpB,KAAK,WAAW,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAUpE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,wBAAwB,CAAC,WAAW,CAAC,KAAK,MAAM,IAAI,CAAC;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,wBAAwB,GAAG,iBAAiB,CAqGzF"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { createIncrSearch } from './incr-search.js';
|
|
2
|
+
import { applyHighlights, buildHighlightTargets, clearHighlights } from './highlight.js';
|
|
3
|
+
const defaultGetLabel = (el) => el.textContent?.trim() ?? ``;
|
|
4
|
+
const defaultGetKey = (el) => el.getAttribute(`data-key`)
|
|
5
|
+
?? el.getAttribute(`data-value`)
|
|
6
|
+
?? el.textContent?.trim()
|
|
7
|
+
?? ``;
|
|
8
|
+
export function createElementIncrSearch(opts) {
|
|
9
|
+
const { container, itemSelector, getLabel = defaultGetLabel, getKey = defaultGetKey, labelSelector, highlightKey, } = opts;
|
|
10
|
+
// Map from key → element reference for highlight lookup
|
|
11
|
+
let elementByKey = new Map();
|
|
12
|
+
const search = createIncrSearch({
|
|
13
|
+
selector: item => item.label,
|
|
14
|
+
fzf: opts.fzf,
|
|
15
|
+
});
|
|
16
|
+
const updateVisibility = (state) => {
|
|
17
|
+
const matchedKeys = new Set(state.results.map(r => r.item.key));
|
|
18
|
+
const hasQuery = state.query.trim().length > 0;
|
|
19
|
+
for (const [key, el] of elementByKey) {
|
|
20
|
+
el.hidden = hasQuery ? !matchedKeys.has(key) : false;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const updateHighlights = (state) => {
|
|
24
|
+
if (!state.query.trim()) {
|
|
25
|
+
clearHighlights({ key: highlightKey });
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const sel = labelSelector ?? itemSelector;
|
|
29
|
+
const targets = buildHighlightTargets(container, sel, state.positionsByItem, el => {
|
|
30
|
+
const key = getKey(el);
|
|
31
|
+
// Find the ElementItem whose key matches this element's key
|
|
32
|
+
const result = state.results.find(r => r.item.key === key);
|
|
33
|
+
return result?.item;
|
|
34
|
+
}, el => getLabel(el));
|
|
35
|
+
applyHighlights(targets, { key: highlightKey });
|
|
36
|
+
};
|
|
37
|
+
const unsubscribeState = search.onChange(state => {
|
|
38
|
+
updateVisibility(state);
|
|
39
|
+
updateHighlights(state);
|
|
40
|
+
opts.onChange?.(state);
|
|
41
|
+
});
|
|
42
|
+
let refreshPending = false;
|
|
43
|
+
const refresh = () => {
|
|
44
|
+
if (refreshPending)
|
|
45
|
+
return;
|
|
46
|
+
refreshPending = true;
|
|
47
|
+
void Promise.resolve().then(() => {
|
|
48
|
+
refreshPending = false;
|
|
49
|
+
elementByKey = new Map();
|
|
50
|
+
const els = container.querySelectorAll(itemSelector);
|
|
51
|
+
const items = [];
|
|
52
|
+
for (const el of els) {
|
|
53
|
+
const key = getKey(el);
|
|
54
|
+
elementByKey.set(key, el);
|
|
55
|
+
items.push({ key, label: getLabel(el) });
|
|
56
|
+
}
|
|
57
|
+
void search.setItems(items);
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
const observer = new MutationObserver(() => refresh());
|
|
61
|
+
observer.observe(container, { childList: true, subtree: false });
|
|
62
|
+
refresh();
|
|
63
|
+
return {
|
|
64
|
+
async setQuery(query, signal) {
|
|
65
|
+
await search.setQuery(query, signal);
|
|
66
|
+
},
|
|
67
|
+
async clearQuery() {
|
|
68
|
+
await search.clearQuery();
|
|
69
|
+
},
|
|
70
|
+
refresh,
|
|
71
|
+
onChange(cb) {
|
|
72
|
+
return search.onChange(cb);
|
|
73
|
+
},
|
|
74
|
+
dispose() {
|
|
75
|
+
observer.disconnect();
|
|
76
|
+
unsubscribeState();
|
|
77
|
+
search.dispose();
|
|
78
|
+
clearHighlights({ key: highlightKey });
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=element-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-search.js","sourceRoot":"","sources":["../../src/incr-search/element-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/incr-search/fuzzy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AAWpF,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,GAAE,kBAAkB,CAAC,CAAC,CAAM,GAClC,WAAW,CAAC,CAAC,CAAC,CAwBhB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Fzf } from 'fzf';
|
|
2
|
+
const defaultSelector = (item) => {
|
|
3
|
+
if (typeof item === `string`)
|
|
4
|
+
return item;
|
|
5
|
+
const r = item;
|
|
6
|
+
if (typeof r[`label`] === `string`)
|
|
7
|
+
return r[`label`];
|
|
8
|
+
if (typeof r[`key`] === `string`)
|
|
9
|
+
return r[`key`];
|
|
10
|
+
if (typeof r[`value`] === `string`)
|
|
11
|
+
return r[`value`];
|
|
12
|
+
return String(item);
|
|
13
|
+
};
|
|
14
|
+
export function createFuzzySearch(items, options = {}) {
|
|
15
|
+
const selector = options.selector ?? (defaultSelector);
|
|
16
|
+
// fzf uses a conditional SyncOptionsTuple<T> rest-parameter overload that TypeScript
|
|
17
|
+
// cannot narrow through a spread when T is generic.
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
const FzfAny = Fzf;
|
|
20
|
+
const fzf = new FzfAny(items, { selector, ...(options.fzf ?? {}) });
|
|
21
|
+
const find = (query) => {
|
|
22
|
+
if (!query.trim()) {
|
|
23
|
+
return items.map(item => ({
|
|
24
|
+
item,
|
|
25
|
+
positions: new Set(),
|
|
26
|
+
score: 0,
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
return fzf.find(query).map(r => ({
|
|
30
|
+
item: r.item,
|
|
31
|
+
positions: r.positions,
|
|
32
|
+
score: r.score,
|
|
33
|
+
}));
|
|
34
|
+
};
|
|
35
|
+
return { find, items };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=fuzzy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../src/incr-search/fuzzy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,MAAM,eAAe,GAAG,CAAI,IAAO,EAAU,EAAE;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAC/B,KAAmB,EACnB,UAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAI,eAAkB,CAAA,CAAC;IACxD,qFAAqF;IACrF,oDAAoD;IACpD,8DAA8D;IAC9D,MAAM,MAAM,GAAG,GAA+H,CAAC;IAC/I,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,KAAqB,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAEpF,MAAM,IAAI,GAAG,CAAC,KAAa,EAAkC,EAAE;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI;gBACJ,SAAS,EAAE,IAAI,GAAG,EAAU;gBAC5B,KAAK,EAAE,CAAC;aACT,CAAC,CAAC,CAAC;QACN,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { HighlightOptions, HighlightTarget } from './types.js';
|
|
2
|
+
export declare function applyHighlights(targets: readonly HighlightTarget[], options?: HighlightOptions): void;
|
|
3
|
+
export declare function clearHighlights(options?: HighlightOptions): void;
|
|
4
|
+
export declare function buildHighlightTargets<T>(root: ShadowRoot | Element, itemSelector: string, positionsByItem: ReadonlyMap<T, ReadonlySet<number>>, getItem: (el: Element) => T | undefined, getText: (el: Element) => string): HighlightTarget[];
|
|
5
|
+
//# sourceMappingURL=highlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../src/incr-search/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIpE,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,OAAO,GAAE,gBAAqB,GAC7B,IAAI,CAyBN;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAGpE;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EACpD,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,SAAS,EACvC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,MAAM,GAC/B,eAAe,EAAE,CAanB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const DEFAULT_KEY = `incr-search-highlight`;
|
|
2
|
+
export function applyHighlights(targets, options = {}) {
|
|
3
|
+
if (typeof CSS === `undefined` || !CSS.highlights)
|
|
4
|
+
return;
|
|
5
|
+
const key = options.key ?? DEFAULT_KEY;
|
|
6
|
+
CSS.highlights.delete(key);
|
|
7
|
+
const ranges = [];
|
|
8
|
+
for (const { element, text, positions } of targets) {
|
|
9
|
+
if (!positions.size)
|
|
10
|
+
continue;
|
|
11
|
+
const textNode = findTextNode(element, text);
|
|
12
|
+
if (!textNode)
|
|
13
|
+
continue;
|
|
14
|
+
for (const pos of positions) {
|
|
15
|
+
const range = new Range();
|
|
16
|
+
range.setStart(textNode, pos);
|
|
17
|
+
range.setEnd(textNode, pos + 1);
|
|
18
|
+
ranges.push(range);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (ranges.length > 0) {
|
|
22
|
+
CSS.highlights.set(key, new Highlight(...ranges));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function clearHighlights(options = {}) {
|
|
26
|
+
if (typeof CSS === `undefined` || !CSS.highlights)
|
|
27
|
+
return;
|
|
28
|
+
CSS.highlights.delete(options.key ?? DEFAULT_KEY);
|
|
29
|
+
}
|
|
30
|
+
export function buildHighlightTargets(root, itemSelector, positionsByItem, getItem, getText) {
|
|
31
|
+
const targets = [];
|
|
32
|
+
const labelEls = root.querySelectorAll(itemSelector);
|
|
33
|
+
for (const el of labelEls) {
|
|
34
|
+
const item = getItem(el);
|
|
35
|
+
if (item === undefined)
|
|
36
|
+
continue;
|
|
37
|
+
const positions = positionsByItem.get(item);
|
|
38
|
+
if (!positions || positions.size === 0)
|
|
39
|
+
continue;
|
|
40
|
+
targets.push({ element: el, text: getText(el), positions });
|
|
41
|
+
}
|
|
42
|
+
return targets;
|
|
43
|
+
}
|
|
44
|
+
const findTextNode = (element, expectedText) => {
|
|
45
|
+
for (const node of element.childNodes) {
|
|
46
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
47
|
+
if (expectedText === undefined || node.textContent === expectedText) {
|
|
48
|
+
return node;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../src/incr-search/highlight.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C,MAAM,UAAU,eAAe,CAC7B,OAAmC,EACnC,UAA4B,EAAE;IAE9B,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO;IAE1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC;IACvC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAE3B,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,SAAS;QAE9B,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9B,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAA4B,EAAE;IAC5D,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO;IAC1D,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAA0B,EAC1B,YAAoB,EACpB,eAAoD,EACpD,OAAuC,EACvC,OAAgC;IAEhC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAErD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;YAAE,SAAS;QACjD,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,YAAqB,EAAe,EAAE;IAC5E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;gBACpE,OAAO,IAAY,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incr-search.d.ts","sourceRoot":"","sources":["../../src/incr-search/incr-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAkBpB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAE,iBAAiB,CAAC,CAAC,CAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAqErF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createFuzzySearch } from './fuzzy.js';
|
|
2
|
+
const buildState = (results, query) => {
|
|
3
|
+
const positionsByItem = new Map();
|
|
4
|
+
for (const r of results) {
|
|
5
|
+
positionsByItem.set(r.item, r.positions);
|
|
6
|
+
}
|
|
7
|
+
return Object.freeze({
|
|
8
|
+
query,
|
|
9
|
+
results: Object.freeze([...results]),
|
|
10
|
+
positionsByItem,
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export function createIncrSearch(options = {}) {
|
|
14
|
+
let items = options.items ?? [];
|
|
15
|
+
let query = ``;
|
|
16
|
+
let fuzzy = createFuzzySearch(items, { selector: options.selector, fzf: options.fzf });
|
|
17
|
+
let state = buildState(fuzzy.find(query), query);
|
|
18
|
+
let disposed = false;
|
|
19
|
+
const observers = new Set();
|
|
20
|
+
if (options.onChange) {
|
|
21
|
+
observers.add(options.onChange);
|
|
22
|
+
}
|
|
23
|
+
const notify = (s) => {
|
|
24
|
+
for (const cb of observers) {
|
|
25
|
+
cb(s);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const run = async (q, signal) => {
|
|
29
|
+
// Yield to the microtask queue for a consistent async interface
|
|
30
|
+
await Promise.resolve();
|
|
31
|
+
if (signal?.aborted || disposed) {
|
|
32
|
+
return state;
|
|
33
|
+
}
|
|
34
|
+
const results = fuzzy.find(q);
|
|
35
|
+
if (signal?.aborted || disposed) {
|
|
36
|
+
return state;
|
|
37
|
+
}
|
|
38
|
+
state = buildState(results, q);
|
|
39
|
+
notify(state);
|
|
40
|
+
return state;
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
get state() {
|
|
44
|
+
return state;
|
|
45
|
+
},
|
|
46
|
+
async setItems(newItems, signal) {
|
|
47
|
+
items = newItems;
|
|
48
|
+
fuzzy = createFuzzySearch(items, { selector: options.selector, fzf: options.fzf });
|
|
49
|
+
await run(query, signal);
|
|
50
|
+
},
|
|
51
|
+
async setQuery(q, signal) {
|
|
52
|
+
query = q;
|
|
53
|
+
return run(q, signal);
|
|
54
|
+
},
|
|
55
|
+
async clearQuery() {
|
|
56
|
+
query = ``;
|
|
57
|
+
await run(``, undefined);
|
|
58
|
+
},
|
|
59
|
+
onChange(cb) {
|
|
60
|
+
observers.add(cb);
|
|
61
|
+
cb(state);
|
|
62
|
+
return () => {
|
|
63
|
+
observers.delete(cb);
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
dispose() {
|
|
67
|
+
disposed = true;
|
|
68
|
+
observers.clear();
|
|
69
|
+
items = [];
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=incr-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incr-search.js","sourceRoot":"","sources":["../../src/incr-search/incr-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { IncrSearch, IncrSearchOptions, IncrSearchResult, IncrSearchState, IncrSearchChangeCallback, FuzzySearch, FuzzySearchOptions, HighlightTarget, HighlightOptions, ElementIncrSearchOptions, } from './types.js';
|
|
2
|
+
export { createFuzzySearch } from './fuzzy.js';
|
|
3
|
+
export { createIncrSearch } from './incr-search.js';
|
|
4
|
+
export { applyHighlights, clearHighlights, buildHighlightTargets } from './highlight.js';
|
|
5
|
+
export { createElementIncrSearch } from './element-search.js';
|
|
6
|
+
export type { ElementIncrSearch } from './element-search.js';
|
|
7
|
+
export { createAcCompletionProvider } from './ac-adapter.js';
|
|
8
|
+
export { IncrSearchTreeController } from './controller-tree.js';
|
|
9
|
+
export type { IncrSearchTreeOptions } from './controller-tree.js';
|
|
10
|
+
export { IncrSearchMillerController } from './controller-miller.js';
|
|
11
|
+
export type { IncrSearchMillerOptions } from './controller-miller.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|