@xihan-ui/vue 1.0.0-alpha.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2615 -0
- package/README.md +1 -1
- package/dist/backgrounds.d.ts.map +1 -1
- package/dist/backgrounds.js +1 -5
- package/dist/backgrounds.js.map +1 -1
- package/dist/behavior.d.ts +38 -0
- package/dist/behavior.d.ts.map +1 -0
- package/dist/behavior.js +74 -0
- package/dist/behavior.js.map +1 -0
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/accordion/accordion.js +15 -2
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/accordion/context.js +2 -2
- package/dist/components/accordion/context.js.map +1 -1
- package/dist/components/accordion/use-accordion.d.ts +3 -0
- package/dist/components/accordion/use-accordion.d.ts.map +1 -1
- package/dist/components/accordion/use-accordion.js +14 -3
- package/dist/components/accordion/use-accordion.js.map +1 -1
- package/dist/components/affix/context.js +1 -1
- package/dist/components/affix/context.js.map +1 -1
- package/dist/components/alert/context.js +1 -1
- package/dist/components/alert/context.js.map +1 -1
- package/dist/components/anchor/anchor.d.ts +1 -1
- package/dist/components/anchor/context.js +1 -1
- package/dist/components/anchor/context.js.map +1 -1
- package/dist/components/avatar/context.js +1 -1
- package/dist/components/avatar/context.js.map +1 -1
- package/dist/components/avatar-group/avatar-group.d.ts.map +1 -1
- package/dist/components/avatar-group/avatar-group.js +2 -1
- package/dist/components/avatar-group/avatar-group.js.map +1 -1
- package/dist/components/avatar-group/context.js +1 -1
- package/dist/components/avatar-group/context.js.map +1 -1
- package/dist/components/back-top/back-top.d.ts +1 -1
- package/dist/components/back-top/context.js +1 -1
- package/dist/components/back-top/context.js.map +1 -1
- package/dist/components/badge/badge.d.ts +159 -11
- package/dist/components/badge/badge.d.ts.map +1 -1
- package/dist/components/badge/badge.js +68 -8
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/badge/context.js +15 -0
- package/dist/components/badge/context.js.map +1 -0
- package/dist/components/breadcrumb/context.js +1 -1
- package/dist/components/breadcrumb/context.js.map +1 -1
- package/dist/components/button-group/button-group.d.ts.map +1 -1
- package/dist/components/button-group/button-group.js +2 -1
- package/dist/components/button-group/button-group.js.map +1 -1
- package/dist/components/button.d.ts +13 -6
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js +11 -2
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar/calendar.d.ts +167 -7
- package/dist/components/calendar/calendar.d.ts.map +1 -1
- package/dist/components/calendar/calendar.js +125 -16
- package/dist/components/calendar/calendar.js.map +1 -1
- package/dist/components/calendar/context.js +2 -2
- package/dist/components/calendar/context.js.map +1 -1
- package/dist/components/calendar/use-calendar.d.ts +1 -1
- package/dist/components/calendar/use-calendar.d.ts.map +1 -1
- package/dist/components/calendar/use-calendar.js +3 -2
- package/dist/components/calendar/use-calendar.js.map +1 -1
- package/dist/components/card/card.d.ts +1 -1
- package/dist/components/card/card.d.ts.map +1 -1
- package/dist/components/card/card.js +2 -1
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/card/context.js +1 -1
- package/dist/components/card/context.js.map +1 -1
- package/dist/components/carousel/context.js +1 -1
- package/dist/components/carousel/context.js.map +1 -1
- package/dist/components/cascader/cascader.d.ts +7 -4
- package/dist/components/cascader/cascader.d.ts.map +1 -1
- package/dist/components/cascader/cascader.js +28 -9
- package/dist/components/cascader/cascader.js.map +1 -1
- package/dist/components/cascader/context.js +2 -2
- package/dist/components/cascader/context.js.map +1 -1
- package/dist/components/cascader/use-cascader.d.ts +4 -0
- package/dist/components/cascader/use-cascader.d.ts.map +1 -1
- package/dist/components/cascader/use-cascader.js +15 -4
- package/dist/components/cascader/use-cascader.js.map +1 -1
- package/dist/components/checkbox/checkbox.d.ts +17 -3
- package/dist/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/checkbox.js +12 -2
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/checkbox-group/context.js +2 -2
- package/dist/components/checkbox-group/context.js.map +1 -1
- package/dist/components/clipboard/context.js +1 -1
- package/dist/components/clipboard/context.js.map +1 -1
- package/dist/components/code-block/code-block.d.ts +3 -0
- package/dist/components/code-block/code-block.d.ts.map +1 -1
- package/dist/components/code-block/code-block.js +2 -0
- package/dist/components/code-block/code-block.js.map +1 -1
- package/dist/components/collapsible/collapsible.d.ts +10 -2
- package/dist/components/collapsible/collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/collapsible.js +21 -3
- package/dist/components/collapsible/collapsible.js.map +1 -1
- package/dist/components/collapsible/context.js +1 -1
- package/dist/components/collapsible/context.js.map +1 -1
- package/dist/components/collapsible/use-collapsible.d.ts +4 -1
- package/dist/components/collapsible/use-collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/use-collapsible.js +22 -4
- package/dist/components/collapsible/use-collapsible.js.map +1 -1
- package/dist/components/color-picker/color-picker.d.ts +16 -4
- package/dist/components/color-picker/color-picker.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker.js +21 -6
- package/dist/components/color-picker/color-picker.js.map +1 -1
- package/dist/components/color-picker/context.js +2 -2
- package/dist/components/color-picker/context.js.map +1 -1
- package/dist/components/color-picker/use-color-picker.d.ts +4 -0
- package/dist/components/color-picker/use-color-picker.d.ts.map +1 -1
- package/dist/components/color-picker/use-color-picker.js +14 -3
- package/dist/components/color-picker/use-color-picker.js.map +1 -1
- package/dist/components/combobox/combobox.d.ts +15 -1
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/combobox.js +26 -12
- package/dist/components/combobox/combobox.js.map +1 -1
- package/dist/components/combobox/context.js +3 -3
- package/dist/components/combobox/context.js.map +1 -1
- package/dist/components/combobox/use-combobox.d.ts +4 -0
- package/dist/components/combobox/use-combobox.d.ts.map +1 -1
- package/dist/components/combobox/use-combobox.js +15 -4
- package/dist/components/combobox/use-combobox.js.map +1 -1
- package/dist/components/composer/context.js +1 -1
- package/dist/components/composer/context.js.map +1 -1
- package/dist/components/context-menu/context-menu.d.ts +45 -4
- package/dist/components/context-menu/context-menu.d.ts.map +1 -1
- package/dist/components/context-menu/context-menu.js +63 -17
- package/dist/components/context-menu/context-menu.js.map +1 -1
- package/dist/components/context-menu/context.js +5 -5
- package/dist/components/context-menu/context.js.map +1 -1
- package/dist/components/context-menu/use-context-menu.d.ts +4 -0
- package/dist/components/context-menu/use-context-menu.d.ts.map +1 -1
- package/dist/components/context-menu/use-context-menu.js +15 -4
- package/dist/components/context-menu/use-context-menu.js.map +1 -1
- package/dist/components/date-field/context.js +1 -1
- package/dist/components/date-field/context.js.map +1 -1
- package/dist/components/date-field/date-field.d.ts +38 -10
- package/dist/components/date-field/date-field.d.ts.map +1 -1
- package/dist/components/date-field/date-field.js +35 -9
- package/dist/components/date-field/date-field.js.map +1 -1
- package/dist/components/date-picker/context.js +17 -8
- package/dist/components/date-picker/context.js.map +1 -1
- package/dist/components/date-picker/date-picker.d.ts +291 -16
- package/dist/components/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/date-picker.js +248 -36
- package/dist/components/date-picker/date-picker.js.map +1 -1
- package/dist/components/date-picker/use-date-picker.d.ts +5 -1
- package/dist/components/date-picker/use-date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/use-date-picker.js +15 -4
- package/dist/components/date-picker/use-date-picker.js.map +1 -1
- package/dist/components/descriptions/context.js +1 -1
- package/dist/components/descriptions/context.js.map +1 -1
- package/dist/components/descriptions/descriptions.d.ts.map +1 -1
- package/dist/components/descriptions/descriptions.js +6 -4
- package/dist/components/descriptions/descriptions.js.map +1 -1
- package/dist/components/dialog/context.js +1 -1
- package/dist/components/dialog/context.js.map +1 -1
- package/dist/components/dialog/dialog.d.ts +20 -3
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/dialog.js +23 -6
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/use-dialog.d.ts +2 -0
- package/dist/components/dialog/use-dialog.d.ts.map +1 -1
- package/dist/components/dialog/use-dialog.js +9 -4
- package/dist/components/dialog/use-dialog.js.map +1 -1
- package/dist/components/download-trigger/download-trigger.d.ts +66 -0
- package/dist/components/download-trigger/download-trigger.d.ts.map +1 -0
- package/dist/components/download-trigger/download-trigger.js +56 -0
- package/dist/components/download-trigger/download-trigger.js.map +1 -0
- package/dist/components/download-trigger/use-download-trigger.d.ts +10 -0
- package/dist/components/download-trigger/use-download-trigger.d.ts.map +1 -0
- package/dist/components/download-trigger/use-download-trigger.js +16 -0
- package/dist/components/download-trigger/use-download-trigger.js.map +1 -0
- package/dist/components/drawer/context.js +1 -1
- package/dist/components/drawer/context.js.map +1 -1
- package/dist/components/drawer/drawer.d.ts +52 -4
- package/dist/components/drawer/drawer.d.ts.map +1 -1
- package/dist/components/drawer/drawer.js +39 -7
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/drawer/use-drawer.d.ts +3 -1
- package/dist/components/drawer/use-drawer.d.ts.map +1 -1
- package/dist/components/drawer/use-drawer.js +11 -5
- package/dist/components/drawer/use-drawer.js.map +1 -1
- package/dist/components/dynamic-input/context.js +2 -2
- package/dist/components/dynamic-input/context.js.map +1 -1
- package/dist/components/dynamic-input/dynamic-input.d.ts +2 -2
- package/dist/components/dynamic-input/dynamic-input.d.ts.map +1 -1
- package/dist/components/dynamic-input/dynamic-input.js +4 -4
- package/dist/components/dynamic-input/dynamic-input.js.map +1 -1
- package/dist/components/editable/context.js +1 -1
- package/dist/components/editable/context.js.map +1 -1
- package/dist/components/ellipsis/ellipsis.d.ts +1 -1
- package/dist/components/empty-state/context.js +1 -1
- package/dist/components/empty-state/context.js.map +1 -1
- package/dist/components/empty-state/empty-state.d.ts.map +1 -1
- package/dist/components/empty-state/empty-state.js +2 -1
- package/dist/components/empty-state/empty-state.js.map +1 -1
- package/dist/components/field/context.d.ts +9 -0
- package/dist/components/field/context.d.ts.map +1 -0
- package/dist/components/field/context.js +6 -2
- package/dist/components/field/context.js.map +1 -1
- package/dist/components/field/field.d.ts +35 -2
- package/dist/components/field/field.d.ts.map +1 -1
- package/dist/components/field/field.js +31 -4
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/field/use-field-control.d.ts +41 -0
- package/dist/components/field/use-field-control.d.ts.map +1 -0
- package/dist/components/field/use-field-control.js +77 -0
- package/dist/components/field/use-field-control.js.map +1 -0
- package/dist/components/fieldset/context.d.ts +6 -0
- package/dist/components/fieldset/context.d.ts.map +1 -0
- package/dist/components/fieldset/context.js +15 -0
- package/dist/components/fieldset/context.js.map +1 -0
- package/dist/components/fieldset/fieldset.d.ts +57 -0
- package/dist/components/fieldset/fieldset.d.ts.map +1 -0
- package/dist/components/fieldset/fieldset.js +56 -0
- package/dist/components/fieldset/fieldset.js.map +1 -0
- package/dist/components/fieldset/use-fieldset.d.ts +10 -0
- package/dist/components/fieldset/use-fieldset.d.ts.map +1 -0
- package/dist/components/fieldset/use-fieldset.js +14 -0
- package/dist/components/fieldset/use-fieldset.js.map +1 -0
- package/dist/components/file-upload/context.js +2 -2
- package/dist/components/file-upload/context.js.map +1 -1
- package/dist/components/file-upload/file-upload.d.ts +11 -3
- package/dist/components/file-upload/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload/file-upload.js +15 -3
- package/dist/components/file-upload/file-upload.js.map +1 -1
- package/dist/components/flex/flex.d.ts +10 -1
- package/dist/components/flex/flex.d.ts.map +1 -1
- package/dist/components/flex/flex.js +4 -0
- package/dist/components/flex/flex.js.map +1 -1
- package/dist/components/float-button/context.js +1 -1
- package/dist/components/float-button/context.js.map +1 -1
- package/dist/components/float-button/float-button.d.ts +2 -2
- package/dist/components/floating-panel/context.d.ts +6 -0
- package/dist/components/floating-panel/context.d.ts.map +1 -0
- package/dist/components/floating-panel/context.js +15 -0
- package/dist/components/floating-panel/context.js.map +1 -0
- package/dist/components/floating-panel/floating-panel.d.ts +216 -0
- package/dist/components/floating-panel/floating-panel.d.ts.map +1 -0
- package/dist/components/floating-panel/floating-panel.js +202 -0
- package/dist/components/floating-panel/floating-panel.js.map +1 -0
- package/dist/components/floating-panel/use-floating-panel.d.ts +18 -0
- package/dist/components/floating-panel/use-floating-panel.d.ts.map +1 -0
- package/dist/components/floating-panel/use-floating-panel.js +28 -0
- package/dist/components/floating-panel/use-floating-panel.js.map +1 -0
- package/dist/components/form/context.js +2 -2
- package/dist/components/form/context.js.map +1 -1
- package/dist/components/form/form.d.ts +1 -1
- package/dist/components/grid/context.js +1 -1
- package/dist/components/grid/context.js.map +1 -1
- package/dist/components/heatmap/context.d.ts +7 -0
- package/dist/components/heatmap/context.d.ts.map +1 -0
- package/dist/components/heatmap/context.js +32 -0
- package/dist/components/heatmap/context.js.map +1 -0
- package/dist/components/heatmap/heatmap.d.ts +352 -0
- package/dist/components/heatmap/heatmap.d.ts.map +1 -0
- package/dist/components/heatmap/heatmap.js +374 -0
- package/dist/components/heatmap/heatmap.js.map +1 -0
- package/dist/components/heatmap/use-heatmap.d.ts +13 -0
- package/dist/components/heatmap/use-heatmap.d.ts.map +1 -0
- package/dist/components/heatmap/use-heatmap.js +20 -0
- package/dist/components/heatmap/use-heatmap.js.map +1 -0
- package/dist/components/hotkeys/hotkeys.d.ts +89 -0
- package/dist/components/hotkeys/hotkeys.d.ts.map +1 -0
- package/dist/components/hotkeys/hotkeys.js +83 -0
- package/dist/components/hotkeys/hotkeys.js.map +1 -0
- package/dist/components/hotkeys/use-hotkeys.d.ts +31 -0
- package/dist/components/hotkeys/use-hotkeys.d.ts.map +1 -0
- package/dist/components/hotkeys/use-hotkeys.js +60 -0
- package/dist/components/hotkeys/use-hotkeys.js.map +1 -0
- package/dist/components/hover-card/context.js +1 -1
- package/dist/components/hover-card/context.js.map +1 -1
- package/dist/components/hover-card/hover-card.d.ts +11 -3
- package/dist/components/hover-card/hover-card.d.ts.map +1 -1
- package/dist/components/hover-card/hover-card.js +27 -11
- package/dist/components/hover-card/hover-card.js.map +1 -1
- package/dist/components/hover-card/use-hover-card.d.ts +4 -0
- package/dist/components/hover-card/use-hover-card.d.ts.map +1 -1
- package/dist/components/hover-card/use-hover-card.js +15 -4
- package/dist/components/hover-card/use-hover-card.js.map +1 -1
- package/dist/components/icon/icon.d.ts.map +1 -1
- package/dist/components/icon/icon.js +2 -1
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/icon-wrapper/icon-wrapper.d.ts.map +1 -1
- package/dist/components/icon-wrapper/icon-wrapper.js +2 -1
- package/dist/components/icon-wrapper/icon-wrapper.js.map +1 -1
- package/dist/components/image/context.js +1 -1
- package/dist/components/image/context.js.map +1 -1
- package/dist/components/image-cropper/context.d.ts +6 -0
- package/dist/components/image-cropper/context.d.ts.map +1 -0
- package/dist/components/image-cropper/context.js +15 -0
- package/dist/components/image-cropper/context.js.map +1 -0
- package/dist/components/image-cropper/image-cropper.d.ts +195 -0
- package/dist/components/image-cropper/image-cropper.d.ts.map +1 -0
- package/dist/components/image-cropper/image-cropper.js +165 -0
- package/dist/components/image-cropper/image-cropper.js.map +1 -0
- package/dist/components/image-cropper/use-image-cropper.d.ts +15 -0
- package/dist/components/image-cropper/use-image-cropper.d.ts.map +1 -0
- package/dist/components/image-cropper/use-image-cropper.js +22 -0
- package/dist/components/image-cropper/use-image-cropper.js.map +1 -0
- package/dist/components/image-viewer/context.js +1 -1
- package/dist/components/image-viewer/context.js.map +1 -1
- package/dist/components/image-viewer/image-viewer.d.ts +13 -5
- package/dist/components/image-viewer/image-viewer.d.ts.map +1 -1
- package/dist/components/image-viewer/image-viewer.js +29 -16
- package/dist/components/image-viewer/image-viewer.js.map +1 -1
- package/dist/components/image-viewer/use-image-viewer.d.ts +2 -0
- package/dist/components/image-viewer/use-image-viewer.d.ts.map +1 -1
- package/dist/components/image-viewer/use-image-viewer.js +9 -4
- package/dist/components/image-viewer/use-image-viewer.js.map +1 -1
- package/dist/components/infinite-scroll/context.js +1 -1
- package/dist/components/infinite-scroll/context.js.map +1 -1
- package/dist/components/json-viewer/json-viewer.d.ts +129 -0
- package/dist/components/json-viewer/json-viewer.d.ts.map +1 -0
- package/dist/components/json-viewer/json-viewer.js +132 -0
- package/dist/components/json-viewer/json-viewer.js.map +1 -0
- package/dist/components/json-viewer/use-json-viewer.d.ts +13 -0
- package/dist/components/json-viewer/use-json-viewer.d.ts.map +1 -0
- package/dist/components/json-viewer/use-json-viewer.js +19 -0
- package/dist/components/json-viewer/use-json-viewer.js.map +1 -0
- package/dist/components/layout/context.js +1 -1
- package/dist/components/layout/context.js.map +1 -1
- package/dist/components/list/context.js +1 -1
- package/dist/components/list/context.js.map +1 -1
- package/dist/components/list/list.d.ts +1 -1
- package/dist/components/list/list.d.ts.map +1 -1
- package/dist/components/list/list.js +6 -4
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/listbox/context.js +3 -3
- package/dist/components/listbox/context.js.map +1 -1
- package/dist/components/loading-bar/context.js +1 -1
- package/dist/components/loading-bar/context.js.map +1 -1
- package/dist/components/log/context.js +1 -1
- package/dist/components/log/context.js.map +1 -1
- package/dist/components/marquee/context.js +1 -1
- package/dist/components/marquee/context.js.map +1 -1
- package/dist/components/masonry/masonry.d.ts +41 -0
- package/dist/components/masonry/masonry.d.ts.map +1 -0
- package/dist/components/masonry/masonry.js +159 -0
- package/dist/components/masonry/masonry.js.map +1 -0
- package/dist/components/mention/context.js +2 -2
- package/dist/components/mention/context.js.map +1 -1
- package/dist/components/mention/mention.d.ts +7 -1
- package/dist/components/mention/mention.d.ts.map +1 -1
- package/dist/components/mention/mention.js +18 -8
- package/dist/components/mention/mention.js.map +1 -1
- package/dist/components/mention/use-mention.d.ts +4 -0
- package/dist/components/mention/use-mention.d.ts.map +1 -1
- package/dist/components/mention/use-mention.js +14 -3
- package/dist/components/mention/use-mention.js.map +1 -1
- package/dist/components/menu/context.d.ts +9 -1
- package/dist/components/menu/context.d.ts.map +1 -1
- package/dist/components/menu/context.js +13 -4
- package/dist/components/menu/context.js.map +1 -1
- package/dist/components/menu/menu.d.ts +72 -4
- package/dist/components/menu/menu.d.ts.map +1 -1
- package/dist/components/menu/menu.js +80 -20
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/menu/use-menu.d.ts +4 -0
- package/dist/components/menu/use-menu.d.ts.map +1 -1
- package/dist/components/menu/use-menu.js +15 -4
- package/dist/components/menu/use-menu.js.map +1 -1
- package/dist/components/menubar/context.d.ts +21 -0
- package/dist/components/menubar/context.d.ts.map +1 -0
- package/dist/components/menubar/context.js +23 -5
- package/dist/components/menubar/context.js.map +1 -1
- package/dist/components/menubar/menubar.d.ts +128 -1
- package/dist/components/menubar/menubar.d.ts.map +1 -1
- package/dist/components/menubar/menubar.js +152 -16
- package/dist/components/menubar/menubar.js.map +1 -1
- package/dist/components/menubar/use-menubar.d.ts +2 -0
- package/dist/components/menubar/use-menubar.d.ts.map +1 -1
- package/dist/components/menubar/use-menubar.js +9 -3
- package/dist/components/menubar/use-menubar.js.map +1 -1
- package/dist/components/navigation-menu/context.js +1 -1
- package/dist/components/navigation-menu/context.js.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.js +22 -3
- package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
- package/dist/components/navigation-menu/use-navigation-menu.d.ts +2 -0
- package/dist/components/navigation-menu/use-navigation-menu.d.ts.map +1 -1
- package/dist/components/navigation-menu/use-navigation-menu.js +22 -2
- package/dist/components/navigation-menu/use-navigation-menu.js.map +1 -1
- package/dist/components/notification/context.d.ts +23 -0
- package/dist/components/notification/context.d.ts.map +1 -0
- package/dist/components/notification/context.js +28 -0
- package/dist/components/notification/context.js.map +1 -0
- package/dist/components/notification/notification.d.ts +249 -0
- package/dist/components/notification/notification.d.ts.map +1 -0
- package/dist/components/notification/notification.js +179 -0
- package/dist/components/notification/notification.js.map +1 -0
- package/dist/components/notification/use-notification.d.ts +14 -0
- package/dist/components/notification/use-notification.d.ts.map +1 -0
- package/dist/components/notification/use-notification.js +42 -0
- package/dist/components/notification/use-notification.js.map +1 -0
- package/dist/components/number-animation/number-animation.d.ts +1 -1
- package/dist/components/number-field/context.js +1 -1
- package/dist/components/number-field/context.js.map +1 -1
- package/dist/components/number-field/number-field.d.ts +23 -2
- package/dist/components/number-field/number-field.d.ts.map +1 -1
- package/dist/components/number-field/number-field.js +23 -2
- package/dist/components/number-field/number-field.js.map +1 -1
- package/dist/components/page-header/context.js +1 -1
- package/dist/components/page-header/context.js.map +1 -1
- package/dist/components/page-header/page-header.d.ts.map +1 -1
- package/dist/components/page-header/page-header.js +2 -1
- package/dist/components/page-header/page-header.js.map +1 -1
- package/dist/components/pagination/context.js +1 -1
- package/dist/components/pagination/context.js.map +1 -1
- package/dist/components/pagination/pagination.d.ts +58 -4
- package/dist/components/pagination/pagination.d.ts.map +1 -1
- package/dist/components/pagination/pagination.js +85 -5
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/pagination/use-pagination.d.ts +12 -2
- package/dist/components/pagination/use-pagination.d.ts.map +1 -1
- package/dist/components/pagination/use-pagination.js +50 -5
- package/dist/components/pagination/use-pagination.js.map +1 -1
- package/dist/components/password-input/context.d.ts +6 -0
- package/dist/components/password-input/context.d.ts.map +1 -0
- package/dist/components/password-input/context.js +15 -0
- package/dist/components/password-input/context.js.map +1 -0
- package/dist/components/password-input/password-input.d.ts +179 -0
- package/dist/components/password-input/password-input.d.ts.map +1 -0
- package/dist/components/password-input/password-input.js +147 -0
- package/dist/components/password-input/password-input.js.map +1 -0
- package/dist/components/password-input/use-password-input.d.ts +10 -0
- package/dist/components/password-input/use-password-input.d.ts.map +1 -0
- package/dist/components/password-input/use-password-input.js +18 -0
- package/dist/components/password-input/use-password-input.js.map +1 -0
- package/dist/components/pin-input/context.js +1 -1
- package/dist/components/pin-input/context.js.map +1 -1
- package/dist/components/pin-input/pin-input.d.ts +9 -0
- package/dist/components/pin-input/pin-input.d.ts.map +1 -1
- package/dist/components/pin-input/pin-input.js +4 -0
- package/dist/components/pin-input/pin-input.js.map +1 -1
- package/dist/components/popconfirm/context.js +1 -1
- package/dist/components/popconfirm/context.js.map +1 -1
- package/dist/components/popconfirm/popconfirm.d.ts +11 -3
- package/dist/components/popconfirm/popconfirm.d.ts.map +1 -1
- package/dist/components/popconfirm/popconfirm.js +25 -11
- package/dist/components/popconfirm/popconfirm.js.map +1 -1
- package/dist/components/popconfirm/use-popconfirm.d.ts +4 -0
- package/dist/components/popconfirm/use-popconfirm.d.ts.map +1 -1
- package/dist/components/popconfirm/use-popconfirm.js +14 -3
- package/dist/components/popconfirm/use-popconfirm.js.map +1 -1
- package/dist/components/popover/context.js +1 -1
- package/dist/components/popover/context.js.map +1 -1
- package/dist/components/popover/popover.d.ts +12 -4
- package/dist/components/popover/popover.d.ts.map +1 -1
- package/dist/components/popover/popover.js +27 -11
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/popover/use-popover.d.ts +4 -0
- package/dist/components/popover/use-popover.d.ts.map +1 -1
- package/dist/components/popover/use-popover.js +15 -4
- package/dist/components/popover/use-popover.js.map +1 -1
- package/dist/components/popselect/context.js +2 -2
- package/dist/components/popselect/context.js.map +1 -1
- package/dist/components/popselect/popselect.d.ts +30 -5
- package/dist/components/popselect/popselect.d.ts.map +1 -1
- package/dist/components/popselect/popselect.js +51 -13
- package/dist/components/popselect/popselect.js.map +1 -1
- package/dist/components/popselect/use-popselect.d.ts +6 -1
- package/dist/components/popselect/use-popselect.d.ts.map +1 -1
- package/dist/components/popselect/use-popselect.js +24 -12
- package/dist/components/popselect/use-popselect.js.map +1 -1
- package/dist/components/progress/progress.d.ts +5 -2
- package/dist/components/progress/progress.d.ts.map +1 -1
- package/dist/components/progress/progress.js +4 -1
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/qr-code/context.js +1 -1
- package/dist/components/qr-code/context.js.map +1 -1
- package/dist/components/radio-group/context.js +2 -2
- package/dist/components/radio-group/context.js.map +1 -1
- package/dist/components/radio-group/radio-group.d.ts +9 -0
- package/dist/components/radio-group/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group/radio-group.js +3 -0
- package/dist/components/radio-group/radio-group.js.map +1 -1
- package/dist/components/rating/context.js +1 -1
- package/dist/components/rating/context.js.map +1 -1
- package/dist/components/result/context.js +1 -1
- package/dist/components/result/context.js.map +1 -1
- package/dist/components/result/result.d.ts.map +1 -1
- package/dist/components/result/result.js +3 -1
- package/dist/components/result/result.js.map +1 -1
- package/dist/components/scroll-area/context.js +2 -2
- package/dist/components/scroll-area/context.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.d.ts +28 -9
- package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
- package/dist/components/scroll-area/scroll-area.js +24 -4
- package/dist/components/scroll-area/scroll-area.js.map +1 -1
- package/dist/components/scroll-area/use-scroll-area.d.ts +10 -8
- package/dist/components/scroll-area/use-scroll-area.d.ts.map +1 -1
- package/dist/components/scroll-area/use-scroll-area.js +24 -10
- package/dist/components/scroll-area/use-scroll-area.js.map +1 -1
- package/dist/components/scrollbar/context.d.ts +7 -0
- package/dist/components/scrollbar/context.d.ts.map +1 -0
- package/dist/components/scrollbar/context.js +15 -0
- package/dist/components/scrollbar/context.js.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +162 -0
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
- package/dist/components/scrollbar/scrollbar.js +129 -0
- package/dist/components/scrollbar/scrollbar.js.map +1 -0
- package/dist/components/scrollbar/use-scrollbar.d.ts +23 -0
- package/dist/components/scrollbar/use-scrollbar.d.ts.map +1 -0
- package/dist/components/scrollbar/use-scrollbar.js +43 -0
- package/dist/components/scrollbar/use-scrollbar.js.map +1 -0
- package/dist/components/segmented/context.d.ts +13 -0
- package/dist/components/segmented/context.d.ts.map +1 -0
- package/dist/components/segmented/context.js +24 -0
- package/dist/components/segmented/context.js.map +1 -0
- package/dist/components/segmented/segmented.d.ts +185 -0
- package/dist/components/segmented/segmented.d.ts.map +1 -0
- package/dist/components/segmented/segmented.js +165 -0
- package/dist/components/segmented/segmented.js.map +1 -0
- package/dist/components/segmented/use-segmented.d.ts +15 -0
- package/dist/components/segmented/use-segmented.d.ts.map +1 -0
- package/dist/components/segmented/use-segmented.js +22 -0
- package/dist/components/segmented/use-segmented.js.map +1 -0
- package/dist/components/select/context.js +3 -3
- package/dist/components/select/context.js.map +1 -1
- package/dist/components/select/select.d.ts +26 -4
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/select/select.js +45 -17
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/select/use-select.d.ts +4 -0
- package/dist/components/select/use-select.d.ts.map +1 -1
- package/dist/components/select/use-select.js +14 -3
- package/dist/components/select/use-select.js.map +1 -1
- package/dist/components/separator/separator.d.ts.map +1 -1
- package/dist/components/separator/separator.js +11 -2
- package/dist/components/separator/separator.js.map +1 -1
- package/dist/components/side-nav/context.js +2 -2
- package/dist/components/side-nav/context.js.map +1 -1
- package/dist/components/side-nav/side-nav.d.ts +6 -3
- package/dist/components/side-nav/side-nav.d.ts.map +1 -1
- package/dist/components/side-nav/side-nav.js +32 -4
- package/dist/components/side-nav/side-nav.js.map +1 -1
- package/dist/components/side-nav/use-side-nav.d.ts +5 -0
- package/dist/components/side-nav/use-side-nav.d.ts.map +1 -1
- package/dist/components/side-nav/use-side-nav.js +12 -1
- package/dist/components/side-nav/use-side-nav.js.map +1 -1
- package/dist/components/signature-pad/context.d.ts +6 -0
- package/dist/components/signature-pad/context.d.ts.map +1 -0
- package/dist/components/signature-pad/context.js +15 -0
- package/dist/components/signature-pad/context.js.map +1 -0
- package/dist/components/signature-pad/signature-pad.d.ts +108 -0
- package/dist/components/signature-pad/signature-pad.d.ts.map +1 -0
- package/dist/components/signature-pad/signature-pad.js +118 -0
- package/dist/components/signature-pad/signature-pad.js.map +1 -0
- package/dist/components/signature-pad/use-signature-pad.d.ts +14 -0
- package/dist/components/signature-pad/use-signature-pad.d.ts.map +1 -0
- package/dist/components/signature-pad/use-signature-pad.js +24 -0
- package/dist/components/signature-pad/use-signature-pad.js.map +1 -0
- package/dist/components/skeleton/context.js +1 -1
- package/dist/components/skeleton/context.js.map +1 -1
- package/dist/components/slider/context.js +2 -2
- package/dist/components/slider/context.js.map +1 -1
- package/dist/components/space/context.d.ts +10 -0
- package/dist/components/space/context.d.ts.map +1 -0
- package/dist/components/space/context.js +15 -0
- package/dist/components/space/context.js.map +1 -0
- package/dist/components/space/space.d.ts +75 -0
- package/dist/components/space/space.d.ts.map +1 -0
- package/dist/components/space/space.js +91 -0
- package/dist/components/space/space.js.map +1 -0
- package/dist/components/spinner/context.js +1 -1
- package/dist/components/spinner/context.js.map +1 -1
- package/dist/components/splitter/context.js +1 -1
- package/dist/components/splitter/context.js.map +1 -1
- package/dist/components/splitter/splitter.d.ts +1 -1
- package/dist/components/statistic/context.js +1 -1
- package/dist/components/statistic/context.js.map +1 -1
- package/dist/components/statistic/statistic.d.ts.map +1 -1
- package/dist/components/statistic/statistic.js +2 -1
- package/dist/components/statistic/statistic.js.map +1 -1
- package/dist/components/steps/context.js +2 -2
- package/dist/components/steps/context.js.map +1 -1
- package/dist/components/steps/steps.d.ts +1 -1
- package/dist/components/switch/switch.d.ts +9 -0
- package/dist/components/switch/switch.d.ts.map +1 -1
- package/dist/components/switch/switch.js +11 -2
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/context.js +4 -4
- package/dist/components/table/context.js.map +1 -1
- package/dist/components/table/table.d.ts +70 -2
- package/dist/components/table/table.d.ts.map +1 -1
- package/dist/components/table/table.js +40 -1
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/use-table.d.ts +1 -1
- package/dist/components/table/use-table.d.ts.map +1 -1
- package/dist/components/table/use-table.js +3 -2
- package/dist/components/table/use-table.js.map +1 -1
- package/dist/components/tabs/context.js +1 -1
- package/dist/components/tabs/context.js.map +1 -1
- package/dist/components/tag/context.d.ts +6 -0
- package/dist/components/tag/context.d.ts.map +1 -0
- package/dist/components/tag/context.js +15 -0
- package/dist/components/tag/context.js.map +1 -0
- package/dist/components/tag/tag.d.ts +71 -0
- package/dist/components/tag/tag.d.ts.map +1 -0
- package/dist/components/tag/tag.js +61 -0
- package/dist/components/tag/tag.js.map +1 -0
- package/dist/components/tag/use-tag.d.ts +10 -0
- package/dist/components/tag/use-tag.d.ts.map +1 -0
- package/dist/components/tag/use-tag.js +28 -0
- package/dist/components/tag/use-tag.js.map +1 -0
- package/dist/components/tags-input/context.js +2 -2
- package/dist/components/tags-input/context.js.map +1 -1
- package/dist/components/tags-input/tags-input.d.ts +2 -2
- package/dist/components/tags-input/tags-input.d.ts.map +1 -1
- package/dist/components/tags-input/tags-input.js +7 -1
- package/dist/components/tags-input/tags-input.js.map +1 -1
- package/dist/components/text-field/context.js +1 -1
- package/dist/components/text-field/context.js.map +1 -1
- package/dist/components/text-field/text-field.d.ts +24 -3
- package/dist/components/text-field/text-field.d.ts.map +1 -1
- package/dist/components/text-field/text-field.js +23 -4
- package/dist/components/text-field/text-field.js.map +1 -1
- package/dist/components/thread/context.d.ts +7 -0
- package/dist/components/thread/context.d.ts.map +1 -0
- package/dist/components/thread/context.js +1 -1
- package/dist/components/thread/context.js.map +1 -1
- package/dist/components/time/time.d.ts +4 -4
- package/dist/components/time/time.d.ts.map +1 -1
- package/dist/components/time/time.js.map +1 -1
- package/dist/components/time-field/context.js +1 -1
- package/dist/components/time-field/context.js.map +1 -1
- package/dist/components/time-field/time-field.d.ts +18 -3
- package/dist/components/time-field/time-field.d.ts.map +1 -1
- package/dist/components/time-field/time-field.js +20 -1
- package/dist/components/time-field/time-field.js.map +1 -1
- package/dist/components/time-picker/context.js +2 -2
- package/dist/components/time-picker/context.js.map +1 -1
- package/dist/components/time-picker/time-picker.d.ts +93 -6
- package/dist/components/time-picker/time-picker.d.ts.map +1 -1
- package/dist/components/time-picker/time-picker.js +89 -9
- package/dist/components/time-picker/time-picker.js.map +1 -1
- package/dist/components/time-picker/use-time-picker.d.ts +5 -0
- package/dist/components/time-picker/use-time-picker.d.ts.map +1 -1
- package/dist/components/time-picker/use-time-picker.js +17 -3
- package/dist/components/time-picker/use-time-picker.js.map +1 -1
- package/dist/components/timeline/context.js +2 -2
- package/dist/components/timeline/context.js.map +1 -1
- package/dist/components/timeline/timeline.d.ts.map +1 -1
- package/dist/components/timeline/timeline.js +2 -1
- package/dist/components/timeline/timeline.js.map +1 -1
- package/dist/components/timer/context.d.ts +6 -0
- package/dist/components/timer/context.d.ts.map +1 -0
- package/dist/components/timer/context.js +15 -0
- package/dist/components/timer/context.js.map +1 -0
- package/dist/components/timer/timer.d.ts +110 -0
- package/dist/components/timer/timer.d.ts.map +1 -0
- package/dist/components/timer/timer.js +139 -0
- package/dist/components/timer/timer.js.map +1 -0
- package/dist/components/timer/use-timer.d.ts +13 -0
- package/dist/components/timer/use-timer.d.ts.map +1 -0
- package/dist/components/timer/use-timer.js +19 -0
- package/dist/components/timer/use-timer.js.map +1 -0
- package/dist/components/toast/context.js +1 -1
- package/dist/components/toast/context.js.map +1 -1
- package/dist/components/toast/toast.d.ts +3 -15
- package/dist/components/toast/toast.d.ts.map +1 -1
- package/dist/components/toast/toast.js +1 -12
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toast/use-toast.d.ts.map +1 -1
- package/dist/components/toast/use-toast.js +1 -7
- package/dist/components/toast/use-toast.js.map +1 -1
- package/dist/components/toggle-group/context.js +1 -1
- package/dist/components/toggle-group/context.js.map +1 -1
- package/dist/components/toggle-group/toggle-group.d.ts +10 -1
- package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
- package/dist/components/toggle-group/toggle-group.js +4 -0
- package/dist/components/toggle-group/toggle-group.js.map +1 -1
- package/dist/components/toolbar/context.js +1 -1
- package/dist/components/toolbar/context.js.map +1 -1
- package/dist/components/tooltip/context.js +1 -1
- package/dist/components/tooltip/context.js.map +1 -1
- package/dist/components/tooltip/tooltip.d.ts +11 -3
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip.js +31 -12
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/tooltip/use-tooltip.d.ts +6 -0
- package/dist/components/tooltip/use-tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/use-tooltip.js +36 -5
- package/dist/components/tooltip/use-tooltip.js.map +1 -1
- package/dist/components/tour/context.js +1 -1
- package/dist/components/tour/context.js.map +1 -1
- package/dist/components/tour/tour.d.ts +3 -3
- package/dist/components/tour/tour.d.ts.map +1 -1
- package/dist/components/tour/tour.js +20 -11
- package/dist/components/tour/tour.js.map +1 -1
- package/dist/components/tour/use-tour.d.ts +6 -0
- package/dist/components/tour/use-tour.d.ts.map +1 -1
- package/dist/components/tour/use-tour.js +18 -3
- package/dist/components/tour/use-tour.js.map +1 -1
- package/dist/components/transfer/context.js +3 -3
- package/dist/components/transfer/context.js.map +1 -1
- package/dist/components/transfer/transfer.d.ts +10 -10
- package/dist/components/transfer/transfer.d.ts.map +1 -1
- package/dist/components/transfer/transfer.js +8 -8
- package/dist/components/transfer/transfer.js.map +1 -1
- package/dist/components/tree/context.js +2 -2
- package/dist/components/tree/context.js.map +1 -1
- package/dist/components/tree/tree.d.ts +36 -10
- package/dist/components/tree/tree.d.ts.map +1 -1
- package/dist/components/tree/tree.js +31 -6
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree-select/context.js +2 -2
- package/dist/components/tree-select/context.js.map +1 -1
- package/dist/components/tree-select/tree-select.d.ts +23 -3
- package/dist/components/tree-select/tree-select.d.ts.map +1 -1
- package/dist/components/tree-select/tree-select.js +60 -12
- package/dist/components/tree-select/tree-select.js.map +1 -1
- package/dist/components/tree-select/use-tree-select.d.ts +4 -0
- package/dist/components/tree-select/use-tree-select.d.ts.map +1 -1
- package/dist/components/tree-select/use-tree-select.js +15 -4
- package/dist/components/tree-select/use-tree-select.js.map +1 -1
- package/dist/components/typography/context.js +1 -1
- package/dist/components/typography/context.js.map +1 -1
- package/dist/components/typography/typography.d.ts.map +1 -1
- package/dist/components/typography/typography.js +2 -1
- package/dist/components/typography/typography.js.map +1 -1
- package/dist/components/virtualizer/context.js +1 -1
- package/dist/components/virtualizer/context.js.map +1 -1
- package/dist/components/watermark/context.js +1 -1
- package/dist/components/watermark/context.js.map +1 -1
- package/dist/config/config.d.ts +26 -10
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +42 -15
- package/dist/config/config.js.map +1 -1
- package/dist/index.d.ts +75 -29
- package/dist/index.js +74 -28
- package/dist/package.js +6 -0
- package/dist/package.js.map +1 -0
- package/dist/runtime/as-child.js +66 -0
- package/dist/runtime/as-child.js.map +1 -0
- package/dist/runtime/config-defaults.js +19 -0
- package/dist/runtime/config-defaults.js.map +1 -0
- package/dist/runtime/normalize-props.d.ts.map +1 -1
- package/dist/runtime/normalize-props.js +5 -1
- package/dist/runtime/normalize-props.js.map +1 -1
- package/dist/runtime/use-machine.d.ts.map +1 -1
- package/dist/runtime/use-machine.js +17 -1
- package/dist/runtime/use-machine.js.map +1 -1
- package/dist/runtime/use-overlay-exit.js +40 -0
- package/dist/runtime/use-overlay-exit.js.map +1 -0
- package/dist/runtime/use-scrollbars.js +66 -0
- package/dist/runtime/use-scrollbars.js.map +1 -0
- package/dist/services/dialog-service.d.ts +43 -8
- package/dist/services/dialog-service.d.ts.map +1 -1
- package/dist/services/dialog-service.js +47 -20
- package/dist/services/dialog-service.js.map +1 -1
- package/dist/services/glyph.js +93 -20
- package/dist/services/glyph.js.map +1 -1
- package/dist/services/loading-bar-service.d.ts +46 -0
- package/dist/services/loading-bar-service.d.ts.map +1 -0
- package/dist/services/loading-bar-service.js +70 -0
- package/dist/services/loading-bar-service.js.map +1 -0
- package/dist/services/mount-host.js +35 -0
- package/dist/services/mount-host.js.map +1 -0
- package/dist/services/notification-service.d.ts +46 -0
- package/dist/services/notification-service.d.ts.map +1 -0
- package/dist/services/notification-service.js +91 -0
- package/dist/services/notification-service.js.map +1 -0
- package/dist/services/service-config.js +16 -0
- package/dist/services/service-config.js.map +1 -0
- package/dist/services/toast-service.d.ts +23 -9
- package/dist/services/toast-service.d.ts.map +1 -1
- package/dist/services/toast-service.js +103 -48
- package/dist/services/toast-service.js.map +1 -1
- package/package.json +18 -14
- package/dist/components/toaster/context.js +0 -19
- package/dist/components/toaster/context.js.map +0 -1
- package/dist/components/toaster/toaster.d.ts +0 -135
- package/dist/components/toaster/toaster.d.ts.map +0 -1
- package/dist/components/toaster/toaster.js +0 -91
- package/dist/components/toaster/toaster.js.map +0 -1
- package/dist/components/toaster/use-toaster.d.ts +0 -15
- package/dist/components/toaster/use-toaster.d.ts.map +0 -1
- package/dist/components/toaster/use-toaster.js +0 -23
- package/dist/components/toaster/use-toaster.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @xihan-ui/vue
|
|
2
2
|
|
|
3
|
-
Vue 3 适配器:
|
|
3
|
+
Vue 3 适配器:119 个组件的 Vue 形态,外加对应的 composables。行为全部来自 `@xihan-ui/headless`,这一层只负责把它接到 Vue 的响应式与渲染上。
|
|
4
4
|
|
|
5
5
|
**谁会装它**:在 Vue 里用这套组件的人装它。样式另装 `@xihan-ui/styles`,或者自己写。
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backgrounds.d.ts","names":[],"sources":["../src/backgrounds.ts"],"mappings":";;;UA4BiB;EACf,QAAQ;EACR,SAAS,eAAe;EACxB,UAAU;;EAEV;;EAEA;;EAEA;;EAEA;;UAGe;WACN,SAAS,WAAW;;;;;EAK7B,SAAS,SAAS;EAClB,YAAY,QAAQ;EACpB,YAAY,OAAO,eAAe;EAClC,WAAW,OAAO,YAAY,UAAU;EACxC;EACA;EACA;;;;;;;;;iBAUc,cAAc,SAAS,uBAAuB;;;;;cAwCjD,4BAAY,8BAAA;;IAGe,MAAA,SAAS;;;;IACnB,MAAA,SAAS,eAAe;;;;IACvB,MAAA,SAAS;;;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAJE,MAAA,SAAS;;;;IACnB,MAAA,SAAS,eAAe;;;;IACvB,MAAA,SAAS;;;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"backgrounds.d.ts","names":[],"sources":["../src/backgrounds.ts"],"mappings":";;;UA4BiB;EACf,QAAQ;EACR,SAAS,eAAe;EACxB,UAAU;;EAEV;;EAEA;;EAEA;;EAEA;;UAGe;WACN,SAAS,WAAW;;;;;EAK7B,SAAS,SAAS;EAClB,YAAY,QAAQ;EACpB,YAAY,OAAO,eAAe;EAClC,WAAW,OAAO,YAAY,UAAU;EACxC;EACA;EACA;;;;;;;;;iBAUc,cAAc,SAAS,uBAAuB;;;;;cAwCjD,4BAAY,8BAAA;;IAGe,MAAA,SAAS;;;;IACnB,MAAA,SAAS,eAAe;;;;IACvB,MAAA,SAAS;;;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAJE,MAAA,SAAS;;;;IACnB,MAAA,SAAS,eAAe;;;;IACvB,MAAA,SAAS;;;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAuFpC;KAEU,2BAA2B,4BAA4B;;;;;;;;;;;cAoBtD,aAAa,UAAU,aAAa"}
|
package/dist/backgrounds.js
CHANGED
|
@@ -141,11 +141,7 @@ const XhBackground = defineComponent({
|
|
|
141
141
|
expose(api);
|
|
142
142
|
return () => {
|
|
143
143
|
sync();
|
|
144
|
-
return h(props.as, {
|
|
145
|
-
"ref": mount,
|
|
146
|
-
"data-scope": "background",
|
|
147
|
-
"data-part": "root"
|
|
148
|
-
}, slots.default?.());
|
|
144
|
+
return h(props.as, { ref: mount }, slots.default?.());
|
|
149
145
|
};
|
|
150
146
|
}
|
|
151
147
|
});
|
package/dist/backgrounds.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backgrounds.js","names":[],"sources":["../src/backgrounds.ts"],"sourcesContent":["// @xihan-ui/vue/backgrounds —— 视觉层的 Vue 适配。\n//\n// 与主入口分开:@xihan-ui/backgrounds 是可选 peer,不用视觉效果的应用不会因为装了本包\n// 而多出一个 WebGL 引擎。用之前先装 @xihan-ui/backgrounds。\n//\n// 三种用法,从轻到重:\n// v-background 给任意元素或组件的根元素铺一层背景,一个字都不用改组件\n// XhBackground 独立的视觉组件,插槽内容浮在效果之上\n// useBackground 自己拿画面实例,接自定义调度或调参面板\n\nimport type {\n BackgroundEffect,\n BackgroundQuality,\n BackgroundSurface,\n MorphOptions,\n ParamValue,\n PointCloud,\n} from '@xihan-ui/backgrounds'\nimport type { Directive, PropType, ShallowRef, VNodeRef } from 'vue'\nimport { createBackgroundSurface } from '@xihan-ui/backgrounds'\nimport {\n defineComponent,\n getCurrentScope,\n h,\n onScopeDispose,\n shallowRef,\n} from 'vue'\n\nexport interface UseBackgroundOptions {\n effect: BackgroundEffect | string\n params?: Record<string, ParamValue>\n quality?: BackgroundQuality\n /** 自动绑定指针事件,默认 true。 */\n pointer?: boolean\n /** 创建后立即播放,默认 true。 */\n autoplay?: boolean\n /** 系统开启减弱动态效果时冻结时间轴,默认 true。 */\n respectReducedMotion?: boolean\n /** 滚出视口时暂停绘制,默认 true。 */\n pauseOffscreen?: boolean\n}\n\nexport interface UseBackgroundReturn {\n readonly surface: ShallowRef<BackgroundSurface | null>\n /**\n * 挂载点。直接当模板 ref 用:`<div :ref=\"visual.attach\">`,\n * 渲染器会在元素进出 DOM 时把元素或 null 交进来。\n */\n attach: (element: Element | null) => void\n setEffect: (effect: BackgroundEffect | string) => void\n setParams: (patch: Record<string, ParamValue>) => void\n setCloud: (cloud: PointCloud, options?: MorphOptions) => void\n play: () => void\n pause: () => void\n destroy: () => void\n}\n\n/**\n * 建一张受 Vue 生命周期管理的视觉画面。\n *\n * 用**函数式 ref** 而不是监听一个模板 ref:元素由渲染器直接交到手上,\n * 不经过响应式与调度队列,因此不受 flush 时序影响,元素换了也一定收得到。\n * 组件卸载时自动销毁;在 setup 之外调用则需自己调 destroy。\n */\nexport function useBackground(options: UseBackgroundOptions): UseBackgroundReturn {\n const surface = shallowRef<BackgroundSurface | null>(null)\n // 元素没换就不动画面:函数式 ref 每次 patch 都会被再调一遍,\n // 不挡住的话每渲染一帧就销毁重建一次,画面永远停在创建时那份参数上\n let attached: HTMLElement | null = null\n\n function attach(element: Element | null): void {\n const el = element instanceof HTMLElement ? element : null\n if (el === attached)\n return\n attached = el\n surface.value?.destroy()\n surface.value = el === null ? null : createBackgroundSurface(el, options)\n }\n\n function destroy(): void {\n attached = null\n surface.value?.destroy()\n surface.value = null\n }\n\n if (getCurrentScope())\n onScopeDispose(destroy)\n\n return {\n surface,\n attach,\n setEffect: (effect): void => surface.value?.setEffect(effect),\n setParams: (patch): void => surface.value?.setParams(patch),\n setCloud: (cloud, morph): void => surface.value?.setCloud(cloud, morph),\n play: (): void => surface.value?.play(),\n pause: (): void => surface.value?.pause(),\n destroy,\n }\n}\n\n/**\n * `<XhBackground>` —— 独立视觉组件。默认插槽的内容浮在效果之上;\n * 画布铺满根元素且 pointer-events: none,不会挡住插槽里的交互。\n */\nexport const XhBackground = defineComponent({\n name: 'XhBackground',\n props: {\n effect: { type: [Object, String] as PropType<BackgroundEffect | string>, required: true },\n params: { type: Object as PropType<Record<string, ParamValue>>, default: undefined },\n quality: { type: String as PropType<BackgroundQuality>, default: undefined },\n /** 数据驱动点云。效果的粒子通道是 cloud 模式时才有意义。 */\n cloud: { type: Object as PropType<PointCloud | null>, default: null },\n /** 换点云时的形变时长(秒)。 */\n morphDuration: { type: Number, default: undefined },\n pointer: { type: Boolean, default: true },\n autoplay: { type: Boolean, default: true },\n respectReducedMotion: { type: Boolean, default: true },\n pauseOffscreen: { type: Boolean, default: true },\n /** 渲染成什么标签。 */\n as: { type: String, default: 'div' },\n },\n setup(props, { slots, expose }) {\n const api = useBackground({\n effect: props.effect,\n params: props.params,\n quality: props.quality,\n pointer: props.pointer,\n autoplay: props.autoplay,\n respectReducedMotion: props.respectReducedMotion,\n pauseOffscreen: props.pauseOffscreen,\n })\n\n let appliedEffect: BackgroundEffect | string | undefined\n let appliedQuality: BackgroundQuality | undefined\n let appliedCloud: PointCloud | null = null\n let appliedAutoplay = props.autoplay\n\n /**\n * 把当前 props 推到画面上。在渲染函数里调用而不是挂 watcher:\n * 渲染函数一定会随 props 变化重跑,且这里读到的参数值同时建立了依赖追踪,\n * 调用方原地改参数对象里的某一项也收得到。\n */\n function sync(): void {\n const surface = api.surface.value\n if (surface === null)\n return\n if (props.effect !== appliedEffect) {\n surface.setEffect(props.effect)\n appliedEffect = props.effect\n }\n if (props.quality !== undefined && props.quality !== appliedQuality) {\n surface.setQuality(props.quality)\n appliedQuality = props.quality\n }\n if (props.params !== undefined)\n surface.setParams(props.params)\n if (props.cloud && props.cloud !== appliedCloud) {\n // 第一份点云直接就位,之后的换形态才走过渡\n surface.setCloud(props.cloud, { duration: appliedCloud === null ? 0 : props.morphDuration })\n appliedCloud = props.cloud\n }\n if (props.autoplay !== appliedAutoplay) {\n if (props.autoplay)\n surface.play()\n else surface.pause()\n appliedAutoplay = props.autoplay\n }\n }\n\n // 签名照 VNodeRef 的函数式 ref 写:渲染器在元素进出 DOM 时把元素或 null 交进来。\n // 同一个元素会被反复交进来,attach 对此幂等;只有真换了画面才重置记账。\n const mount: VNodeRef = (element): void => {\n const previous = api.surface.value\n api.attach(element instanceof HTMLElement ? element : null)\n const current = api.surface.value\n if (current === previous || current === null)\n return\n appliedEffect = props.effect\n appliedQuality = props.quality\n appliedCloud = null\n appliedAutoplay = props.autoplay\n sync()\n }\n\n expose(api)\n\n return () => {\n sync()\n return h(\n props.as,\n { 'ref': mount, 'data-scope': 'background', 'data-part': 'root' },\n slots.default?.(),\n )\n }\n },\n})\n\nexport type BackgroundDirectiveValue = BackgroundEffect | string | UseBackgroundOptions\n\nfunction toOptions(value: BackgroundDirectiveValue): UseBackgroundOptions {\n if (typeof value === 'string')\n return { effect: value }\n return 'effect' in value ? value : { effect: value }\n}\n\nconst mounted = new WeakMap<HTMLElement, { surface: BackgroundSurface, effect: BackgroundEffect | string }>()\n\n/**\n * `v-background` —— 给任意元素铺一层视觉背景。\n *\n * 用在组件上时,Vue 会把指令落到该组件的单一根元素上,所以给现成组件加背景不需要改组件:\n *\n * ```vue\n * <XhButton v-background=\"fluidEffect\">提交</XhButton>\n * <div v-background=\"{ effect: 'aurora', params: { speed: 1.6 } }\" />\n * ```\n */\nexport const vBackground: Directive<HTMLElement, BackgroundDirectiveValue> = {\n mounted(el, binding) {\n const options = toOptions(binding.value)\n mounted.set(el, { surface: createBackgroundSurface(el, options), effect: options.effect })\n },\n updated(el, binding) {\n const entry = mounted.get(el)\n if (entry === undefined)\n return\n const options = toOptions(binding.value)\n if (options.effect !== entry.effect) {\n entry.surface.setEffect(options.effect)\n entry.effect = options.effect\n }\n if (options.params !== undefined)\n entry.surface.setParams(options.params)\n },\n unmounted(el) {\n mounted.get(el)?.surface.destroy()\n mounted.delete(el)\n },\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"backgrounds.js","names":[],"sources":["../src/backgrounds.ts"],"sourcesContent":["// @xihan-ui/vue/backgrounds —— 视觉层的 Vue 适配。\n//\n// 与主入口分开:@xihan-ui/backgrounds 是可选 peer,不用视觉效果的应用不会因为装了本包\n// 而多出一个 WebGL 引擎。用之前先装 @xihan-ui/backgrounds。\n//\n// 三种用法,从轻到重:\n// v-background 给任意元素或组件的根元素铺一层背景,一个字都不用改组件\n// XhBackground 独立的视觉组件,插槽内容浮在效果之上\n// useBackground 自己拿画面实例,接自定义调度或调参面板\n\nimport type {\n BackgroundEffect,\n BackgroundQuality,\n BackgroundSurface,\n MorphOptions,\n ParamValue,\n PointCloud,\n} from '@xihan-ui/backgrounds'\nimport type { Directive, PropType, ShallowRef, VNodeRef } from 'vue'\nimport { createBackgroundSurface } from '@xihan-ui/backgrounds'\nimport {\n defineComponent,\n getCurrentScope,\n h,\n onScopeDispose,\n shallowRef,\n} from 'vue'\n\nexport interface UseBackgroundOptions {\n effect: BackgroundEffect | string\n params?: Record<string, ParamValue>\n quality?: BackgroundQuality\n /** 自动绑定指针事件,默认 true。 */\n pointer?: boolean\n /** 创建后立即播放,默认 true。 */\n autoplay?: boolean\n /** 系统开启减弱动态效果时冻结时间轴,默认 true。 */\n respectReducedMotion?: boolean\n /** 滚出视口时暂停绘制,默认 true。 */\n pauseOffscreen?: boolean\n}\n\nexport interface UseBackgroundReturn {\n readonly surface: ShallowRef<BackgroundSurface | null>\n /**\n * 挂载点。直接当模板 ref 用:`<div :ref=\"visual.attach\">`,\n * 渲染器会在元素进出 DOM 时把元素或 null 交进来。\n */\n attach: (element: Element | null) => void\n setEffect: (effect: BackgroundEffect | string) => void\n setParams: (patch: Record<string, ParamValue>) => void\n setCloud: (cloud: PointCloud, options?: MorphOptions) => void\n play: () => void\n pause: () => void\n destroy: () => void\n}\n\n/**\n * 建一张受 Vue 生命周期管理的视觉画面。\n *\n * 用**函数式 ref** 而不是监听一个模板 ref:元素由渲染器直接交到手上,\n * 不经过响应式与调度队列,因此不受 flush 时序影响,元素换了也一定收得到。\n * 组件卸载时自动销毁;在 setup 之外调用则需自己调 destroy。\n */\nexport function useBackground(options: UseBackgroundOptions): UseBackgroundReturn {\n const surface = shallowRef<BackgroundSurface | null>(null)\n // 元素没换就不动画面:函数式 ref 每次 patch 都会被再调一遍,\n // 不挡住的话每渲染一帧就销毁重建一次,画面永远停在创建时那份参数上\n let attached: HTMLElement | null = null\n\n function attach(element: Element | null): void {\n const el = element instanceof HTMLElement ? element : null\n if (el === attached)\n return\n attached = el\n surface.value?.destroy()\n surface.value = el === null ? null : createBackgroundSurface(el, options)\n }\n\n function destroy(): void {\n attached = null\n surface.value?.destroy()\n surface.value = null\n }\n\n if (getCurrentScope())\n onScopeDispose(destroy)\n\n return {\n surface,\n attach,\n setEffect: (effect): void => surface.value?.setEffect(effect),\n setParams: (patch): void => surface.value?.setParams(patch),\n setCloud: (cloud, morph): void => surface.value?.setCloud(cloud, morph),\n play: (): void => surface.value?.play(),\n pause: (): void => surface.value?.pause(),\n destroy,\n }\n}\n\n/**\n * `<XhBackground>` —— 独立视觉组件。默认插槽的内容浮在效果之上;\n * 画布铺满根元素且 pointer-events: none,不会挡住插槽里的交互。\n */\nexport const XhBackground = defineComponent({\n name: 'XhBackground',\n props: {\n effect: { type: [Object, String] as PropType<BackgroundEffect | string>, required: true },\n params: { type: Object as PropType<Record<string, ParamValue>>, default: undefined },\n quality: { type: String as PropType<BackgroundQuality>, default: undefined },\n /** 数据驱动点云。效果的粒子通道是 cloud 模式时才有意义。 */\n cloud: { type: Object as PropType<PointCloud | null>, default: null },\n /** 换点云时的形变时长(秒)。 */\n morphDuration: { type: Number, default: undefined },\n pointer: { type: Boolean, default: true },\n autoplay: { type: Boolean, default: true },\n respectReducedMotion: { type: Boolean, default: true },\n pauseOffscreen: { type: Boolean, default: true },\n /** 渲染成什么标签。 */\n as: { type: String, default: 'div' },\n },\n setup(props, { slots, expose }) {\n const api = useBackground({\n effect: props.effect,\n params: props.params,\n quality: props.quality,\n pointer: props.pointer,\n autoplay: props.autoplay,\n respectReducedMotion: props.respectReducedMotion,\n pauseOffscreen: props.pauseOffscreen,\n })\n\n let appliedEffect: BackgroundEffect | string | undefined\n let appliedQuality: BackgroundQuality | undefined\n let appliedCloud: PointCloud | null = null\n let appliedAutoplay = props.autoplay\n\n /**\n * 把当前 props 推到画面上。在渲染函数里调用而不是挂 watcher:\n * 渲染函数一定会随 props 变化重跑,且这里读到的参数值同时建立了依赖追踪,\n * 调用方原地改参数对象里的某一项也收得到。\n */\n function sync(): void {\n const surface = api.surface.value\n if (surface === null)\n return\n if (props.effect !== appliedEffect) {\n surface.setEffect(props.effect)\n appliedEffect = props.effect\n }\n if (props.quality !== undefined && props.quality !== appliedQuality) {\n surface.setQuality(props.quality)\n appliedQuality = props.quality\n }\n if (props.params !== undefined)\n surface.setParams(props.params)\n if (props.cloud && props.cloud !== appliedCloud) {\n // 第一份点云直接就位,之后的换形态才走过渡\n surface.setCloud(props.cloud, { duration: appliedCloud === null ? 0 : props.morphDuration })\n appliedCloud = props.cloud\n }\n if (props.autoplay !== appliedAutoplay) {\n if (props.autoplay)\n surface.play()\n else surface.pause()\n appliedAutoplay = props.autoplay\n }\n }\n\n // 签名照 VNodeRef 的函数式 ref 写:渲染器在元素进出 DOM 时把元素或 null 交进来。\n // 同一个元素会被反复交进来,attach 对此幂等;只有真换了画面才重置记账。\n const mount: VNodeRef = (element): void => {\n const previous = api.surface.value\n api.attach(element instanceof HTMLElement ? element : null)\n const current = api.surface.value\n if (current === previous || current === null)\n return\n appliedEffect = props.effect\n appliedQuality = props.quality\n appliedCloud = null\n appliedAutoplay = props.autoplay\n sync()\n }\n\n expose(api)\n\n return () => {\n sync()\n return h(\n props.as,\n // 不发 data-scope:这个宿主不归任何皮肤管,几何全在 features/backgrounds 的内联样式里,\n // 指令用法(v-background 挂在作者自己的元素上)更是连这层壳都没有。\n // 发了 scope 而没有对应皮肤,开发模式的皮肤在场探测会给出一条永远修不掉的警告\n { ref: mount },\n slots.default?.(),\n )\n }\n },\n})\n\nexport type BackgroundDirectiveValue = BackgroundEffect | string | UseBackgroundOptions\n\nfunction toOptions(value: BackgroundDirectiveValue): UseBackgroundOptions {\n if (typeof value === 'string')\n return { effect: value }\n return 'effect' in value ? value : { effect: value }\n}\n\nconst mounted = new WeakMap<HTMLElement, { surface: BackgroundSurface, effect: BackgroundEffect | string }>()\n\n/**\n * `v-background` —— 给任意元素铺一层视觉背景。\n *\n * 用在组件上时,Vue 会把指令落到该组件的单一根元素上,所以给现成组件加背景不需要改组件:\n *\n * ```vue\n * <XhButton v-background=\"fluidEffect\">提交</XhButton>\n * <div v-background=\"{ effect: 'aurora', params: { speed: 1.6 } }\" />\n * ```\n */\nexport const vBackground: Directive<HTMLElement, BackgroundDirectiveValue> = {\n mounted(el, binding) {\n const options = toOptions(binding.value)\n mounted.set(el, { surface: createBackgroundSurface(el, options), effect: options.effect })\n },\n updated(el, binding) {\n const entry = mounted.get(el)\n if (entry === undefined)\n return\n const options = toOptions(binding.value)\n if (options.effect !== entry.effect) {\n entry.surface.setEffect(options.effect)\n entry.effect = options.effect\n }\n if (options.params !== undefined)\n entry.surface.setParams(options.params)\n },\n unmounted(el) {\n mounted.get(el)?.surface.destroy()\n mounted.delete(el)\n },\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
import { RuntimeConfig } from "@xihan-ui/kernel";
|
|
3
|
+
import { HoverIntentOptions, ScrollMetrics, ScrollTrackerOptions, StickToBottomOptions, StickToBottomState, Typeahead, TypeaheadOptions } from "@xihan-ui/behavior";
|
|
4
|
+
//#region src/behavior.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* 按需加解滚动锁。锁是引用计数的,多处同时锁不会互相踩。
|
|
7
|
+
*
|
|
8
|
+
* 锁哪个元素由 `config.scrollRoot?.()` 决定;宿主把滚动搬进了内容容器
|
|
9
|
+
* (body 自己不滚)时必须在配置里注入,否则锁到的是不滚的那个。
|
|
10
|
+
*/
|
|
11
|
+
declare function useScrollLock(active: MaybeRefOrGetter<boolean>, config: MaybeRefOrGetter<RuntimeConfig>): void;
|
|
12
|
+
/**
|
|
13
|
+
* 悬停意图:进触发器停够时长才报开,离开时按安全三角判断是不是正朝浮层去。
|
|
14
|
+
* 用于自建的悬停浮层,省掉「斜着划向子菜单半路就关了」那类手写延时。
|
|
15
|
+
*/
|
|
16
|
+
declare function useHoverIntent(options: HoverIntentOptions): void;
|
|
17
|
+
/** 观察滚动容器的位置与尺寸,值变了才回调。返回最近一次量到的值。 */
|
|
18
|
+
declare function useScrollTracker(options: ScrollTrackerOptions): Ref<ScrollMetrics | null>;
|
|
19
|
+
interface StickToBottom {
|
|
20
|
+
/** 当前贴底状态,随原语的回调更新。 */
|
|
21
|
+
state: Ref<StickToBottomState | null>;
|
|
22
|
+
/** 滚到底部并恢复粘附,默认 'smooth',reducedMotion 为真时强制 'instant'。 */
|
|
23
|
+
scrollToBottom: (behavior?: 'smooth' | 'instant') => void;
|
|
24
|
+
/** 重新读取 scrollEl / contentEl,节点变了就解绑重绑。 */
|
|
25
|
+
retarget: () => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 内容增长时保持贴底,用户往上滚过就松手不再跟。
|
|
29
|
+
*
|
|
30
|
+
* 两个 getter 里读的是 ref 时自动重绑:原语在建好那一刻就绑一次,
|
|
31
|
+
* 而 setup 阶段模板 ref 还是 null,不重绑等于没挂上。
|
|
32
|
+
*/
|
|
33
|
+
declare function useStickToBottom(options: StickToBottomOptions): StickToBottom;
|
|
34
|
+
/** 连续敲字母跳到匹配项的缓冲,超时自动清空。 */
|
|
35
|
+
declare function useTypeahead(options?: TypeaheadOptions): Typeahead;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { StickToBottom, useHoverIntent, useScrollLock, useScrollTracker, useStickToBottom, useTypeahead };
|
|
38
|
+
//# sourceMappingURL=behavior.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"behavior.d.ts","names":[],"sources":["../src/behavior.ts"],"mappings":";;;;;;;;;;iBAoCgB,cACd,QAAQ,2BACR,QAAQ,iBAAiB;;;;;iBAwBX,eAAe,SAAS;;iBAMxB,iBAAiB,SAAS,uBAAuB,IAAI;UAapD;;EAEf,OAAO,IAAI;;EAEX,iBAAiB;;EAEjB;;;;;;;;iBASc,iBAAiB,SAAS,uBAAuB;;iBAejD,aAAa,UAAS,mBAAwB"}
|
package/dist/behavior.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { onScopeDispose, ref, toValue, watch } from "vue";
|
|
2
|
+
import { acquireScrollLock, createScrollTracker, createStickToBottom, createTypeahead, trackHoverIntent } from "@xihan-ui/behavior";
|
|
3
|
+
//#region src/behavior.ts
|
|
4
|
+
/**
|
|
5
|
+
* 按需加解滚动锁。锁是引用计数的,多处同时锁不会互相踩。
|
|
6
|
+
*
|
|
7
|
+
* 锁哪个元素由 `config.scrollRoot?.()` 决定;宿主把滚动搬进了内容容器
|
|
8
|
+
* (body 自己不滚)时必须在配置里注入,否则锁到的是不滚的那个。
|
|
9
|
+
*/
|
|
10
|
+
function useScrollLock(active, config) {
|
|
11
|
+
let handle = null;
|
|
12
|
+
const release = () => {
|
|
13
|
+
handle?.dispose();
|
|
14
|
+
handle = null;
|
|
15
|
+
};
|
|
16
|
+
watch(() => toValue(active), (on) => {
|
|
17
|
+
if (on && !handle) handle = acquireScrollLock({ config: toValue(config) });
|
|
18
|
+
else if (!on) release();
|
|
19
|
+
}, { immediate: true });
|
|
20
|
+
onScopeDispose(release);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 悬停意图:进触发器停够时长才报开,离开时按安全三角判断是不是正朝浮层去。
|
|
24
|
+
* 用于自建的悬停浮层,省掉「斜着划向子菜单半路就关了」那类手写延时。
|
|
25
|
+
*/
|
|
26
|
+
function useHoverIntent(options) {
|
|
27
|
+
onScopeDispose(trackHoverIntent(options));
|
|
28
|
+
}
|
|
29
|
+
/** 观察滚动容器的位置与尺寸,值变了才回调。返回最近一次量到的值。 */
|
|
30
|
+
function useScrollTracker(options) {
|
|
31
|
+
const metrics = ref(null);
|
|
32
|
+
const handle = createScrollTracker({
|
|
33
|
+
...options,
|
|
34
|
+
onChange: (next) => {
|
|
35
|
+
metrics.value = next;
|
|
36
|
+
options.onChange?.(next);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
onScopeDispose(() => handle.dispose());
|
|
40
|
+
return metrics;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 内容增长时保持贴底,用户往上滚过就松手不再跟。
|
|
44
|
+
*
|
|
45
|
+
* 两个 getter 里读的是 ref 时自动重绑:原语在建好那一刻就绑一次,
|
|
46
|
+
* 而 setup 阶段模板 ref 还是 null,不重绑等于没挂上。
|
|
47
|
+
*/
|
|
48
|
+
function useStickToBottom(options) {
|
|
49
|
+
const state = ref(null);
|
|
50
|
+
const handle = createStickToBottom({
|
|
51
|
+
...options,
|
|
52
|
+
onChange: (next) => {
|
|
53
|
+
state.value = next;
|
|
54
|
+
options.onChange?.(next);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
watch([() => options.scrollEl(), () => options.contentEl()], () => handle.retarget());
|
|
58
|
+
onScopeDispose(() => handle.dispose());
|
|
59
|
+
return {
|
|
60
|
+
state,
|
|
61
|
+
scrollToBottom: handle.scrollToBottom,
|
|
62
|
+
retarget: handle.retarget
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** 连续敲字母跳到匹配项的缓冲,超时自动清空。 */
|
|
66
|
+
function useTypeahead(options = {}) {
|
|
67
|
+
const typeahead = createTypeahead(options);
|
|
68
|
+
onScopeDispose(() => typeahead.clear());
|
|
69
|
+
return typeahead;
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { useHoverIntent, useScrollLock, useScrollTracker, useStickToBottom, useTypeahead };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=behavior.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"behavior.js","names":[],"sources":["../src/behavior.ts"],"sourcesContent":["// @xihan-ui/vue/behavior —— 行为原语的 Vue 包装。\n//\n// @xihan-ui/behavior 里的原语都是框架无关的:收一份配置与几个元素 getter,\n// 返回一个要自己释放的句柄。接进 Vue 无非是把释放挂到作用域结束,\n// 于是这些包装只做那一件事,不改原语的语义、也不加新概念。\n//\n// 与主入口分开:自建浮层才用得上这一层,不用的应用不必把它压进主入口的体积。\n// 需要层栈仪式的那几个(消解层、焦点域、背景失活)不在这里——\n// 它们要按顺序接四五个东西,接错的表现是「点子菜单父层跟着关」这种不报错的怪症,\n// 那种场景请直接用库里现成的浮层组件。\nimport type {\n HoverIntentOptions,\n ScrollMetrics,\n ScrollTrackerOptions,\n StickToBottomOptions,\n StickToBottomState,\n Typeahead,\n TypeaheadOptions,\n} from '@xihan-ui/behavior'\nimport type { RuntimeConfig } from '@xihan-ui/kernel'\nimport type { MaybeRefOrGetter, Ref } from 'vue'\nimport {\n acquireScrollLock,\n createScrollTracker,\n createStickToBottom,\n createTypeahead,\n trackHoverIntent,\n} from '@xihan-ui/behavior'\nimport { onScopeDispose, ref, toValue, watch } from 'vue'\n\n/**\n * 按需加解滚动锁。锁是引用计数的,多处同时锁不会互相踩。\n *\n * 锁哪个元素由 `config.scrollRoot?.()` 决定;宿主把滚动搬进了内容容器\n * (body 自己不滚)时必须在配置里注入,否则锁到的是不滚的那个。\n */\nexport function useScrollLock(\n active: MaybeRefOrGetter<boolean>,\n config: MaybeRefOrGetter<RuntimeConfig>,\n): void {\n let handle: { dispose: () => void } | null = null\n const release = (): void => {\n handle?.dispose()\n handle = null\n }\n watch(\n () => toValue(active),\n (on) => {\n if (on && !handle)\n handle = acquireScrollLock({ config: toValue(config) })\n else if (!on)\n release()\n },\n { immediate: true },\n )\n onScopeDispose(release)\n}\n\n/**\n * 悬停意图:进触发器停够时长才报开,离开时按安全三角判断是不是正朝浮层去。\n * 用于自建的悬停浮层,省掉「斜着划向子菜单半路就关了」那类手写延时。\n */\nexport function useHoverIntent(options: HoverIntentOptions): void {\n const stop = trackHoverIntent(options)\n onScopeDispose(stop)\n}\n\n/** 观察滚动容器的位置与尺寸,值变了才回调。返回最近一次量到的值。 */\nexport function useScrollTracker(options: ScrollTrackerOptions): Ref<ScrollMetrics | null> {\n const metrics = ref<ScrollMetrics | null>(null)\n const handle = createScrollTracker({\n ...options,\n onChange: (next) => {\n metrics.value = next\n options.onChange?.(next)\n },\n })\n onScopeDispose(() => handle.dispose())\n return metrics\n}\n\nexport interface StickToBottom {\n /** 当前贴底状态,随原语的回调更新。 */\n state: Ref<StickToBottomState | null>\n /** 滚到底部并恢复粘附,默认 'smooth',reducedMotion 为真时强制 'instant'。 */\n scrollToBottom: (behavior?: 'smooth' | 'instant') => void\n /** 重新读取 scrollEl / contentEl,节点变了就解绑重绑。 */\n retarget: () => void\n}\n\n/**\n * 内容增长时保持贴底,用户往上滚过就松手不再跟。\n *\n * 两个 getter 里读的是 ref 时自动重绑:原语在建好那一刻就绑一次,\n * 而 setup 阶段模板 ref 还是 null,不重绑等于没挂上。\n */\nexport function useStickToBottom(options: StickToBottomOptions): StickToBottom {\n const state = ref<StickToBottomState | null>(null)\n const handle = createStickToBottom({\n ...options,\n onChange: (next) => {\n state.value = next\n options.onChange?.(next)\n },\n })\n watch([() => options.scrollEl(), () => options.contentEl()], () => handle.retarget())\n onScopeDispose(() => handle.dispose())\n return { state, scrollToBottom: handle.scrollToBottom, retarget: handle.retarget }\n}\n\n/** 连续敲字母跳到匹配项的缓冲,超时自动清空。 */\nexport function useTypeahead(options: TypeaheadOptions = {}): Typeahead {\n const typeahead = createTypeahead(options)\n onScopeDispose(() => typeahead.clear())\n return typeahead\n}\n"],"mappings":";;;;;;;;;AAoCA,SAAgB,cACd,QACA,QACM;CACN,IAAI,SAAyC;CAC7C,MAAM,gBAAsB;EAC1B,QAAQ,QAAQ;EAChB,SAAS;CACX;CACA,YACQ,QAAQ,MAAM,IACnB,OAAO;EACN,IAAI,MAAM,CAAC,QACT,SAAS,kBAAkB,EAAE,QAAQ,QAAQ,MAAM,EAAE,CAAC;OACnD,IAAI,CAAC,IACR,QAAQ;CACZ,GACA,EAAE,WAAW,KAAK,CACpB;CACA,eAAe,OAAO;AACxB;;;;;AAMA,SAAgB,eAAe,SAAmC;CAEhE,eADa,iBAAiB,OACZ,CAAC;AACrB;;AAGA,SAAgB,iBAAiB,SAA0D;CACzF,MAAM,UAAU,IAA0B,IAAI;CAC9C,MAAM,SAAS,oBAAoB;EACjC,GAAG;EACH,WAAW,SAAS;GAClB,QAAQ,QAAQ;GAChB,QAAQ,WAAW,IAAI;EACzB;CACF,CAAC;CACD,qBAAqB,OAAO,QAAQ,CAAC;CACrC,OAAO;AACT;;;;;;;AAiBA,SAAgB,iBAAiB,SAA8C;CAC7E,MAAM,QAAQ,IAA+B,IAAI;CACjD,MAAM,SAAS,oBAAoB;EACjC,GAAG;EACH,WAAW,SAAS;GAClB,MAAM,QAAQ;GACd,QAAQ,WAAW,IAAI;EACzB;CACF,CAAC;CACD,MAAM,OAAO,QAAQ,SAAS,SAAS,QAAQ,UAAU,CAAC,SAAS,OAAO,SAAS,CAAC;CACpF,qBAAqB,OAAO,QAAQ,CAAC;CACrC,OAAO;EAAE;EAAO,gBAAgB,OAAO;EAAgB,UAAU,OAAO;CAAS;AACnF;;AAGA,SAAgB,aAAa,UAA4B,CAAC,GAAc;CACtE,MAAM,YAAY,gBAAgB,OAAO;CACzC,qBAAqB,UAAU,MAAM,CAAC;CACtC,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","names":[],"sources":["../../../src/components/accordion/accordion.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","names":[],"sources":["../../../src/components/accordion/accordion.ts"],"mappings":";;;;;KASK,iBAAiB;cAET,+BAAe,8BAAA;;IAGK,MAAA,SAAS;;;;IACd,MAAA;;;;IACO,MAAA;;;;;;IAGA,MAAA,SAAS;;;;IAEjB,MAAA,SAAS;;;;IACR,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;;;EAIN,iBAAA,UAAA,UAAU;EACZ,iBAAA,QAAA,UAAU;;;IAdN,MAAA,SAAS;;;;IACd,MAAA;;;;IACO,MAAA;;;;;;IAGA,MAAA,SAAS;;;;IAEjB,MAAA,SAAS;;;;IACR,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;;;;;;;;;;;;;qCAwBnC;cAEW,+BAAe,8BAAA;;;;;;;;;;;;;;;;;;;;;;qCAgB1B;cAGW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAO5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAO7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAoB7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { useOverlayExit } from "../../runtime/use-overlay-exit.js";
|
|
1
2
|
import { provideAccordion, provideAccordionItem, useAccordionContext, useAccordionItem } from "./context.js";
|
|
2
3
|
import { useAccordion } from "./use-accordion.js";
|
|
3
|
-
import { defineComponent, h } from "vue";
|
|
4
|
+
import { defineComponent, h, ref } from "vue";
|
|
4
5
|
//#region src/components/accordion/accordion.ts
|
|
5
6
|
const XhAccordionRoot = defineComponent({
|
|
6
7
|
name: "XhAccordionRoot",
|
|
@@ -95,7 +96,19 @@ const XhAccordionContent = defineComponent({
|
|
|
95
96
|
setup(_, { slots }) {
|
|
96
97
|
const ctx = useAccordionContext();
|
|
97
98
|
const item = useAccordionItem();
|
|
98
|
-
|
|
99
|
+
const contentRef = ref(null);
|
|
100
|
+
const visible = useOverlayExit({
|
|
101
|
+
config: ctx.config,
|
|
102
|
+
isOpen: () => ctx.api.value.isOpen(item().value),
|
|
103
|
+
contentRef
|
|
104
|
+
});
|
|
105
|
+
return () => h("div", {
|
|
106
|
+
...ctx.api.value.getContentProps(item()),
|
|
107
|
+
style: visible.value ? void 0 : { display: "none" },
|
|
108
|
+
ref: (el) => {
|
|
109
|
+
contentRef.value = el;
|
|
110
|
+
}
|
|
111
|
+
}, slots.default?.());
|
|
99
112
|
}
|
|
100
113
|
});
|
|
101
114
|
const XhAccordionIndicator = defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","names":[],"sources":["../../../src/components/accordion/accordion.ts"],"sourcesContent":["import type { AccordionNode, AccordionNodeMeta, AccordionSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideAccordion, provideAccordionItem, useAccordionContext, useAccordionItem } from './context'\nimport { useAccordion } from './use-accordion'\n\ntype AccordionProps = AccordionSchema['props']\n\nexport const XhAccordionRoot = defineComponent({\n name: 'XhAccordionRoot',\n props: {\n collection: { type: Array as PropType<AccordionNode[]>, default: undefined },\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n multiple: Boolean,\n collapsible: Boolean,\n orientation: { type: String as PropType<Orientation>, default: undefined },\n // 只改水平轴上左右键的语义,不写进 DOM\n dir: { type: String as PropType<Direction>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数组\n emits: {\n 'value-change': (_details: PayloadOf<AccordionProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<AccordionProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AccordionProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useAccordion(props as AccordionProps, notify)\n provideAccordion(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.content)\n : [],\n )\n },\n})\n\nexport const XhAccordionItem = defineComponent({\n name: 'XhAccordionItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useAccordionContext()\n provideAccordionItem(() => ({ value: props.value, disabled: props.disabled }))\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// 渲染为 h3,与 connect 给出的 aria-level 对齐\nexport const XhAccordionHeader = defineComponent({\n name: 'XhAccordionHeader',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('h3', ctx.api.value.getHeaderProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionTrigger = defineComponent({\n name: 'XhAccordionTrigger',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('button', ctx.api.value.getTriggerProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionContent = defineComponent({\n name: 'XhAccordionContent',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('div', ctx.api.value.getContentProps(item()) as Record<string, unknown
|
|
1
|
+
{"version":3,"file":"accordion.js","names":[],"sources":["../../../src/components/accordion/accordion.ts"],"sourcesContent":["import type { AccordionNode, AccordionNodeMeta, AccordionSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, ref } from 'vue'\nimport { useOverlayExit } from '../../runtime/use-overlay-exit'\nimport { provideAccordion, provideAccordionItem, useAccordionContext, useAccordionItem } from './context'\nimport { useAccordion } from './use-accordion'\n\ntype AccordionProps = AccordionSchema['props']\n\nexport const XhAccordionRoot = defineComponent({\n name: 'XhAccordionRoot',\n props: {\n collection: { type: Array as PropType<AccordionNode[]>, default: undefined },\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n multiple: Boolean,\n collapsible: Boolean,\n orientation: { type: String as PropType<Orientation>, default: undefined },\n // 只改水平轴上左右键的语义,不写进 DOM\n dir: { type: String as PropType<Direction>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数组\n emits: {\n 'value-change': (_details: PayloadOf<AccordionProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<AccordionProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AccordionProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useAccordion(props as AccordionProps, notify)\n provideAccordion(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.content)\n : [],\n )\n },\n})\n\nexport const XhAccordionItem = defineComponent({\n name: 'XhAccordionItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useAccordionContext()\n provideAccordionItem(() => ({ value: props.value, disabled: props.disabled }))\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// 渲染为 h3,与 connect 给出的 aria-level 对齐\nexport const XhAccordionHeader = defineComponent({\n name: 'XhAccordionHeader',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('h3', ctx.api.value.getHeaderProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionTrigger = defineComponent({\n name: 'XhAccordionTrigger',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('button', ctx.api.value.getTriggerProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionContent = defineComponent({\n name: 'XhAccordionContent',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n const contentRef = ref<HTMLElement | null>(null)\n // 闸门按面板各开一个:手风琴模式下切换项时,一个进场一个退场是同时发生的\n const visible = useOverlayExit({\n config: ctx.config,\n isOpen: () => ctx.api.value.isOpen(item().value),\n contentRef,\n })\n return () => h('div', {\n ...ctx.api.value.getContentProps(item()) as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhAccordionIndicator = defineComponent({\n name: 'XhAccordionIndicator',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 正文默认取 node.content,写 content 插槽即由作者接管。\n */\nfunction renderDefaultTree(\n collection: readonly AccordionNodeMeta[],\n contentSlot?: (node: AccordionNodeMeta) => VNode[],\n): VNode[] {\n return collection.map(node => h(XhAccordionItem, { key: node.value, value: node.value }, () => [\n h(XhAccordionHeader, null, () => [\n h(XhAccordionTrigger, null, () => [\n h('span', null, node.label),\n h(XhAccordionIndicator),\n ]),\n ]),\n h(XhAccordionContent, null, () => contentSlot?.(node) ?? node.content ?? ''),\n ]))\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { inject, provide } from "vue";
|
|
2
2
|
//#region src/components/accordion/context.ts
|
|
3
|
-
const KEY = Symbol("xh-accordion");
|
|
3
|
+
const KEY = Symbol.for("xh-accordion");
|
|
4
4
|
/** 条目身份下传给 header/trigger/content,用 getter 以跟随 value/disabled 变更。 */
|
|
5
|
-
const ITEM_KEY = Symbol("xh-accordion-item");
|
|
5
|
+
const ITEM_KEY = Symbol.for("xh-accordion-item");
|
|
6
6
|
function provideAccordion(ctx) {
|
|
7
7
|
provide(KEY, ctx);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/accordion/context.ts"],"sourcesContent":["import type { AccordionItemProps } from '@xihan-ui/headless'\nimport type { InjectionKey } from 'vue'\nimport type { AccordionContext } from './use-accordion'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AccordionContext> = Symbol('xh-accordion')\n/** 条目身份下传给 header/trigger/content,用 getter 以跟随 value/disabled 变更。 */\nconst ITEM_KEY: InjectionKey<() => AccordionItemProps> = Symbol('xh-accordion-item')\n\nexport function provideAccordion(ctx: AccordionContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAccordionContext(): AccordionContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Accordion 部件必须用在 XhAccordionRoot 内')\n return ctx\n}\n\nexport function provideAccordionItem(item: () => AccordionItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useAccordionItem(): () => AccordionItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Accordion 条目部件必须用在 XhAccordionItem 内')\n return item\n}\n"],"mappings":";;AAKA,MAAM,MAAsC,OAAO,cAAc;;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/accordion/context.ts"],"sourcesContent":["import type { AccordionItemProps } from '@xihan-ui/headless'\nimport type { InjectionKey } from 'vue'\nimport type { AccordionContext } from './use-accordion'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AccordionContext> = Symbol.for('xh-accordion')\n/** 条目身份下传给 header/trigger/content,用 getter 以跟随 value/disabled 变更。 */\nconst ITEM_KEY: InjectionKey<() => AccordionItemProps> = Symbol.for('xh-accordion-item')\n\nexport function provideAccordion(ctx: AccordionContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAccordionContext(): AccordionContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Accordion 部件必须用在 XhAccordionRoot 内')\n return ctx\n}\n\nexport function provideAccordionItem(item: () => AccordionItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useAccordionItem(): () => AccordionItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Accordion 条目部件必须用在 XhAccordionItem 内')\n return item\n}\n"],"mappings":";;AAKA,MAAM,MAAsC,OAAO,IAAI,cAAc;;AAErE,MAAM,WAAmD,OAAO,IAAI,mBAAmB;AAEvF,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;AAEA,SAAgB,qBAAqB,MAAsC;CACzE,QAAQ,UAAU,IAAI;AACxB;AAEA,SAAgB,mBAA6C;CAC3D,MAAM,OAAO,OAAO,UAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ComputedRef } from "vue";
|
|
2
2
|
import { AccordionApi, AccordionSchema } from "@xihan-ui/headless";
|
|
3
|
+
import { RuntimeConfig } from "@xihan-ui/kernel";
|
|
3
4
|
//#region src/components/accordion/use-accordion.d.ts
|
|
4
5
|
interface AccordionContext {
|
|
5
6
|
api: ComputedRef<AccordionApi>;
|
|
7
|
+
/** 每个面板各自开退场闸门,共用这一份运行期配置;服务端为 null,闸门退化成跟着展开态。 */
|
|
8
|
+
config: RuntimeConfig | null;
|
|
6
9
|
}
|
|
7
10
|
declare function useAccordion(props: AccordionSchema['props'], onValueChange?: AccordionSchema['props']['onValueChange']): AccordionContext;
|
|
8
11
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-accordion.d.ts","names":[],"sources":["../../../src/components/accordion/use-accordion.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-accordion.d.ts","names":[],"sources":["../../../src/components/accordion/use-accordion.ts"],"mappings":";;;;UAUiB;EACf,KAAK,YAAY;;EAEjB,QAAQ;;iBAGM,aACd,OAAO,0BACP,gBAAgB,4CACf"}
|
|
@@ -3,14 +3,25 @@ import { useMachine } from "../../runtime/use-machine.js";
|
|
|
3
3
|
import { createVueIdGenerator } from "../../runtime/vue-id.js";
|
|
4
4
|
import { computed } from "vue";
|
|
5
5
|
import { accordionMachine, connectAccordion } from "@xihan-ui/headless";
|
|
6
|
-
import { createScope } from "@xihan-ui/kernel";
|
|
6
|
+
import { createRuntimeConfig, createScope } from "@xihan-ui/kernel";
|
|
7
7
|
//#region src/components/accordion/use-accordion.ts
|
|
8
8
|
function useAccordion(props, onValueChange) {
|
|
9
|
+
const idGen = createVueIdGenerator();
|
|
10
|
+
const scope = createScope(null, idGen);
|
|
9
11
|
const service = useMachine(accordionMachine, () => ({
|
|
10
12
|
...props,
|
|
11
13
|
onValueChange
|
|
12
|
-
}),
|
|
13
|
-
|
|
14
|
+
}), scope);
|
|
15
|
+
const api = computed(() => connectAccordion(service, vueNormalize));
|
|
16
|
+
let config = null;
|
|
17
|
+
if (typeof document !== "undefined") config = createRuntimeConfig({
|
|
18
|
+
scope,
|
|
19
|
+
idGenerator: idGen
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
api,
|
|
23
|
+
config
|
|
24
|
+
};
|
|
14
25
|
}
|
|
15
26
|
//#endregion
|
|
16
27
|
export { useAccordion };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-accordion.js","names":[],"sources":["../../../src/components/accordion/use-accordion.ts"],"sourcesContent":["import type { AccordionApi, AccordionSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { accordionMachine, connectAccordion } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface AccordionContext {\n api: ComputedRef<AccordionApi>\n}\n\nexport function useAccordion(\n props: AccordionSchema['props'],\n onValueChange?: AccordionSchema['props']['onValueChange'],\n): AccordionContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(accordionMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectAccordion(service, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"use-accordion.js","names":[],"sources":["../../../src/components/accordion/use-accordion.ts"],"sourcesContent":["import type { AccordionApi, AccordionSchema } from '@xihan-ui/headless'\nimport type { RuntimeConfig } from '@xihan-ui/kernel'\nimport type { ComputedRef } from 'vue'\nimport { accordionMachine, connectAccordion } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface AccordionContext {\n api: ComputedRef<AccordionApi>\n /** 每个面板各自开退场闸门,共用这一份运行期配置;服务端为 null,闸门退化成跟着展开态。 */\n config: RuntimeConfig | null\n}\n\nexport function useAccordion(\n props: AccordionSchema['props'],\n onValueChange?: AccordionSchema['props']['onValueChange'],\n): AccordionContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(accordionMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectAccordion(service, vueNormalize))\n\n let config: RuntimeConfig | null = null\n if (typeof document !== 'undefined')\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n return { api, config }\n}\n"],"mappings":";;;;;;;AAgBA,SAAgB,aACd,OACA,eACkB;CAClB,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO;CAAc,IAAI,KAAK;CACvF,MAAM,MAAM,eAAe,iBAAiB,SAAS,YAAY,CAAC;CAElE,IAAI,SAA+B;CACnC,IAAI,OAAO,aAAa,aACtB,SAAS,oBAAoB;EAAE;EAAO,aAAa;CAAM,CAAC;CAE5D,OAAO;EAAE;EAAK;CAAO;AACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/affix/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AffixContext } from './use-affix'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AffixContext> = Symbol('xh-affix')\n\nexport function provideAffix(ctx: AffixContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAffixContext(): AffixContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Affix 部件必须用在 XhAffixRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/affix/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AffixContext } from './use-affix'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AffixContext> = Symbol.for('xh-affix')\n\nexport function provideAffix(ctx: AffixContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAffixContext(): AffixContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Affix 部件必须用在 XhAffixRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAE7D,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/alert/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AlertContext } from './use-alert'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AlertContext> = Symbol('xh-alert')\n\nexport function provideAlert(ctx: AlertContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAlertContext(): AlertContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Alert 部件必须用在 XhAlertRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/alert/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AlertContext } from './use-alert'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AlertContext> = Symbol.for('xh-alert')\n\nexport function provideAlert(ctx: AlertContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAlertContext(): AlertContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Alert 部件必须用在 XhAlertRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAE7D,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
|
|
@@ -112,10 +112,10 @@ declare const XhAnchorRoot: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
112
112
|
dir: Direction;
|
|
113
113
|
tone: Tone;
|
|
114
114
|
size: Size;
|
|
115
|
-
translations: Partial<AnchorTranslations>;
|
|
116
115
|
targets: readonly string[];
|
|
117
116
|
offset: number;
|
|
118
117
|
smooth: boolean;
|
|
118
|
+
translations: Partial<AnchorTranslations>;
|
|
119
119
|
scrollElement: HTMLElement | null;
|
|
120
120
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
121
121
|
declare const XhAnchorList: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/anchor/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AnchorContext } from './use-anchor'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AnchorContext> = Symbol('xh-anchor')\n\nexport function provideAnchor(ctx: AnchorContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAnchorContext(): AnchorContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Anchor 部件必须用在 XhAnchorRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/anchor/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AnchorContext } from './use-anchor'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AnchorContext> = Symbol.for('xh-anchor')\n\nexport function provideAnchor(ctx: AnchorContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAnchorContext(): AnchorContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Anchor 部件必须用在 XhAnchorRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,IAAI,WAAW;AAE/D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/avatar/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AvatarContext } from './use-avatar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AvatarContext> = Symbol('xh-avatar')\n\nexport function provideAvatar(ctx: AvatarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarContext(): AvatarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Avatar 部件必须用在 XhAvatarRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/avatar/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AvatarContext } from './use-avatar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AvatarContext> = Symbol.for('xh-avatar')\n\nexport function provideAvatar(ctx: AvatarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarContext(): AvatarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Avatar 部件必须用在 XhAvatarRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,IAAI,WAAW;AAE/D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar-group.d.ts","names":[],"sources":["../../../src/components/avatar-group/avatar-group.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"avatar-group.d.ts","names":[],"sources":["../../../src/components/avatar-group/avatar-group.ts"],"mappings":";;;cASa,iCAAiB,8BAAA;;;;;;IAKF,MAAA,SAAS;;;;;;;;;;;IAAT,MAAA,SAAS;;;;;;qCAOnC;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { vueNormalize } from "../../runtime/normalize-props.js";
|
|
2
|
+
import { withXhConfig } from "../../config/config.js";
|
|
2
3
|
import { provideAvatarGroup, useAvatarGroupContext } from "./context.js";
|
|
3
4
|
import { computed, defineComponent, h } from "vue";
|
|
4
5
|
import { connectAvatarGroup } from "@xihan-ui/headless";
|
|
@@ -16,7 +17,7 @@ const XhAvatarGroupRoot = defineComponent({
|
|
|
16
17
|
}
|
|
17
18
|
},
|
|
18
19
|
setup(props, { slots }) {
|
|
19
|
-
const api = computed(() => connectAvatarGroup(props, vueNormalize));
|
|
20
|
+
const api = computed(() => connectAvatarGroup(withXhConfig("avatar-group", props), vueNormalize));
|
|
20
21
|
provideAvatarGroup({ api });
|
|
21
22
|
return () => h("div", api.value.getRootProps(), slots.default?.());
|
|
22
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar-group.js","names":[],"sources":["../../../src/components/avatar-group/avatar-group.ts"],"sourcesContent":["import type { AvatarGroupProps } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectAvatarGroup } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideAvatarGroup, useAvatarGroupContext } from './context'\n\nexport const XhAvatarGroupRoot = defineComponent({\n name: 'XhAvatarGroupRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n max: { type: Number, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectAvatarGroup(props as AvatarGroupProps, vueNormalize))\n provideAvatarGroup({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAvatarGroupOverflow = defineComponent({\n name: 'XhAvatarGroupOverflow',\n setup(_, { slots }) {\n const ctx = useAvatarGroupContext()\n // 「+N」的文本由作者写进插槽\n return () => h('span', ctx.api.value.getOverflowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"avatar-group.js","names":[],"sources":["../../../src/components/avatar-group/avatar-group.ts"],"sourcesContent":["import type { AvatarGroupProps } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectAvatarGroup } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideAvatarGroup, useAvatarGroupContext } from './context'\n\nexport const XhAvatarGroupRoot = defineComponent({\n name: 'XhAvatarGroupRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n max: { type: Number, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectAvatarGroup(withXhConfig('avatar-group', props) as AvatarGroupProps, vueNormalize))\n provideAvatarGroup({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAvatarGroupOverflow = defineComponent({\n name: 'XhAvatarGroupOverflow',\n setup(_, { slots }) {\n const ctx = useAvatarGroupContext()\n // 「+N」的文本由作者写进插槽\n return () => h('span', ctx.api.value.getOverflowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;AASA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,mBAAmB,aAAa,gBAAgB,KAAK,GAAuB,YAAY,CAAC;EACpH,mBAAmB,EAAE,IAAI,CAAC;EAC1B,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/avatar-group/context.ts"],"sourcesContent":["import type { AvatarGroupApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface AvatarGroupContext {\n api: ComputedRef<AvatarGroupApi>\n}\n\nconst KEY: InjectionKey<AvatarGroupContext> = Symbol('xh-avatar-group')\n\nexport function provideAvatarGroup(ctx: AvatarGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarGroupContext(): AvatarGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] AvatarGroup 部件必须用在 XhAvatarGroupRoot 内')\n return ctx\n}\n"],"mappings":";;AAQA,MAAM,MAAwC,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/avatar-group/context.ts"],"sourcesContent":["import type { AvatarGroupApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface AvatarGroupContext {\n api: ComputedRef<AvatarGroupApi>\n}\n\nconst KEY: InjectionKey<AvatarGroupContext> = Symbol.for('xh-avatar-group')\n\nexport function provideAvatarGroup(ctx: AvatarGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarGroupContext(): AvatarGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] AvatarGroup 部件必须用在 XhAvatarGroupRoot 内')\n return ctx\n}\n"],"mappings":";;AAQA,MAAM,MAAwC,OAAO,IAAI,iBAAiB;AAE1E,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
|
|
@@ -68,8 +68,8 @@ declare const XhBackTopRoot: import("vue").DefineComponent<import("vue").Extract
|
|
|
68
68
|
}>, {
|
|
69
69
|
tone: Tone;
|
|
70
70
|
size: Size;
|
|
71
|
-
target: HTMLElement | null;
|
|
72
71
|
translations: Partial<BackTopTranslations>;
|
|
72
|
+
target: HTMLElement | null;
|
|
73
73
|
visibilityHeight: number;
|
|
74
74
|
behavior: BackTopBehavior;
|
|
75
75
|
}, SlotsType<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/back-top/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { BackTopContext } from './use-back-top'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<BackTopContext> = Symbol('xh-back-top')\n\nexport function provideBackTop(ctx: BackTopContext): void {\n provide(KEY, ctx)\n}\n\nexport function useBackTopContext(): BackTopContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] BackTop 部件必须用在 XhBackTopRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAoC,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/back-top/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { BackTopContext } from './use-back-top'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<BackTopContext> = Symbol.for('xh-back-top')\n\nexport function provideBackTop(ctx: BackTopContext): void {\n provide(KEY, ctx)\n}\n\nexport function useBackTopContext(): BackTopContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] BackTop 部件必须用在 XhBackTopRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAoC,OAAO,IAAI,aAAa;AAElE,SAAgB,eAAe,KAA2B;CACxD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT"}
|