pxd 0.0.64 → 0.1.3
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/README.md +21 -10
- package/dist/components/_internal/calendar-day.d.vue.ts +33 -0
- package/dist/components/_internal/calendar-day.vue +85 -0
- package/dist/components/_internal/dismiss-container.d.vue.ts +1 -1
- package/dist/components/_internal/dismiss-container.vue +74 -127
- package/dist/components/_internal/fragment-container.vue +3 -3
- package/dist/components/_internal/loading-mask.d.vue.ts +8 -0
- package/dist/components/_internal/loading-mask.vue +33 -0
- package/dist/components/_internal/mention-editor.d.vue.ts +42 -0
- package/dist/components/_internal/mention-editor.vue +114 -0
- package/dist/components/_internal/popover-arrow.d.vue.ts +1 -1
- package/dist/components/_internal/popover-arrow.vue +9 -6
- package/dist/components/_internal/step-item.d.vue.ts +24 -0
- package/dist/components/_internal/step-item.vue +86 -0
- package/dist/components/_internal/tree-node.d.vue.ts +72 -0
- package/dist/components/_internal/tree-node.vue +268 -0
- package/dist/components/active-graph/index.d.vue.ts +4 -4
- package/dist/components/active-graph/index.vue +381 -239
- package/dist/components/active-graph/types.d.ts +2 -1
- package/dist/components/approval-card/index.d.vue.ts +28 -0
- package/dist/components/approval-card/index.vue +252 -0
- package/dist/components/approval-card/types.d.ts +37 -0
- package/dist/components/avatar/index.vue +43 -72
- package/dist/components/avatar-group/index.d.vue.ts +1 -1
- package/dist/components/avatar-group/index.vue +38 -25
- package/dist/components/backtop/index.d.vue.ts +10 -3
- package/dist/components/backtop/index.vue +97 -54
- package/dist/components/backtop/types.d.ts +10 -3
- package/dist/components/badge/index.d.vue.ts +6 -3
- package/dist/components/badge/index.vue +126 -79
- package/dist/components/badge/types.d.ts +3 -2
- package/dist/components/book/index.vue +57 -162
- package/dist/components/book/types.d.ts +1 -1
- package/dist/components/border-beam/index.d.vue.ts +18 -0
- package/dist/components/border-beam/index.vue +64 -0
- package/dist/components/border-beam/types.d.ts +8 -0
- package/dist/components/{resizable-panel → breadcrumb}/index.d.vue.ts +3 -4
- package/dist/components/breadcrumb/index.vue +32 -0
- package/dist/components/breadcrumb/types.d.ts +6 -0
- package/dist/components/breadcrumb-item/index.d.vue.ts +16 -0
- package/dist/components/breadcrumb-item/index.vue +50 -0
- package/dist/components/breadcrumb-item/types.d.ts +4 -0
- package/dist/components/browser/index.d.vue.ts +2 -2
- package/dist/components/browser/index.vue +13 -28
- package/dist/components/bubble/index.d.vue.ts +6 -3
- package/dist/components/bubble/index.vue +85 -18
- package/dist/components/bubble/types.d.ts +3 -1
- package/dist/components/bubble-group/index.d.vue.ts +19 -0
- package/dist/components/bubble-group/index.vue +86 -0
- package/dist/components/bubble-group/types.d.ts +6 -0
- package/dist/components/bubble-group/types.js +0 -0
- package/dist/components/button/index.d.vue.ts +6 -5
- package/dist/components/button/index.vue +121 -86
- package/dist/components/button/types.d.ts +1 -1
- package/dist/components/button-group/index.vue +20 -7
- package/dist/components/button-group/types.d.ts +1 -1
- package/dist/components/calendar/index.d.vue.ts +41 -0
- package/dist/components/calendar/index.vue +247 -0
- package/dist/components/calendar/types.d.ts +37 -0
- package/dist/components/card/index.d.vue.ts +21 -0
- package/dist/components/card/index.vue +47 -0
- package/dist/components/card/types.d.ts +6 -0
- package/dist/components/carousel/index.d.vue.ts +11 -7
- package/dist/components/carousel/index.vue +232 -283
- package/dist/components/carousel/types.d.ts +15 -1
- package/dist/components/checkbox/index.d.vue.ts +6 -5
- package/dist/components/checkbox/index.vue +107 -90
- package/dist/components/checkbox/types.d.ts +7 -5
- package/dist/components/checkbox-group/index.d.vue.ts +8 -8
- package/dist/components/checkbox-group/index.vue +26 -11
- package/dist/components/checkbox-group/types.d.ts +4 -2
- package/dist/components/checkerboard/index.d.vue.ts +14 -0
- package/dist/components/checkerboard/index.vue +37 -0
- package/dist/components/checkerboard/types.d.ts +5 -0
- package/dist/components/chip/index.d.vue.ts +3 -1
- package/dist/components/chip/index.vue +49 -46
- package/dist/components/chip/types.d.ts +1 -1
- package/dist/components/choicebox/index.d.vue.ts +7 -7
- package/dist/components/choicebox/index.vue +52 -30
- package/dist/components/choicebox/types.d.ts +1 -1
- package/dist/components/choicebox-item/index.d.vue.ts +7 -5
- package/dist/components/choicebox-item/index.vue +172 -53
- package/dist/components/choicebox-item/types.d.ts +3 -7
- package/dist/components/collapse/index.d.vue.ts +2 -2
- package/dist/components/collapse/index.vue +73 -99
- package/dist/components/collapse-group/index.vue +43 -32
- package/dist/components/collapse-group/types.d.ts +1 -1
- package/dist/components/color-selector/index.vue +45 -41
- package/dist/components/command-menu/index.d.vue.ts +10 -7
- package/dist/components/command-menu/index.vue +111 -46
- package/dist/components/command-menu/types.d.ts +3 -2
- package/dist/components/config-provider/index.d.vue.ts +116 -7
- package/dist/components/config-provider/index.vue +54 -11
- package/dist/components/config-provider/types.d.ts +6 -3
- package/dist/components/confirm-popover/index.d.vue.ts +39 -0
- package/dist/components/confirm-popover/index.vue +177 -0
- package/dist/components/confirm-popover/types.d.ts +23 -0
- package/dist/components/copy-button/index.d.vue.ts +20 -0
- package/dist/components/copy-button/index.vue +38 -0
- package/dist/components/copy-button/types.d.ts +7 -0
- package/dist/components/countdown/index.d.vue.ts +1 -1
- package/dist/components/countdown/index.vue +77 -29
- package/dist/components/dash-line/index.d.vue.ts +2 -1
- package/dist/components/dash-line/index.vue +78 -76
- package/dist/components/dash-line/types.d.ts +1 -1
- package/dist/components/date-picker/index.d.vue.ts +16 -0
- package/dist/components/date-picker/index.vue +295 -0
- package/dist/components/date-picker/types.d.ts +20 -0
- package/dist/components/description/index.vue +16 -7
- package/dist/components/drawer/index.d.vue.ts +11 -11
- package/dist/components/drawer/index.vue +156 -70
- package/dist/components/drawer/types.d.ts +3 -2
- package/dist/components/effort-slider/index.d.vue.ts +10 -0
- package/dist/components/effort-slider/index.vue +341 -0
- package/dist/components/effort-slider/types.d.ts +14 -0
- package/dist/components/ellipsis-text/index.d.vue.ts +1 -1
- package/dist/components/ellipsis-text/index.vue +209 -166
- package/dist/components/empty-state/index.vue +11 -4
- package/dist/components/error/index.d.vue.ts +3 -1
- package/dist/components/error/index.vue +42 -28
- package/dist/components/error/types.d.ts +2 -1
- package/dist/components/fader/index.d.vue.ts +1 -1
- package/dist/components/fader/index.vue +58 -114
- package/dist/components/fader/types.d.ts +3 -2
- package/dist/components/feedback-bar/index.d.vue.ts +12 -0
- package/dist/components/feedback-bar/index.vue +81 -0
- package/dist/components/feedback-bar/types.d.ts +9 -0
- package/dist/components/gauge/index.vue +91 -71
- package/dist/components/gauge/types.d.ts +1 -1
- package/dist/components/grid/index.vue +58 -52
- package/dist/components/grid/types.d.ts +1 -1
- package/dist/components/grid-item/index.vue +44 -39
- package/dist/components/grid-item/types.d.ts +1 -1
- package/dist/components/hint/index.d.vue.ts +32 -0
- package/dist/components/hint/index.vue +239 -0
- package/dist/components/hint/types.d.ts +17 -0
- package/dist/components/hold-button/index.d.vue.ts +4 -4
- package/dist/components/hold-button/index.vue +114 -118
- package/dist/components/hue-text/index.d.vue.ts +16 -0
- package/dist/components/hue-text/index.vue +48 -0
- package/dist/components/hue-text/types.d.ts +4 -0
- package/dist/components/index.d.ts +44 -5
- package/dist/components/index.js +44 -5
- package/dist/components/input/index.d.vue.ts +6 -5
- package/dist/components/input/index.vue +259 -136
- package/dist/components/input/types.d.ts +10 -7
- package/dist/components/intersection-observer/index.vue +65 -42
- package/dist/components/kbd/index.vue +47 -25
- package/dist/components/kbd/types.d.ts +1 -1
- package/dist/components/label/index.vue +7 -3
- package/dist/components/link-button/index.d.vue.ts +5 -5
- package/dist/components/link-button/index.vue +49 -32
- package/dist/components/list/index.d.vue.ts +22 -14
- package/dist/components/list/index.vue +318 -78
- package/dist/components/list/types.d.ts +39 -11
- package/dist/components/list-group/index.d.vue.ts +4 -0
- package/dist/components/list-group/index.vue +22 -0
- package/dist/components/list-group/types.d.ts +5 -0
- package/dist/components/list-item/index.d.vue.ts +7 -7
- package/dist/components/list-item/index.vue +95 -75
- package/dist/components/list-item/types.d.ts +7 -4
- package/dist/components/loading-bar/index.vue +148 -141
- package/dist/components/loading-dots/index.d.vue.ts +1 -13
- package/dist/components/loading-dots/index.vue +13 -15
- package/dist/components/marching-ants/index.d.vue.ts +25 -0
- package/dist/components/marching-ants/index.vue +486 -0
- package/dist/components/marching-ants/types.d.ts +9 -0
- package/dist/components/marquee/index.d.vue.ts +37 -0
- package/dist/components/marquee/index.vue +242 -0
- package/dist/components/marquee/types.d.ts +18 -0
- package/dist/components/material/index.d.vue.ts +3 -3
- package/dist/components/material/index.vue +22 -28
- package/dist/components/mention/index.d.vue.ts +38 -0
- package/dist/components/mention/index.vue +251 -0
- package/dist/components/mention/types.d.ts +35 -0
- package/dist/components/menu/index.d.vue.ts +17 -10
- package/dist/components/menu/index.vue +99 -28
- package/dist/components/menu/types.d.ts +8 -6
- package/dist/components/message/index.d.vue.ts +7 -7
- package/dist/components/message/index.vue +140 -239
- package/dist/components/message/types.d.ts +1 -1
- package/dist/components/message-item/index.vue +46 -62
- package/dist/components/modal/index.d.vue.ts +10 -10
- package/dist/components/modal/index.vue +143 -66
- package/dist/components/modal/types.d.ts +3 -5
- package/dist/components/more-button/index.vue +25 -13
- package/dist/components/noise-background/index.d.vue.ts +0 -16
- package/dist/components/noise-background/index.vue +70 -9
- package/dist/components/noise-background/types.d.ts +5 -1
- package/dist/components/note/index.d.vue.ts +1 -1
- package/dist/components/note/index.vue +114 -100
- package/dist/components/note/types.d.ts +3 -1
- package/dist/components/number-input/index.d.vue.ts +12 -9
- package/dist/components/number-input/index.vue +241 -165
- package/dist/components/number-input/types.d.ts +3 -3
- package/dist/components/overlay/index.d.vue.ts +3 -4
- package/dist/components/overlay/index.vue +85 -95
- package/dist/components/overlay/types.d.ts +0 -2
- package/dist/components/page-number/index.d.vue.ts +18 -0
- package/dist/components/page-number/index.vue +233 -0
- package/dist/components/page-number/types.d.ts +18 -0
- package/dist/components/pagination/index.vue +14 -7
- package/dist/components/pin-input/index.d.vue.ts +2 -2
- package/dist/components/pin-input/index.vue +197 -179
- package/dist/components/pin-input/types.d.ts +1 -1
- package/dist/components/placeholder/index.vue +22 -32
- package/dist/components/popover/index.d.vue.ts +0 -47
- package/dist/components/popover/index.vue +558 -347
- package/dist/components/popover/types.d.ts +10 -1
- package/dist/components/progress/index.d.vue.ts +3 -9
- package/dist/components/progress/index.vue +85 -63
- package/dist/components/progress/types.d.ts +1 -6
- package/dist/components/project-banner/index.d.vue.ts +3 -1
- package/dist/components/project-banner/index.vue +36 -34
- package/dist/components/project-banner/types.d.ts +2 -2
- package/dist/components/questionnaire/index.d.vue.ts +10 -0
- package/dist/components/questionnaire/index.vue +353 -0
- package/dist/components/questionnaire/types.d.ts +30 -0
- package/dist/components/radial-burst/index.d.vue.ts +14 -0
- package/dist/components/radial-burst/index.vue +53 -0
- package/dist/components/radial-burst/types.d.ts +5 -0
- package/dist/components/radio/index.d.vue.ts +4 -4
- package/dist/components/radio/index.vue +56 -74
- package/dist/components/radio/types.d.ts +1 -1
- package/dist/components/radio-group/index.d.vue.ts +6 -6
- package/dist/components/radio-group/index.vue +26 -12
- package/dist/components/radio-group/types.d.ts +1 -1
- package/dist/components/rating/index.d.vue.ts +17 -0
- package/dist/components/rating/index.vue +253 -0
- package/dist/components/rating/types.d.ts +18 -0
- package/dist/components/reasoning/index.d.vue.ts +16 -0
- package/dist/components/reasoning/index.vue +68 -0
- package/dist/components/reasoning/types.d.ts +3 -0
- package/dist/components/resizable/index.d.vue.ts +28 -4
- package/dist/components/resizable/index.vue +339 -158
- package/dist/components/resizable/types.d.ts +13 -14
- package/dist/components/reveal/index.d.vue.ts +22 -0
- package/dist/components/reveal/index.vue +100 -0
- package/dist/components/reveal/types.d.ts +15 -0
- package/dist/components/rolling-number/index.d.vue.ts +17 -0
- package/dist/components/rolling-number/index.vue +252 -0
- package/dist/components/rolling-number/types.d.ts +11 -0
- package/dist/components/scalable-text/index.vue +116 -113
- package/dist/components/scroll-progress/index.d.vue.ts +22 -0
- package/dist/components/scroll-progress/index.vue +75 -0
- package/dist/components/scroll-progress/types.d.ts +9 -0
- package/dist/components/scroll-text/index.d.vue.ts +18 -0
- package/dist/components/scroll-text/index.vue +123 -0
- package/dist/components/scroll-text/types.d.ts +7 -0
- package/dist/components/scrollable/index.d.vue.ts +3 -3
- package/dist/components/scrollable/index.vue +281 -222
- package/dist/components/scrollable/types.d.ts +2 -1
- package/dist/components/search-input/index.d.vue.ts +152 -0
- package/dist/components/search-input/index.vue +56 -0
- package/dist/components/search-input/types.d.ts +7 -0
- package/dist/components/select/index.d.vue.ts +36 -0
- package/dist/components/select/index.vue +257 -0
- package/dist/components/select/types.d.ts +25 -0
- package/dist/components/separator/index.d.vue.ts +1 -1
- package/dist/components/separator/index.vue +9 -6
- package/dist/components/separator/types.d.ts +1 -1
- package/dist/components/shimmer-text/index.d.vue.ts +18 -0
- package/dist/components/shimmer-text/index.vue +216 -0
- package/dist/components/shimmer-text/types.d.ts +14 -0
- package/dist/components/skeleton/index.d.vue.ts +1 -1
- package/dist/components/skeleton/index.vue +59 -51
- package/dist/components/skeleton/types.d.ts +1 -1
- package/dist/components/slider/index.d.vue.ts +2 -2
- package/dist/components/slider/index.vue +391 -261
- package/dist/components/slider/types.d.ts +4 -2
- package/dist/components/snippet/index.d.vue.ts +3 -2
- package/dist/components/snippet/index.vue +83 -70
- package/dist/components/snippet/types.d.ts +4 -4
- package/dist/components/spinner/index.vue +13 -8
- package/dist/components/spinner-dots/index.d.vue.ts +7 -0
- package/dist/components/spinner-dots/index.vue +232 -0
- package/dist/components/spinner-dots/types.d.ts +9 -0
- package/dist/components/split-button/index.d.vue.ts +31 -0
- package/dist/components/split-button/index.vue +93 -0
- package/dist/components/split-button/types.d.ts +18 -0
- package/dist/components/stack/index.d.vue.ts +4 -4
- package/dist/components/stack/index.vue +98 -85
- package/dist/components/stack/types.d.ts +1 -1
- package/dist/components/status-dot/index.d.vue.ts +1 -1
- package/dist/components/status-dot/index.vue +34 -20
- package/dist/components/status-dot/types.d.ts +1 -1
- package/dist/components/steps/index.d.vue.ts +28 -0
- package/dist/components/steps/index.vue +143 -0
- package/dist/components/steps/types.d.ts +25 -0
- package/dist/components/stick-to-bottom/index.d.vue.ts +35 -0
- package/dist/components/stick-to-bottom/index.vue +78 -0
- package/dist/components/stick-to-bottom/types.d.ts +13 -0
- package/dist/components/swipe-cell/index.d.vue.ts +53 -0
- package/dist/components/swipe-cell/index.vue +412 -0
- package/dist/components/swipe-cell/types.d.ts +53 -0
- package/dist/components/switch/index.d.vue.ts +1 -1
- package/dist/components/switch/index.vue +43 -22
- package/dist/components/switch/types.d.ts +1 -1
- package/dist/components/switch-item/index.vue +36 -37
- package/dist/components/switch-item/types.d.ts +1 -1
- package/dist/components/tabs/index.d.vue.ts +8 -6
- package/dist/components/tabs/index.vue +241 -198
- package/dist/components/tabs/tab-slot.d.ts +24 -0
- package/dist/components/tabs/tab-slot.js +13 -0
- package/dist/components/tabs/types.d.ts +11 -5
- package/dist/components/teleport/index.vue +69 -60
- package/dist/components/text/index.d.vue.ts +4 -4
- package/dist/components/text/index.vue +68 -57
- package/dist/components/text/types.d.ts +1 -1
- package/dist/components/textarea/index.d.vue.ts +7 -5
- package/dist/components/textarea/index.vue +148 -71
- package/dist/components/textarea/types.d.ts +6 -3
- package/dist/components/theme-switcher/index.d.vue.ts +3 -2
- package/dist/components/theme-switcher/index.vue +19 -15
- package/dist/components/theme-switcher/types.d.ts +2 -2
- package/dist/components/time-ago/index.d.vue.ts +6 -0
- package/dist/components/time-ago/index.vue +143 -0
- package/dist/components/time-ago/types.d.ts +4 -0
- package/dist/components/time-picker/index.d.vue.ts +8 -9
- package/dist/components/time-picker/index.vue +249 -186
- package/dist/components/time-picker/types.d.ts +7 -7
- package/dist/components/timeline/index.d.vue.ts +6 -0
- package/dist/components/timeline/index.vue +52 -0
- package/dist/components/timeline/types.d.ts +6 -0
- package/dist/components/timeline-item/index.d.vue.ts +22 -0
- package/dist/components/timeline-item/index.vue +110 -0
- package/dist/components/timeline-item/types.d.ts +16 -0
- package/dist/components/toc/index.d.vue.ts +37 -0
- package/dist/components/toc/index.vue +199 -0
- package/dist/components/toc/types.d.ts +28 -0
- package/dist/components/todo-list/index.d.vue.ts +64 -0
- package/dist/components/todo-list/index.vue +357 -0
- package/dist/components/todo-list/types.d.ts +53 -0
- package/dist/components/toggle/index.d.vue.ts +6 -6
- package/dist/components/toggle/index.vue +95 -44
- package/dist/components/toggle/types.d.ts +2 -2
- package/dist/components/toggle-button/index.d.vue.ts +5 -5
- package/dist/components/toggle-button/index.vue +125 -86
- package/dist/components/toggle-button/types.d.ts +8 -6
- package/dist/components/toggle-button-group/index.d.vue.ts +9 -8
- package/dist/components/toggle-button-group/index.vue +63 -43
- package/dist/components/toggle-button-group/types.d.ts +2 -2
- package/dist/components/tool-call/index.d.vue.ts +6 -0
- package/dist/components/tool-call/index.vue +209 -0
- package/dist/components/tool-call/types.d.ts +8 -0
- package/dist/components/tooltip/index.d.vue.ts +8 -6
- package/dist/components/tooltip/index.vue +65 -55
- package/dist/components/tooltip/types.d.ts +3 -6
- package/dist/components/tour/index.d.vue.ts +33 -0
- package/dist/components/tour/index.vue +302 -0
- package/dist/components/tour/types.d.ts +29 -0
- package/dist/components/tree/index.d.vue.ts +104 -0
- package/dist/components/tree/index.vue +751 -0
- package/dist/components/tree/types.d.ts +151 -0
- package/dist/components/virtual-list/index.d.vue.ts +11 -13
- package/dist/components/virtual-list/index.vue +120 -54
- package/dist/components/virtual-list/types.d.ts +0 -1
- package/dist/composables/_internal/use-collapse-motion.d.ts +6 -0
- package/dist/composables/_internal/use-collapse-motion.js +85 -0
- package/dist/composables/{use-focus-trap.d.ts → _internal/use-focus-trap.d.ts} +2 -2
- package/dist/composables/_internal/use-focus-trap.js +64 -0
- package/dist/composables/{use-forward-ref-expose.js → _internal/use-forward-ref-expose.js} +1 -1
- package/dist/composables/_internal/use-list-filter.d.ts +15 -0
- package/dist/composables/_internal/use-list-filter.js +48 -0
- package/dist/composables/_internal/use-list-keyboard-controller.d.ts +21 -0
- package/dist/composables/_internal/use-list-keyboard-controller.js +26 -0
- package/dist/composables/_internal/use-list-navigation.d.ts +25 -0
- package/dist/composables/_internal/use-list-navigation.js +141 -0
- package/dist/composables/_internal/use-list-rows.d.ts +33 -0
- package/dist/composables/_internal/use-list-rows.js +66 -0
- package/dist/composables/_internal/use-list-selection.d.ts +23 -0
- package/dist/composables/_internal/use-list-selection.js +41 -0
- package/dist/composables/_internal/use-lock-scroll.d.ts +12 -0
- package/dist/composables/_internal/use-lock-scroll.js +78 -0
- package/dist/composables/_internal/use-mention-editor.d.ts +35 -0
- package/dist/composables/_internal/use-mention-editor.js +508 -0
- package/dist/composables/_internal/use-mention-suggest.d.ts +23 -0
- package/dist/composables/_internal/use-mention-suggest.js +113 -0
- package/dist/composables/_internal/use-message-group.d.ts +22 -0
- package/dist/composables/_internal/use-message-group.js +143 -0
- package/dist/composables/{use-model-value.d.ts → _internal/use-model-value.d.ts} +1 -1
- package/dist/composables/_internal/use-model-value.js +13 -0
- package/dist/composables/_internal/use-overlay-dialog.d.ts +25 -0
- package/dist/composables/_internal/use-overlay-dialog.js +23 -0
- package/dist/composables/{use-overlay-manager.d.ts → _internal/use-overlay-manager.d.ts} +4 -1
- package/dist/composables/_internal/use-overlay-manager.js +139 -0
- package/dist/composables/{use-popover-responsive.js → _internal/use-popover-responsive.js} +1 -1
- package/dist/composables/_internal/use-selected-list-item.d.ts +6 -0
- package/dist/composables/_internal/use-selected-list-item.js +36 -0
- package/dist/composables/_internal/use-swipe-gesture.d.ts +88 -0
- package/dist/composables/_internal/use-swipe-gesture.js +345 -0
- package/dist/composables/_internal/use-tailwind-variant.d.ts +31 -0
- package/dist/composables/_internal/use-tailwind-variant.js +62 -0
- package/dist/composables/_internal/use-tour-target.d.ts +29 -0
- package/dist/composables/_internal/use-tour-target.js +201 -0
- package/dist/composables/_internal/use-tree.d.ts +103 -0
- package/dist/composables/_internal/use-tree.js +676 -0
- package/dist/composables/_internal/use-word-limit.d.ts +24 -0
- package/dist/composables/_internal/use-word-limit.js +36 -0
- package/dist/composables/index.d.ts +8 -10
- package/dist/composables/index.js +8 -10
- package/dist/composables/use-backoff-retry.d.ts +51 -0
- package/dist/composables/use-backoff-retry.js +116 -0
- package/dist/composables/use-color-scheme.d.ts +1 -1
- package/dist/composables/use-color-scheme.js +35 -31
- package/dist/composables/use-copy-click.d.ts +2 -1
- package/dist/composables/use-copy-click.js +21 -18
- package/dist/composables/use-countdown.d.ts +0 -9
- package/dist/composables/use-countdown.js +12 -4
- package/dist/composables/use-deferred-value.js +1 -1
- package/dist/composables/use-delay-change.js +6 -2
- package/dist/composables/use-delay-destroy.d.ts +2 -2
- package/dist/composables/use-delay-destroy.js +16 -9
- package/dist/composables/use-document-hidden.d.ts +1 -1
- package/dist/composables/use-intersection-observer.d.ts +6 -0
- package/dist/composables/use-intersection-observer.js +38 -0
- package/dist/composables/use-media-query.d.ts +0 -3
- package/dist/composables/use-media-query.js +19 -19
- package/dist/composables/use-motion-reduce.d.ts +6 -0
- package/dist/composables/use-motion-reduce.js +40 -0
- package/dist/composables/use-mutation-observer.d.ts +6 -0
- package/dist/composables/use-mutation-observer.js +42 -0
- package/dist/composables/use-outside-click.d.ts +6 -4
- package/dist/composables/use-outside-click.js +18 -10
- package/dist/composables/use-repeat-action.js +31 -20
- package/dist/composables/use-resize-observer.d.ts +6 -0
- package/dist/composables/use-resize-observer.js +22 -0
- package/dist/composables/use-scrollspy.d.ts +15 -0
- package/dist/composables/use-scrollspy.js +98 -0
- package/dist/composables/use-stick-to-bottom.d.ts +32 -0
- package/dist/composables/use-stick-to-bottom.js +106 -0
- package/dist/composables/use-view-transition.d.ts +20 -0
- package/dist/composables/use-view-transition.js +80 -0
- package/dist/composables/use-virtual-list.d.ts +9 -6
- package/dist/composables/use-virtual-list.js +86 -19
- package/dist/constants/tooltip-variants.d.ts +28 -0
- package/dist/constants/tooltip-variants.js +27 -0
- package/dist/contexts/avatar.js +1 -1
- package/dist/contexts/breadcrumb.d.ts +2 -0
- package/dist/contexts/breadcrumb.js +2 -0
- package/dist/contexts/button.js +1 -1
- package/dist/contexts/checkbox.js +1 -1
- package/dist/contexts/choicebox.d.ts +1 -0
- package/dist/contexts/choicebox.js +1 -1
- package/dist/contexts/collapse.js +1 -1
- package/dist/contexts/config-provider.d.ts +3 -2
- package/dist/contexts/config-provider.js +5 -4
- package/dist/contexts/list.d.ts +4 -25
- package/dist/contexts/list.js +1 -9
- package/dist/contexts/radio.js +1 -1
- package/dist/contexts/switch.js +1 -1
- package/dist/contexts/toggle-button.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/locales/en-us.d.ts +90 -27
- package/dist/locales/en-us.js +75 -27
- package/dist/locales/index.d.ts +1 -0
- package/dist/locales/zh-cn.d.ts +89 -27
- package/dist/locales/zh-cn.js +88 -27
- package/dist/plugins/dayjs-millisecond-token.d.ts +2 -4
- package/dist/plugins/dayjs-millisecond-token.js +1 -2
- package/dist/styles/styles.css +2 -2
- package/dist/styles/tw.css +97 -50
- package/dist/types/shared/props.d.ts +5 -3
- package/dist/types/shared/utils.d.ts +7 -0
- package/dist/utils/{context.js → _internal/context.js} +2 -1
- package/dist/utils/_internal/mention-html.d.ts +33 -0
- package/dist/utils/_internal/mention-html.js +146 -0
- package/dist/utils/_internal/observer.d.ts +42 -0
- package/dist/utils/_internal/observer.js +173 -0
- package/dist/utils/_internal/swipe-cell-instances.d.ts +7 -0
- package/dist/utils/_internal/swipe-cell-instances.js +17 -0
- package/dist/utils/date.d.ts +1 -15
- package/dist/utils/date.js +2 -11
- package/dist/utils/dom.d.ts +19 -21
- package/dist/utils/dom.js +57 -28
- package/dist/utils/event.d.ts +15 -2
- package/dist/utils/event.js +68 -27
- package/dist/utils/format.d.ts +5 -4
- package/dist/utils/format.js +33 -13
- package/dist/utils/fuzzy-match.d.ts +2 -0
- package/dist/utils/fuzzy-match.js +182 -0
- package/dist/utils/helper.d.ts +17 -0
- package/dist/utils/helper.js +57 -0
- package/dist/utils/is.d.ts +5 -1
- package/dist/utils/is.js +10 -2
- package/dist/utils/merge.d.ts +1 -0
- package/dist/utils/merge.js +19 -0
- package/dist/utils/timing.d.ts +19 -6
- package/dist/utils/timing.js +74 -16
- package/package.json +49 -62
- package/volar.d.ts +44 -5
- package/dist/components/carousel-item/index.d.vue.ts +0 -13
- package/dist/components/carousel-item/index.vue +0 -54
- package/dist/components/command-menu-group/index.d.vue.ts +0 -14
- package/dist/components/command-menu-group/index.vue +0 -31
- package/dist/components/command-menu-group/types.d.ts +0 -5
- package/dist/components/message/composables/use-group-expand.d.ts +0 -13
- package/dist/components/message/composables/use-group-expand.js +0 -50
- package/dist/components/message/composables/use-message-timer.d.ts +0 -9
- package/dist/components/message/composables/use-message-timer.js +0 -61
- package/dist/components/message/composables/use-promise-message.d.ts +0 -4
- package/dist/components/message/composables/use-promise-message.js +0 -49
- package/dist/components/resizable-handle/index.d.vue.ts +0 -6
- package/dist/components/resizable-handle/index.vue +0 -116
- package/dist/components/resizable-panel/index.vue +0 -57
- package/dist/components/resizable-panel/types.d.ts +0 -4
- package/dist/components/tabs-item/index.d.vue.ts +0 -4
- package/dist/components/tabs-item/index.vue +0 -16
- package/dist/components/tabs-item/types.d.ts +0 -10
- package/dist/composables/use-browser-observer.d.ts +0 -12
- package/dist/composables/use-browser-observer.js +0 -74
- package/dist/composables/use-focus-trap.js +0 -54
- package/dist/composables/use-list-filter.d.ts +0 -11
- package/dist/composables/use-list-filter.js +0 -56
- package/dist/composables/use-list-navigation.d.ts +0 -27
- package/dist/composables/use-list-navigation.js +0 -159
- package/dist/composables/use-lock-scroll.d.ts +0 -5
- package/dist/composables/use-lock-scroll.js +0 -37
- package/dist/composables/use-model-value.js +0 -13
- package/dist/composables/use-overlay-manager.js +0 -80
- package/dist/composables/use-swipe-gesture.d.ts +0 -65
- package/dist/composables/use-swipe-gesture.js +0 -98
- package/dist/contexts/carousel.d.ts +0 -14
- package/dist/contexts/carousel.js +0 -2
- package/dist/contexts/resizable.d.ts +0 -27
- package/dist/contexts/resizable.js +0 -2
- package/dist/contexts/tabs.d.ts +0 -15
- package/dist/contexts/tabs.js +0 -2
- package/dist/plugins/any-touch.d.ts +0 -213
- package/dist/plugins/any-touch.js +0 -592
- package/dist/styles/source.css +0 -640
- package/dist/types/shared/index.d.ts +0 -2
- package/dist/utils/fuzzy-search.d.ts +0 -7
- package/dist/utils/fuzzy-search.js +0 -61
- package/dist/utils/get.d.ts +0 -9
- package/dist/utils/get.js +0 -55
- package/dist/utils/index.d.ts +0 -10
- package/dist/utils/index.js +0 -10
- package/dist/utils/ref.d.ts +0 -5
- package/dist/utils/ref.js +0 -8
- package/dist/utils/uid.d.ts +0 -1
- package/dist/utils/uid.js +0 -4
- /package/dist/composables/{use-forward-ref-expose.d.ts → _internal/use-forward-ref-expose.d.ts} +0 -0
- /package/dist/composables/{use-popover-responsive.d.ts → _internal/use-popover-responsive.d.ts} +0 -0
- /package/dist/utils/{context.d.ts → _internal/context.d.ts} +0 -0
package/dist/styles/tw.css
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
@custom-variant dark (&:is(.dark *));
|
|
2
|
+
@custom-variant sibling (& + &);
|
|
3
|
+
@custom-variant within-group (&:is([data-group] *));
|
|
4
|
+
|
|
5
|
+
@source '../constants';
|
|
6
|
+
@source '../components';
|
|
7
|
+
@source '../composables';
|
|
2
8
|
|
|
3
9
|
:root {
|
|
4
10
|
--background-100-value: 0, 0%, 100%;
|
|
@@ -104,6 +110,7 @@
|
|
|
104
110
|
--color-pink-1000-value: 333, 74%, 15%;
|
|
105
111
|
|
|
106
112
|
--primary: var(--color-gray-1000-value);
|
|
113
|
+
--primary-foreground: var(--color-gray-100-value);
|
|
107
114
|
--primary-hover: hsla(var(--primary), 70%);
|
|
108
115
|
--primary-active: hsla(var(--primary), 90%);
|
|
109
116
|
|
|
@@ -113,7 +120,7 @@
|
|
|
113
120
|
--ring: var(--primary);
|
|
114
121
|
|
|
115
122
|
--shadow-background-border: 0 0 0 1px hsl(var(--background-200-value));
|
|
116
|
-
--shadow-border-value: 0 0 0 1px
|
|
123
|
+
--shadow-border-value: 0 0 0 1px hsl(var(--color-gray-300-value));
|
|
117
124
|
--shadow-small-value: 0px 2px 2px #0000000a;
|
|
118
125
|
--shadow-medium-value: 0px 2px 2px #0000000a, 0px 8px 8px -8px #0000000a;
|
|
119
126
|
--shadow-large-value: 0px 2px 2px #0000000a, 0px 8px 16px -4px #0000000a;
|
|
@@ -262,7 +269,6 @@
|
|
|
262
269
|
--color-pink-900-value: 341, 90%, 67%;
|
|
263
270
|
--color-pink-1000-value: 333, 90%, 96%;
|
|
264
271
|
|
|
265
|
-
--shadow-border-value: 0 0 0 1px #ffffff25;
|
|
266
272
|
--shadow-small-value: 0px 1px 2px #00000029;
|
|
267
273
|
--shadow-medium-value: 0px 2px 2px #00000052, 0px 8px 8px -8px #00000029;
|
|
268
274
|
--shadow-large-value: 0px 2px 2px #0000000a, 0px 8px 16px -4px #0000000a;
|
|
@@ -287,12 +293,16 @@
|
|
|
287
293
|
|
|
288
294
|
@theme inline {
|
|
289
295
|
--font-sans:
|
|
290
|
-
'Inter', 'Inter Fallback', 'Geist', Arial, ui-sans-serif, system-ui,
|
|
291
|
-
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
|
296
|
+
'Inter Variable', 'Inter', 'Inter Fallback', 'Geist', Arial, ui-sans-serif, system-ui,
|
|
297
|
+
sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
|
298
|
+
--font-mono:
|
|
299
|
+
'MonoLisa', 'Geist Mono', 'JetBrains Mono', 'Input Mono', ui-monospace, SFMono-Regular, Menlo,
|
|
300
|
+
Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
|
|
292
301
|
|
|
293
302
|
--color-primary: hsl(var(--primary));
|
|
294
303
|
--color-primary-hover: var(--primary-hover);
|
|
295
304
|
--color-primary-active: var(--primary-active);
|
|
305
|
+
--color-primary-foreground: hsl(var(--primary-foreground));
|
|
296
306
|
|
|
297
307
|
--color-border: var(--color-gray-alpha-300-value);
|
|
298
308
|
--color-border-hover: hsl(var(--color-gray-500-value));
|
|
@@ -426,7 +436,7 @@
|
|
|
426
436
|
--shadow-modal: var(--shadow-modal-value);
|
|
427
437
|
--shadow-fullscreen: var(--shadow-fullscreen-value);
|
|
428
438
|
|
|
429
|
-
--shadow-border-base: var(--shadow-border-value);
|
|
439
|
+
--shadow-border-base: inset var(--shadow-border-value);
|
|
430
440
|
--shadow-border-small:
|
|
431
441
|
var(--shadow-border-value), var(--shadow-small-value), var(--shadow-background-border);
|
|
432
442
|
--shadow-border-medium:
|
|
@@ -442,6 +452,7 @@
|
|
|
442
452
|
--shadow-border-fullscreen:
|
|
443
453
|
var(--shadow-border-value), var(--shadow-fullscreen-value), var(--shadow-background-border);
|
|
444
454
|
|
|
455
|
+
--text-11: 11px;
|
|
445
456
|
--text-13: 13px;
|
|
446
457
|
--text-15: 15px;
|
|
447
458
|
}
|
|
@@ -462,6 +473,20 @@
|
|
|
462
473
|
transition-timing-function: var(--default-transition-timing-function);
|
|
463
474
|
}
|
|
464
475
|
|
|
476
|
+
@utility underline {
|
|
477
|
+
text-underline-position: from-font;
|
|
478
|
+
text-decoration-skip-ink: auto;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
@utility truncate-* {
|
|
482
|
+
display: -webkit-box;
|
|
483
|
+
overflow: hidden;
|
|
484
|
+
text-overflow: ellipsis;
|
|
485
|
+
line-clamp: --value(integer);
|
|
486
|
+
-webkit-line-clamp: --value(integer);
|
|
487
|
+
-webkit-box-orient: vertical;
|
|
488
|
+
}
|
|
489
|
+
|
|
465
490
|
@utility scrollbar-none {
|
|
466
491
|
& {
|
|
467
492
|
scrollbar-width: none;
|
|
@@ -495,7 +520,13 @@
|
|
|
495
520
|
|
|
496
521
|
@utility transition-appearance {
|
|
497
522
|
transition-property:
|
|
498
|
-
opacity, transform, translate, background-color, box-shadow,
|
|
523
|
+
opacity, transform, scale, translate, background-color, box-shadow, border-color, color;
|
|
524
|
+
transition-duration: var(--default-transition-duration);
|
|
525
|
+
transition-timing-function: var(--default-transition-timing-function);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
@utility transition-transform-opacity {
|
|
529
|
+
transition-property: opacity, transform, scale, rotate, translate;
|
|
499
530
|
transition-duration: var(--default-transition-duration);
|
|
500
531
|
transition-timing-function: var(--default-transition-timing-function);
|
|
501
532
|
}
|
|
@@ -525,45 +556,69 @@
|
|
|
525
556
|
font-family: inherit;
|
|
526
557
|
}
|
|
527
558
|
|
|
559
|
+
@utility text-trim-both {
|
|
560
|
+
text-box-trim: trim-both;
|
|
561
|
+
text-box-edge: cap alphabetic;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
.pxd-countdown-progress {
|
|
565
|
+
animation: pxd-countdown-shrink linear forwards;
|
|
566
|
+
transform-origin: left;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
@keyframes pxd-countdown-shrink {
|
|
570
|
+
from {
|
|
571
|
+
transform: scaleX(1);
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
to {
|
|
575
|
+
transform: scaleX(0);
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
|
|
528
579
|
@layer base {
|
|
529
|
-
|
|
580
|
+
*,
|
|
581
|
+
&::before,
|
|
582
|
+
&::after {
|
|
530
583
|
border-color: var(--color-gray-300);
|
|
531
584
|
}
|
|
585
|
+
|
|
586
|
+
.dark :is(*, *::before, *::after) {
|
|
587
|
+
border-color: var(--color-gray-400);
|
|
588
|
+
}
|
|
532
589
|
}
|
|
533
590
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
border-style: solid;
|
|
591
|
+
.pxd-input--border {
|
|
592
|
+
border-width: 1px;
|
|
593
|
+
border-style: solid;
|
|
538
594
|
|
|
539
|
-
|
|
540
|
-
|
|
595
|
+
&:not(.is-disabled, .is-readonly):hover {
|
|
596
|
+
border-color: hsla(var(--primary), 0.5);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
&:not(.is-disabled, .is-readonly)[data-focusing='true'],
|
|
600
|
+
&:not(.is-disabled, .is-readonly):focus-within {
|
|
601
|
+
border-color: var(--color-primary);
|
|
602
|
+
box-shadow: 0 0 0 3px hsla(var(--primary), 0.2);
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
&.is-error {
|
|
606
|
+
&:not(:focus)::placeholder {
|
|
607
|
+
color: var(--color-red-900) !important;
|
|
541
608
|
}
|
|
542
609
|
|
|
543
|
-
|
|
544
|
-
&:
|
|
545
|
-
|
|
546
|
-
|
|
610
|
+
&,
|
|
611
|
+
&:focus-within,
|
|
612
|
+
&[data-focusing='true'] {
|
|
613
|
+
border-color: hsl(var(--color-red-900-value));
|
|
614
|
+
box-shadow: 0 0 0 3px hsl(var(--color-red-300-value));
|
|
547
615
|
}
|
|
548
616
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
&,
|
|
555
|
-
&:focus-within,
|
|
556
|
-
&[data-focusing='true'] {
|
|
557
|
-
border-color: hsl(var(--color-red-900-value));
|
|
558
|
-
box-shadow: 0 0 0 3px hsl(var(--color-red-300-value));
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
&:focus-within,
|
|
562
|
-
&[data-focusing='true'],
|
|
563
|
-
&:not(.is-disabled, .is-readonly):hover {
|
|
564
|
-
border-color: hsl(var(--color-red-900-value));
|
|
565
|
-
box-shadow: 0 0 0 3px hsl(var(--color-red-500-value));
|
|
566
|
-
}
|
|
617
|
+
&:focus-within,
|
|
618
|
+
&[data-focusing='true'],
|
|
619
|
+
&:not(.is-disabled, .is-readonly):hover {
|
|
620
|
+
border-color: hsl(var(--color-red-900-value));
|
|
621
|
+
box-shadow: 0 0 0 3px hsl(var(--color-red-500-value));
|
|
567
622
|
}
|
|
568
623
|
}
|
|
569
624
|
}
|
|
@@ -593,8 +648,8 @@
|
|
|
593
648
|
.pxd-transition--fade-scale-enter-from,
|
|
594
649
|
.pxd-transition--fade-scale-leave-to {
|
|
595
650
|
opacity: 0;
|
|
596
|
-
filter: blur(
|
|
597
|
-
transform: scale(0.
|
|
651
|
+
filter: blur(4px);
|
|
652
|
+
transform: scale(0.8);
|
|
598
653
|
}
|
|
599
654
|
|
|
600
655
|
/* Make exit faster than enter */
|
|
@@ -602,19 +657,11 @@
|
|
|
602
657
|
transition-duration: var(--faster-transition-duration) !important;
|
|
603
658
|
}
|
|
604
659
|
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
line-clamp: var(--line-clamp, 1);
|
|
611
|
-
-webkit-line-clamp: var(--line-clamp, 1);
|
|
612
|
-
-webkit-box-orient: vertical;
|
|
613
|
-
}
|
|
614
|
-
*/
|
|
615
|
-
|
|
616
|
-
.scrollbar-stable {
|
|
617
|
-
scrollbar-gutter: stable !important;
|
|
660
|
+
[data-enter-motion='false'][class*='-enter-active'],
|
|
661
|
+
[data-leave-motion='false'][class*='-leave-active'],
|
|
662
|
+
[data-visible='true'] [data-enter-motion='false'],
|
|
663
|
+
[data-visible='false'] [data-leave-motion='false'] {
|
|
664
|
+
transition-duration: 0s !important;
|
|
618
665
|
}
|
|
619
666
|
|
|
620
667
|
.scrollbar-disabled,
|
|
@@ -11,8 +11,8 @@ export type ComponentBreakpointKeys = 'xs' | 'sm' | 'md' | 'lg' | 'xl'
|
|
|
11
11
|
export type ComponentBreakpoint<T = string> = Record<ComponentBreakpointKeys, T>
|
|
12
12
|
|
|
13
13
|
export type ComponentAs = string | object
|
|
14
|
-
export type ComponentLabel = string | number |
|
|
15
|
-
export type ComponentValue = string | number
|
|
14
|
+
export type ComponentLabel = string | number | undefined | null
|
|
15
|
+
export type ComponentValue = string | number
|
|
16
16
|
|
|
17
17
|
export type ComponentClass = string | any[] | Record<string, any>
|
|
18
18
|
|
|
@@ -29,8 +29,10 @@ export type ResponsiveValue<T> = T | Partial<ComponentBreakpoint<T>>
|
|
|
29
29
|
|
|
30
30
|
export interface ComponentOption {
|
|
31
31
|
label: ComponentLabel
|
|
32
|
-
value:
|
|
32
|
+
value: ComponentValue
|
|
33
33
|
disabled?: boolean
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export type ComponentBeforeChange<T> = (value: T) => Awaitable<T>
|
|
37
|
+
|
|
38
|
+
export type ComponentDateTimeValue = number | string | Date | null
|
|
@@ -7,3 +7,10 @@ export type Nullable<T> = T | null | undefined
|
|
|
7
7
|
|
|
8
8
|
export type MaybeElement = Nullable<HTMLElement | SVGElement | ComponentPublicInstance>
|
|
9
9
|
export type MaybeElementRef<T extends MaybeElement = MaybeElement> = MaybeRefOrGetter<Nullable<T>>
|
|
10
|
+
export type DeepPartial<T> = {
|
|
11
|
+
[K in keyof T]?: T[K] extends readonly unknown[]
|
|
12
|
+
? T[K]
|
|
13
|
+
: T[K] extends object
|
|
14
|
+
? DeepPartial<T[K]>
|
|
15
|
+
: T[K]
|
|
16
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { inject, provide } from "vue";
|
|
2
|
+
import { isUndefined } from "../is.js";
|
|
2
3
|
export function createContext(providerComponentName, fallbackValue) {
|
|
3
4
|
const symbolDescription = `${providerComponentName}Context`;
|
|
4
5
|
const injectionKey = Symbol(symbolDescription);
|
|
@@ -8,7 +9,7 @@ export function createContext(providerComponentName, fallbackValue) {
|
|
|
8
9
|
};
|
|
9
10
|
const injectContext = (fallback) => {
|
|
10
11
|
const context = inject(injectionKey, fallback ?? fallbackValue);
|
|
11
|
-
if (context
|
|
12
|
+
if (isUndefined(context)) {
|
|
12
13
|
throw new Error(
|
|
13
14
|
`Injection \`${injectionKey.toString()}\` not found. Component must be used within \`${providerComponentName}\``
|
|
14
15
|
);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const MENTION_TAG = "MENTION";
|
|
2
|
+
export declare const MENTION_TAG_LOWER: string;
|
|
3
|
+
/** The trigger a chip falls back to when its markup carries no `trigger` attribute. */
|
|
4
|
+
export declare const DEFAULT_TRIGGER = "@";
|
|
5
|
+
/**
|
|
6
|
+
* A collapsed selection sitting right after a `contenteditable=false` element is
|
|
7
|
+
* not representable; Android resolves it *into* the element, the IME then finds
|
|
8
|
+
* no editable context and hides the keyboard. A zero-width space after every chip
|
|
9
|
+
* gives the caret a real text node to live in. It is stripped on serialize, so it
|
|
10
|
+
* never reaches the public HTML, the v-model or the server.
|
|
11
|
+
*/
|
|
12
|
+
export declare const CARET_ANCHOR = "\u200B";
|
|
13
|
+
export declare function createCaretAnchor(): Text;
|
|
14
|
+
export declare function isMentionElement(node: Node | null | undefined): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Every chip in `root`. Pressing Enter nests content in block elements, so the
|
|
17
|
+
* editor's direct children are not enough.
|
|
18
|
+
*/
|
|
19
|
+
export declare function queryMentionElements(root: ParentNode): HTMLElement[];
|
|
20
|
+
export declare function getMentionLabel(el: HTMLElement): string;
|
|
21
|
+
export declare function createMentionElement(key: string, label: string, trigger?: string): HTMLElement;
|
|
22
|
+
/** Escape plain text for paste fallback (newlines → `<br>`). */
|
|
23
|
+
export declare function escapePlainTextAsHtml(text: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Serialize an editor DOM tree into the public HTML contract:
|
|
26
|
+
* plain text + `<mention key="...">label</mention>` only.
|
|
27
|
+
*/
|
|
28
|
+
export declare function serializeMentionHtml(root: HTMLElement): string;
|
|
29
|
+
/**
|
|
30
|
+
* Paste sanitizer: keep legal `<mention key>` nodes; everything else becomes text.
|
|
31
|
+
*/
|
|
32
|
+
export declare function sanitizeMentionClipboardHtml(html: string): DocumentFragment;
|
|
33
|
+
export declare function setMentionEditorContent(root: HTMLElement, html: string): void;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
export const MENTION_TAG = "MENTION";
|
|
2
|
+
export const MENTION_TAG_LOWER = MENTION_TAG.toLowerCase();
|
|
3
|
+
const BLOCK_TAGS = /* @__PURE__ */ new Set(["DIV", "P", "LI", "PRE"]);
|
|
4
|
+
export const DEFAULT_TRIGGER = "@";
|
|
5
|
+
export const CARET_ANCHOR = "\u200B";
|
|
6
|
+
export function createCaretAnchor() {
|
|
7
|
+
return document.createTextNode(CARET_ANCHOR);
|
|
8
|
+
}
|
|
9
|
+
export function isMentionElement(node) {
|
|
10
|
+
return !!node && node.nodeType === Node.ELEMENT_NODE && node.tagName === MENTION_TAG;
|
|
11
|
+
}
|
|
12
|
+
export function queryMentionElements(root) {
|
|
13
|
+
return Array.from(root.querySelectorAll(MENTION_TAG_LOWER));
|
|
14
|
+
}
|
|
15
|
+
export function getMentionLabel(el) {
|
|
16
|
+
const trigger = el.getAttribute("trigger") || DEFAULT_TRIGGER;
|
|
17
|
+
const text = el.textContent ?? "";
|
|
18
|
+
return text.startsWith(trigger) ? text.slice(trigger.length) : text;
|
|
19
|
+
}
|
|
20
|
+
export function createMentionElement(key, label, trigger = DEFAULT_TRIGGER) {
|
|
21
|
+
const el = document.createElement(MENTION_TAG_LOWER);
|
|
22
|
+
el.setAttribute("key", key);
|
|
23
|
+
if (trigger !== DEFAULT_TRIGGER) {
|
|
24
|
+
el.setAttribute("trigger", trigger);
|
|
25
|
+
}
|
|
26
|
+
el.setAttribute("contenteditable", "false");
|
|
27
|
+
el.className = "pxd-mention--chip";
|
|
28
|
+
el.textContent = `${trigger}${label}`;
|
|
29
|
+
return el;
|
|
30
|
+
}
|
|
31
|
+
function escapeMentionText(text) {
|
|
32
|
+
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
33
|
+
}
|
|
34
|
+
function escapeMentionAttr(text) {
|
|
35
|
+
return escapeMentionText(text).replace(/"/g, """);
|
|
36
|
+
}
|
|
37
|
+
export function escapePlainTextAsHtml(text) {
|
|
38
|
+
return escapeMentionText(text).replace(/\n/g, "<br>");
|
|
39
|
+
}
|
|
40
|
+
export function serializeMentionHtml(root) {
|
|
41
|
+
let result = "";
|
|
42
|
+
function startLine() {
|
|
43
|
+
if (result && !result.endsWith("\n")) {
|
|
44
|
+
result += "\n";
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function walk(node) {
|
|
48
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
49
|
+
result += (node.textContent ?? "").replace(/\u00A0/g, " ").replace(/\u200B/g, "");
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const el = node;
|
|
56
|
+
if (isMentionElement(el)) {
|
|
57
|
+
const key = el.getAttribute("key") ?? "";
|
|
58
|
+
const label = getMentionLabel(el);
|
|
59
|
+
const trigger = el.getAttribute("trigger");
|
|
60
|
+
const triggerAttr = trigger ? ` trigger="${escapeMentionAttr(trigger)}"` : "";
|
|
61
|
+
result += `<${MENTION_TAG_LOWER} key="${escapeMentionAttr(key)}"${triggerAttr}>${escapeMentionText(label)}</${MENTION_TAG_LOWER}>`;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (el.tagName === "BR") {
|
|
65
|
+
result += "\n";
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (BLOCK_TAGS.has(el.tagName) && (el.textContent || el.querySelector(MENTION_TAG_LOWER))) {
|
|
69
|
+
startLine();
|
|
70
|
+
}
|
|
71
|
+
for (const child of Array.from(el.childNodes)) {
|
|
72
|
+
walk(child);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
for (const child of Array.from(root.childNodes)) {
|
|
76
|
+
walk(child);
|
|
77
|
+
}
|
|
78
|
+
return result === "\n" ? "" : result;
|
|
79
|
+
}
|
|
80
|
+
function parseMentionHtml(html) {
|
|
81
|
+
const fragment = document.createDocumentFragment();
|
|
82
|
+
if (!html) {
|
|
83
|
+
return fragment;
|
|
84
|
+
}
|
|
85
|
+
const doc = new DOMParser().parseFromString(`<body>${html}</body>`, "text/html");
|
|
86
|
+
appendSanitizedChildren(doc.body, fragment);
|
|
87
|
+
return fragment;
|
|
88
|
+
}
|
|
89
|
+
export function sanitizeMentionClipboardHtml(html) {
|
|
90
|
+
const fragment = document.createDocumentFragment();
|
|
91
|
+
const doc = new DOMParser().parseFromString(html, "text/html");
|
|
92
|
+
appendSanitizedChildren(doc.body, fragment);
|
|
93
|
+
return fragment;
|
|
94
|
+
}
|
|
95
|
+
function appendSanitizedChildren(source, target) {
|
|
96
|
+
for (const child of Array.from(source.childNodes)) {
|
|
97
|
+
if (child.nodeType === Node.TEXT_NODE) {
|
|
98
|
+
const text = child.textContent ?? "";
|
|
99
|
+
if (text) {
|
|
100
|
+
appendPlainText(target, text);
|
|
101
|
+
}
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (child.nodeType !== Node.ELEMENT_NODE) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const el = child;
|
|
108
|
+
if (isMentionElement(el)) {
|
|
109
|
+
const key = el.getAttribute("key");
|
|
110
|
+
if (key != null && key !== "") {
|
|
111
|
+
const trigger = el.getAttribute("trigger") || DEFAULT_TRIGGER;
|
|
112
|
+
target.appendChild(createMentionElement(key, getMentionLabel(el), trigger));
|
|
113
|
+
target.appendChild(createCaretAnchor());
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (el.tagName === "BR") {
|
|
118
|
+
target.appendChild(document.createElement("br"));
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
appendSanitizedChildren(el, target);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function appendPlainText(target, text) {
|
|
125
|
+
const parts = text.split("\n");
|
|
126
|
+
for (let i = 0; i < parts.length; i++) {
|
|
127
|
+
if (parts[i]) {
|
|
128
|
+
const last = target.lastChild;
|
|
129
|
+
if (last?.nodeType === Node.TEXT_NODE) {
|
|
130
|
+
last.textContent = (last.textContent ?? "") + parts[i];
|
|
131
|
+
} else {
|
|
132
|
+
target.appendChild(document.createTextNode(parts[i]));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (i < parts.length - 1) {
|
|
136
|
+
target.appendChild(document.createElement("br"));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export function setMentionEditorContent(root, html) {
|
|
141
|
+
root.replaceChildren();
|
|
142
|
+
root.appendChild(parseMentionHtml(html));
|
|
143
|
+
if (!root.childNodes.length) {
|
|
144
|
+
root.appendChild(document.createElement("br"));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Nullable } from '../../types/shared/utils.js';
|
|
2
|
+
import type { MaybeRefOrGetter, Ref } from 'vue';
|
|
3
|
+
export type TargetRef = MaybeRefOrGetter<Nullable<HTMLElement>> | MaybeRefOrGetter<Nullable<HTMLElement>>[] | MaybeRefOrGetter<Nullable<HTMLElement>[]>;
|
|
4
|
+
/**
|
|
5
|
+
* The only native method this factory calls itself. Target bookkeeping goes through
|
|
6
|
+
* `ObserverSpec.sync`, because `MutationObserver` has no `unobserve`.
|
|
7
|
+
*/
|
|
8
|
+
export interface AnyObserver {
|
|
9
|
+
disconnect(): void;
|
|
10
|
+
}
|
|
11
|
+
/** Every native entry reports the node it was produced for. */
|
|
12
|
+
export interface AnyObserverEntry {
|
|
13
|
+
target: Node;
|
|
14
|
+
}
|
|
15
|
+
export interface ObservedItem<TItem> {
|
|
16
|
+
/** The native entry. A `MutationRecord` for mutation observers. */
|
|
17
|
+
entry: TItem;
|
|
18
|
+
/** The registered element this entry belongs to. */
|
|
19
|
+
target: HTMLElement;
|
|
20
|
+
}
|
|
21
|
+
export interface ObserverResults<TObserver> {
|
|
22
|
+
observer: Ref<TObserver | undefined>;
|
|
23
|
+
stop: () => void;
|
|
24
|
+
}
|
|
25
|
+
export interface ObserverSpec<TObserver extends AnyObserver, TOptions, TItem extends AnyObserverEntry> {
|
|
26
|
+
/** Options reduced to a stable string, so an equal setup shares one observer. */
|
|
27
|
+
normalize: (options: TOptions | undefined) => string;
|
|
28
|
+
create: (callback: (items: TItem[], observer: TObserver) => void, options: TOptions | undefined) => TObserver | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Applies the move from `prev` to `next` on an existing observer. Pooled specs are
|
|
31
|
+
* driven one element at a time (`[]` to `[el]` adds, `[el]` to `[]` removes).
|
|
32
|
+
*/
|
|
33
|
+
sync: (observer: TObserver, prev: HTMLElement[], next: HTMLElement[], options: TOptions | undefined) => void;
|
|
34
|
+
/** Attributes a native item to the registered element it was reported for. */
|
|
35
|
+
resolveTarget: (item: TItem, observed: readonly HTMLElement[]) => HTMLElement | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Share one native instance across every caller using equal options. Only valid when
|
|
38
|
+
* items carry their own target, which rules out mutation observers.
|
|
39
|
+
*/
|
|
40
|
+
pooled?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function createObserver<TObserver extends AnyObserver, TOptions, TItem extends AnyObserverEntry>(spec: ObserverSpec<TObserver, TOptions, TItem>): (target: TargetRef, callback: (items: ObservedItem<TItem>[]) => void, options?: MaybeRefOrGetter<TOptions>) => ObserverResults<TObserver>;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { onScopeDispose, shallowRef, watch } from "vue";
|
|
2
|
+
import { getElement } from "../dom.js";
|
|
3
|
+
import { toArray } from "../format.js";
|
|
4
|
+
import { toValue } from "../helper.js";
|
|
5
|
+
import { isNotNil, isServer } from "../is.js";
|
|
6
|
+
function resolveTargets(source) {
|
|
7
|
+
return [
|
|
8
|
+
...new Set(
|
|
9
|
+
toArray(toValue(source)).map((i) => getElement(i)).filter(isNotNil)
|
|
10
|
+
)
|
|
11
|
+
];
|
|
12
|
+
}
|
|
13
|
+
function isSameElements(a, b) {
|
|
14
|
+
return a.length === b.length && a.every((el, i) => el === b[i]);
|
|
15
|
+
}
|
|
16
|
+
export function createObserver(spec) {
|
|
17
|
+
const pools = /* @__PURE__ */ new Map();
|
|
18
|
+
return function observerWrapper(target, callback, options) {
|
|
19
|
+
const observer = shallowRef();
|
|
20
|
+
const subscription = { callback };
|
|
21
|
+
let pool;
|
|
22
|
+
let observed = [];
|
|
23
|
+
let activeKey;
|
|
24
|
+
function attach(el) {
|
|
25
|
+
let subs = pool.targets.get(el);
|
|
26
|
+
if (!subs) {
|
|
27
|
+
pool.targets.set(el, subs = /* @__PURE__ */ new Set());
|
|
28
|
+
spec.sync(pool.observer, [], [el], pool.options);
|
|
29
|
+
}
|
|
30
|
+
subs.add(subscription);
|
|
31
|
+
}
|
|
32
|
+
function detach(el) {
|
|
33
|
+
const subs = pool.targets.get(el);
|
|
34
|
+
subs?.delete(subscription);
|
|
35
|
+
if (subs && !subs.size) {
|
|
36
|
+
pool.targets.delete(el);
|
|
37
|
+
spec.sync(pool.observer, [el], [], pool.options);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function dispatch(items) {
|
|
41
|
+
const batches = /* @__PURE__ */ new Map();
|
|
42
|
+
for (const entry of items) {
|
|
43
|
+
const subs = pool?.targets.get(entry.target);
|
|
44
|
+
if (!subs) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
for (const sub of subs) {
|
|
48
|
+
const batch = batches.get(sub);
|
|
49
|
+
if (batch) {
|
|
50
|
+
batch.push(entry);
|
|
51
|
+
} else {
|
|
52
|
+
batches.set(sub, [entry]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
for (const [sub, batch] of batches) {
|
|
57
|
+
sub.callback(batch.map((entry) => ({ entry, target: entry.target })));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function acquire(key, value) {
|
|
61
|
+
let entry = pools.get(key);
|
|
62
|
+
if (!entry) {
|
|
63
|
+
const created = spec.create(dispatch, value);
|
|
64
|
+
if (!created) {
|
|
65
|
+
return void 0;
|
|
66
|
+
}
|
|
67
|
+
entry = { observer: created, options: value, count: 0, targets: /* @__PURE__ */ new Map() };
|
|
68
|
+
pools.set(key, entry);
|
|
69
|
+
}
|
|
70
|
+
entry.count++;
|
|
71
|
+
return entry;
|
|
72
|
+
}
|
|
73
|
+
function cleanup() {
|
|
74
|
+
if (pool) {
|
|
75
|
+
observed.forEach(detach);
|
|
76
|
+
pool.count--;
|
|
77
|
+
if (pool.count <= 0) {
|
|
78
|
+
pool.observer.disconnect();
|
|
79
|
+
pools.delete(activeKey);
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
observer.value?.disconnect();
|
|
83
|
+
}
|
|
84
|
+
pool = void 0;
|
|
85
|
+
observer.value = void 0;
|
|
86
|
+
observed = [];
|
|
87
|
+
}
|
|
88
|
+
function emitDirectly(items) {
|
|
89
|
+
const payload = items.map((entry) => {
|
|
90
|
+
const target2 = spec.resolveTarget(entry, observed);
|
|
91
|
+
return target2 ? { entry, target: target2 } : void 0;
|
|
92
|
+
}).filter(isNotNil);
|
|
93
|
+
if (payload.length) {
|
|
94
|
+
subscription.callback(payload);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const unwatch = watch(
|
|
98
|
+
[() => resolveTargets(target), () => spec.normalize(toValue(options))],
|
|
99
|
+
([newTargets, optionKey]) => {
|
|
100
|
+
if (isServer()) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
let targetsChanged = !isSameElements(observed, newTargets);
|
|
104
|
+
if (optionKey !== activeKey) {
|
|
105
|
+
activeKey = optionKey;
|
|
106
|
+
cleanup();
|
|
107
|
+
targetsChanged = true;
|
|
108
|
+
}
|
|
109
|
+
if (!targetsChanged) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (spec.pooled) {
|
|
113
|
+
if (!newTargets.length) {
|
|
114
|
+
observed.forEach(detach);
|
|
115
|
+
observed = [];
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (!pool) {
|
|
119
|
+
pool = acquire(optionKey, toValue(options));
|
|
120
|
+
if (!pool) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
observer.value = pool.observer;
|
|
124
|
+
observed = [];
|
|
125
|
+
}
|
|
126
|
+
observed.forEach((el) => {
|
|
127
|
+
if (!newTargets.includes(el)) {
|
|
128
|
+
detach(el);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
newTargets.forEach((el) => {
|
|
132
|
+
if (!observed.includes(el)) {
|
|
133
|
+
attach(el);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
observed = newTargets;
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (!newTargets.length) {
|
|
140
|
+
if (observer.value) {
|
|
141
|
+
spec.sync(observer.value, observed, newTargets, toValue(options));
|
|
142
|
+
observed = [];
|
|
143
|
+
}
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (!observer.value) {
|
|
147
|
+
observer.value = spec.create(emitDirectly, toValue(options));
|
|
148
|
+
if (!observer.value) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
observed = [];
|
|
152
|
+
}
|
|
153
|
+
spec.sync(observer.value, observed, newTargets, toValue(options));
|
|
154
|
+
observed = newTargets;
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
immediate: true,
|
|
158
|
+
flush: "post"
|
|
159
|
+
}
|
|
160
|
+
);
|
|
161
|
+
function stop() {
|
|
162
|
+
cleanup();
|
|
163
|
+
unwatch();
|
|
164
|
+
}
|
|
165
|
+
onScopeDispose(() => {
|
|
166
|
+
stop();
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
observer,
|
|
170
|
+
stop
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SwipeCellCloseTrigger } from '../../components/swipe-cell/types';
|
|
2
|
+
export type SwipeCellEntry = {
|
|
3
|
+
getGroup: () => string;
|
|
4
|
+
close: (trigger: SwipeCellCloseTrigger) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare function registerSwipeCell(entry: SwipeCellEntry): () => void;
|
|
7
|
+
export declare function exclusiveOpen(self: SwipeCellEntry): void;
|