@will-ui/vue 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/LICENSE +21 -0
- package/README.md +48 -0
- package/TAILWIND.md +282 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/components/audioPlayer/AudioPlayer.d.ts +123 -0
- package/dist/components/audioPlayer/AudioPlayer.js +375 -0
- package/dist/components/audioPlayer/AudioPlayer.js.map +1 -0
- package/dist/components/audioPlayer/index.d.ts +2 -0
- package/dist/components/audioPlayer/style/index.css +1 -0
- package/dist/components/btn/Btn.d.ts +45 -0
- package/dist/components/btn/Btn.js +165 -0
- package/dist/components/btn/Btn.js.map +1 -0
- package/dist/components/btn/config.d.ts +33 -0
- package/dist/components/btn/config.js +20 -0
- package/dist/components/btn/config.js.map +1 -0
- package/dist/components/btn/context.d.ts +12 -0
- package/dist/components/btn/context.js +6 -0
- package/dist/components/btn/context.js.map +1 -0
- package/dist/components/btn/index.d.ts +5 -0
- package/dist/components/btn/style/index.css +1 -0
- package/dist/components/btnGroup/BtnGroup.d.ts +46 -0
- package/dist/components/btnGroup/BtnGroup.js +43 -0
- package/dist/components/btnGroup/BtnGroup.js.map +1 -0
- package/dist/components/btnGroup/config.d.ts +14 -0
- package/dist/components/btnGroup/config.js +11 -0
- package/dist/components/btnGroup/config.js.map +1 -0
- package/dist/components/btnGroup/index.d.ts +3 -0
- package/dist/components/btnGroup/style/index.css +1 -0
- package/dist/components/cascade/Cascade.d.ts +1957 -0
- package/dist/components/cascade/Cascade.js +283 -0
- package/dist/components/cascade/Cascade.js.map +1 -0
- package/dist/components/cascade/config.d.ts +30 -0
- package/dist/components/cascade/config.js +18 -0
- package/dist/components/cascade/config.js.map +1 -0
- package/dist/components/cascade/index.d.ts +3 -0
- package/dist/components/cascade/style/index.css +1 -0
- package/dist/components/checkbox/Checkbox.d.ts +241 -0
- package/dist/components/checkbox/Checkbox.js +182 -0
- package/dist/components/checkbox/Checkbox.js.map +1 -0
- package/dist/components/checkbox/config.d.ts +18 -0
- package/dist/components/checkbox/config.js +11 -0
- package/dist/components/checkbox/config.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/checkbox/style/index.css +1 -0
- package/dist/components/choose/Choose.d.ts +1016 -0
- package/dist/components/choose/Choose.js +402 -0
- package/dist/components/choose/Choose.js.map +1 -0
- package/dist/components/choose/config.d.ts +37 -0
- package/dist/components/choose/config.js +21 -0
- package/dist/components/choose/config.js.map +1 -0
- package/dist/components/choose/index.d.ts +3 -0
- package/dist/components/choose/injectionKey.d.ts +12 -0
- package/dist/components/choose/injectionKey.js +11 -0
- package/dist/components/choose/injectionKey.js.map +1 -0
- package/dist/components/choose/style/index.css +1 -0
- package/dist/components/choose2/Choose2.d.ts +1711 -0
- package/dist/components/choose2/Choose2.js +403 -0
- package/dist/components/choose2/Choose2.js.map +1 -0
- package/dist/components/choose2/config.d.ts +37 -0
- package/dist/components/choose2/config.js +20 -0
- package/dist/components/choose2/config.js.map +1 -0
- package/dist/components/choose2/index.d.ts +3 -0
- package/dist/components/choose2/style/index.css +1 -0
- package/dist/components/chooseItem/ChooseItem.d.ts +46 -0
- package/dist/components/chooseItem/ChooseItem.js +72 -0
- package/dist/components/chooseItem/ChooseItem.js.map +1 -0
- package/dist/components/chooseItem/config.d.ts +12 -0
- package/dist/components/chooseItem/config.js +9 -0
- package/dist/components/chooseItem/config.js.map +1 -0
- package/dist/components/chooseItem/index.d.ts +3 -0
- package/dist/components/chooseItem/style/index.css +1 -0
- package/dist/components/circleProgress/CircleProgress.d.ts +83 -0
- package/dist/components/circleProgress/CircleProgress.js +108 -0
- package/dist/components/circleProgress/CircleProgress.js.map +1 -0
- package/dist/components/circleProgress/index.d.ts +1 -0
- package/dist/components/circleProgress/style/index.css +1 -0
- package/dist/components/close/Close.d.ts +114 -0
- package/dist/components/close/Close.js +82 -0
- package/dist/components/close/Close.js.map +1 -0
- package/dist/components/close/index.d.ts +1 -0
- package/dist/components/close/style/index.css +1 -0
- package/dist/components/colorPicker/ColorPicker.d.ts +138 -0
- package/dist/components/colorPicker/ColorPicker.js +404 -0
- package/dist/components/colorPicker/ColorPicker.js.map +1 -0
- package/dist/components/colorPicker/config.d.ts +24 -0
- package/dist/components/colorPicker/config.js +14 -0
- package/dist/components/colorPicker/config.js.map +1 -0
- package/dist/components/colorPicker/index.d.ts +4 -0
- package/dist/components/colorPicker/style/index.css +1 -0
- package/dist/components/confirm/index.d.ts +73 -0
- package/dist/components/confirm/index.js +177 -0
- package/dist/components/confirm/index.js.map +1 -0
- package/dist/components/confirm/src/style/index.css +1 -0
- package/dist/components/copy/Copy.d.ts +28 -0
- package/dist/components/copy/Copy.js +110 -0
- package/dist/components/copy/Copy.js.map +1 -0
- package/dist/components/copy/config.d.ts +25 -0
- package/dist/components/copy/config.js +13 -0
- package/dist/components/copy/config.js.map +1 -0
- package/dist/components/copy/index.d.ts +5 -0
- package/dist/components/copy/spawnCopyToast.d.ts +13 -0
- package/dist/components/copy/spawnCopyToast.js +150 -0
- package/dist/components/copy/spawnCopyToast.js.map +1 -0
- package/dist/components/copy/style/index.css +1 -0
- package/dist/components/cornerEars/CornerEars.d.ts +24 -0
- package/dist/components/cornerEars/CornerEars.js +108 -0
- package/dist/components/cornerEars/CornerEars.js.map +1 -0
- package/dist/components/cornerEars/cornerGeometry.d.ts +8 -0
- package/dist/components/cornerEars/cornerGeometry.js +63 -0
- package/dist/components/cornerEars/cornerGeometry.js.map +1 -0
- package/dist/components/cornerEars/index.d.ts +2 -0
- package/dist/components/cornerEars/style/index.css +1 -0
- package/dist/components/date/DatePanel.js +398 -0
- package/dist/components/date/DatePanel.js.map +1 -0
- package/dist/components/date/DatePicker.d.ts +226 -0
- package/dist/components/date/DatePicker.js +349 -0
- package/dist/components/date/DatePicker.js.map +1 -0
- package/dist/components/date/Days.d.ts +44 -0
- package/dist/components/date/Days.js +93 -0
- package/dist/components/date/Days.js.map +1 -0
- package/dist/components/date/Months.d.ts +32 -0
- package/dist/components/date/Months.js +87 -0
- package/dist/components/date/Months.js.map +1 -0
- package/dist/components/date/QuickDate.d.ts +24 -0
- package/dist/components/date/QuickDate.js +48 -0
- package/dist/components/date/QuickDate.js.map +1 -0
- package/dist/components/date/Years.d.ts +38 -0
- package/dist/components/date/Years.js +85 -0
- package/dist/components/date/Years.js.map +1 -0
- package/dist/components/date/_use/quickDate.d.ts +4 -0
- package/dist/components/date/_use/quickDate.js +30 -0
- package/dist/components/date/_use/quickDate.js.map +1 -0
- package/dist/components/date/_use/useDateModules.d.ts +37 -0
- package/dist/components/date/_use/useDateModules.js +100 -0
- package/dist/components/date/_use/useDateModules.js.map +1 -0
- package/dist/components/date/config.d.ts +32 -0
- package/dist/components/date/config.js +18 -0
- package/dist/components/date/config.js.map +1 -0
- package/dist/components/date/index.d.ts +3 -0
- package/dist/components/date/style/index.css +1 -0
- package/dist/components/date/types.d.ts +32 -0
- package/dist/components/drawer/Drawer.d.ts +332 -0
- package/dist/components/drawer/Drawer.js +329 -0
- package/dist/components/drawer/Drawer.js.map +1 -0
- package/dist/components/drawer/config.d.ts +28 -0
- package/dist/components/drawer/config.js +16 -0
- package/dist/components/drawer/config.js.map +1 -0
- package/dist/components/drawer/index.d.ts +3 -0
- package/dist/components/drawer/src/style/drawer.css +1 -0
- package/dist/components/ellipsis/Ellipsis.d.ts +74 -0
- package/dist/components/ellipsis/Ellipsis.js +103 -0
- package/dist/components/ellipsis/Ellipsis.js.map +1 -0
- package/dist/components/ellipsis/index.d.ts +1 -0
- package/dist/components/ellipsis/style/index.css +1 -0
- package/dist/components/empty/Empty.d.ts +92 -0
- package/dist/components/empty/Empty.js +85 -0
- package/dist/components/empty/Empty.js.map +1 -0
- package/dist/components/empty/config.d.ts +23 -0
- package/dist/components/empty/config.js +14 -0
- package/dist/components/empty/config.js.map +1 -0
- package/dist/components/empty/index.d.ts +3 -0
- package/dist/components/empty/style/index.css +1 -0
- package/dist/components/empty/type.d.ts +9 -0
- package/dist/components/equalizer/Equalizer.d.ts +62 -0
- package/dist/components/equalizer/Equalizer.js +56 -0
- package/dist/components/equalizer/Equalizer.js.map +1 -0
- package/dist/components/equalizer/index.d.ts +1 -0
- package/dist/components/equalizer/style/index.css +1 -0
- package/dist/components/fallback/Fallback.d.ts +44 -0
- package/dist/components/fallback/Fallback.js +55 -0
- package/dist/components/fallback/Fallback.js.map +1 -0
- package/dist/components/fallback/index.d.ts +1 -0
- package/dist/components/fallback/style/index.css +1 -0
- package/dist/components/form/Form.d.ts +169 -0
- package/dist/components/form/Form.js +235 -0
- package/dist/components/form/Form.js.map +1 -0
- package/dist/components/form/_use/formRules.d.ts +18 -0
- package/dist/components/form/_use/formRules.js +80 -0
- package/dist/components/form/_use/formRules.js.map +1 -0
- package/dist/components/form/config.d.ts +35 -0
- package/dist/components/form/config.js +20 -0
- package/dist/components/form/config.js.map +1 -0
- package/dist/components/form/context.d.ts +34 -0
- package/dist/components/form/context.js +8 -0
- package/dist/components/form/context.js.map +1 -0
- package/dist/components/form/index.d.ts +3 -0
- package/dist/components/form/style/index.css +1 -0
- package/dist/components/formItem/FormItem.d.ts +144 -0
- package/dist/components/formItem/FormItem.js +218 -0
- package/dist/components/formItem/FormItem.js.map +1 -0
- package/dist/components/formItem/config.d.ts +21 -0
- package/dist/components/formItem/config.js +12 -0
- package/dist/components/formItem/config.js.map +1 -0
- package/dist/components/formItem/context.d.ts +22 -0
- package/dist/components/formItem/context.js +8 -0
- package/dist/components/formItem/context.js.map +1 -0
- package/dist/components/formItem/index.d.ts +3 -0
- package/dist/components/formItem/style/index.css +1 -0
- package/dist/components/icon/Icon.d.ts +117 -0
- package/dist/components/icon/Icon.js +116 -0
- package/dist/components/icon/Icon.js.map +1 -0
- package/dist/components/icon/config.d.ts +28 -0
- package/dist/components/icon/config.js +16 -0
- package/dist/components/icon/config.js.map +1 -0
- package/dist/components/icon/index.d.ts +4 -0
- package/dist/components/icon/style/index.css +1 -0
- package/dist/components/icon/type.d.ts +16 -0
- package/dist/components/image/Image.d.ts +21 -0
- package/dist/components/image/Image.js +68 -0
- package/dist/components/image/Image.js.map +1 -0
- package/dist/components/image/config.d.ts +21 -0
- package/dist/components/image/config.js +11 -0
- package/dist/components/image/config.js.map +1 -0
- package/dist/components/image/index.d.ts +4 -0
- package/dist/components/image/style/index.css +1 -0
- package/dist/components/index.d.ts +79 -0
- package/dist/components/index.js +124 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/layer/Layer.d.ts +410 -0
- package/dist/components/layer/Layer.js +557 -0
- package/dist/components/layer/Layer.js.map +1 -0
- package/dist/components/layer/index.d.ts +2 -0
- package/dist/components/layer/injectionKey.d.ts +5 -0
- package/dist/components/layer/injectionKey.js +6 -0
- package/dist/components/layer/injectionKey.js.map +1 -0
- package/dist/components/layer/style/index.css +1 -0
- package/dist/components/lcdFont/LcdFont.d.ts +126 -0
- package/dist/components/lcdFont/LcdFont.js +232 -0
- package/dist/components/lcdFont/LcdFont.js.map +1 -0
- package/dist/components/lcdFont/config.d.ts +43 -0
- package/dist/components/lcdFont/config.js +41 -0
- package/dist/components/lcdFont/config.js.map +1 -0
- package/dist/components/lcdFont/format.d.ts +8 -0
- package/dist/components/lcdFont/format.js +39 -0
- package/dist/components/lcdFont/format.js.map +1 -0
- package/dist/components/lcdFont/index.d.ts +5 -0
- package/dist/components/lcdFont/segments.d.ts +32 -0
- package/dist/components/lcdFont/segments.js +326 -0
- package/dist/components/lcdFont/segments.js.map +1 -0
- package/dist/components/lcdFont/style/index.css +1 -0
- package/dist/components/lcdFont/type.d.ts +26 -0
- package/dist/components/list/List.d.ts +480 -0
- package/dist/components/list/List.js +289 -0
- package/dist/components/list/List.js.map +1 -0
- package/dist/components/list/config.d.ts +3 -0
- package/dist/components/list/index.d.ts +3 -0
- package/dist/components/list/style/index.css +1 -0
- package/dist/components/loading/Loading.d.ts +97 -0
- package/dist/components/loading/Loading.js +124 -0
- package/dist/components/loading/Loading.js.map +1 -0
- package/dist/components/loading/config.d.ts +22 -0
- package/dist/components/loading/config.js +13 -0
- package/dist/components/loading/config.js.map +1 -0
- package/dist/components/loading/index.d.ts +3 -0
- package/dist/components/loading/style/index.css +1 -0
- package/dist/components/loading/type.d.ts +13 -0
- package/dist/components/mask/Mask.d.ts +79 -0
- package/dist/components/mask/Mask.js +82 -0
- package/dist/components/mask/Mask.js.map +1 -0
- package/dist/components/mask/config.d.ts +21 -0
- package/dist/components/mask/config.js +14 -0
- package/dist/components/mask/config.js.map +1 -0
- package/dist/components/mask/index.d.ts +3 -0
- package/dist/components/mask/style/mask.css +1 -0
- package/dist/components/match/Match copy.d.ts +1600 -0
- package/dist/components/match/Match.d.ts +1621 -0
- package/dist/components/match/Match.js +343 -0
- package/dist/components/match/Match.js.map +1 -0
- package/dist/components/match/config.d.ts +29 -0
- package/dist/components/match/config.js +17 -0
- package/dist/components/match/config.js.map +1 -0
- package/dist/components/match/index.d.ts +3 -0
- package/dist/components/match/style/index.css +1 -0
- package/dist/components/modal/Modal.d.ts +460 -0
- package/dist/components/modal/Modal.js +297 -0
- package/dist/components/modal/Modal.js.map +1 -0
- package/dist/components/modal/config.d.ts +33 -0
- package/dist/components/modal/config.js +19 -0
- package/dist/components/modal/config.js.map +1 -0
- package/dist/components/modal/index.d.ts +3 -0
- package/dist/components/modal/style/index.css +1 -0
- package/dist/components/notice/Notice.d.ts +137 -0
- package/dist/components/notice/Notice.js +192 -0
- package/dist/components/notice/Notice.js.map +1 -0
- package/dist/components/notice/index.d.ts +51 -0
- package/dist/components/notice/index.js +243 -0
- package/dist/components/notice/index.js.map +1 -0
- package/dist/components/notice/src/_util/index.d.ts +11 -0
- package/dist/components/notice/src/_util/index.js +50 -0
- package/dist/components/notice/src/_util/index.js.map +1 -0
- package/dist/components/notice/src/style/index.css +1 -0
- package/dist/components/notice/types.d.ts +98 -0
- package/dist/components/number/Number copy.d.ts +966 -0
- package/dist/components/number/Number.d.ts +1034 -0
- package/dist/components/number/Number.js +241 -0
- package/dist/components/number/Number.js.map +1 -0
- package/dist/components/number/config.d.ts +26 -0
- package/dist/components/number/config.js +15 -0
- package/dist/components/number/config.js.map +1 -0
- package/dist/components/number/index.d.ts +3 -0
- package/dist/components/number/style/index.css +1 -0
- package/dist/components/pagination/index.d.ts +3 -0
- package/dist/components/pagination/src/Pagination.d.ts +2830 -0
- package/dist/components/pagination/src/Pagination.js +288 -0
- package/dist/components/pagination/src/Pagination.js.map +1 -0
- package/dist/components/pagination/src/config.d.ts +25 -0
- package/dist/components/pagination/src/config.js +20 -0
- package/dist/components/pagination/src/config.js.map +1 -0
- package/dist/components/pagination/src/style/index.css +1 -0
- package/dist/components/picture/Picture.d.ts +18 -0
- package/dist/components/picture/Picture.js +254 -0
- package/dist/components/picture/Picture.js.map +1 -0
- package/dist/components/picture/PictureToolbar.d.ts +29 -0
- package/dist/components/picture/PictureToolbar.js +97 -0
- package/dist/components/picture/PictureToolbar.js.map +1 -0
- package/dist/components/picture/PictureViewport.d.ts +47 -0
- package/dist/components/picture/PictureViewport.js +203 -0
- package/dist/components/picture/PictureViewport.js.map +1 -0
- package/dist/components/picture/config.d.ts +16 -0
- package/dist/components/picture/config.js +16 -0
- package/dist/components/picture/config.js.map +1 -0
- package/dist/components/picture/index.d.ts +5 -0
- package/dist/components/picture/pictureFlip.d.ts +16 -0
- package/dist/components/picture/pictureFlip.js +103 -0
- package/dist/components/picture/pictureFlip.js.map +1 -0
- package/dist/components/picture/style/index.css +1 -0
- package/dist/components/progress/Progress.d.ts +94 -0
- package/dist/components/progress/Progress.js +112 -0
- package/dist/components/progress/Progress.js.map +1 -0
- package/dist/components/progress/index.d.ts +1 -0
- package/dist/components/progress/style/index.css +1 -0
- package/dist/components/radio/Radio.d.ts +112 -0
- package/dist/components/radio/Radio.js +130 -0
- package/dist/components/radio/Radio.js.map +1 -0
- package/dist/components/radio/config.d.ts +29 -0
- package/dist/components/radio/config.js +18 -0
- package/dist/components/radio/config.js.map +1 -0
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/style/index.css +1 -0
- package/dist/components/scrollbar/Scrollbar.d.ts +93 -0
- package/dist/components/scrollbar/Scrollbar.js +515 -0
- package/dist/components/scrollbar/Scrollbar.js.map +1 -0
- package/dist/components/scrollbar/index.d.ts +1 -0
- package/dist/components/scrollbar/style/index.css +1 -0
- package/dist/components/sheet/Sheet.d.ts +1448 -0
- package/dist/components/sheet/Sheet.js +592 -0
- package/dist/components/sheet/Sheet.js.map +1 -0
- package/dist/components/sheet/_cell.d.ts +181 -0
- package/dist/components/sheet/_cell.js +132 -0
- package/dist/components/sheet/_cell.js.map +1 -0
- package/dist/components/sheet/_props.d.ts +170 -0
- package/dist/components/sheet/_props.js +183 -0
- package/dist/components/sheet/_props.js.map +1 -0
- package/dist/components/sheet/_row.d.ts +2 -0
- package/dist/components/sheet/_row.js +14 -0
- package/dist/components/sheet/_row.js.map +1 -0
- package/dist/components/sheet/_tbody.d.ts +348 -0
- package/dist/components/sheet/_tbody.js +255 -0
- package/dist/components/sheet/_tbody.js.map +1 -0
- package/dist/components/sheet/_tfoot.d.ts +195 -0
- package/dist/components/sheet/_tfoot.js +78 -0
- package/dist/components/sheet/_tfoot.js.map +1 -0
- package/dist/components/sheet/_thead.d.ts +529 -0
- package/dist/components/sheet/_thead.js +148 -0
- package/dist/components/sheet/_thead.js.map +1 -0
- package/dist/components/sheet/_use.d.ts +38 -0
- package/dist/components/sheet/_use.js +493 -0
- package/dist/components/sheet/_use.js.map +1 -0
- package/dist/components/sheet/_util.d.ts +34 -0
- package/dist/components/sheet/_util.js +111 -0
- package/dist/components/sheet/_util.js.map +1 -0
- package/dist/components/sheet/index.d.ts +1 -0
- package/dist/components/sheet/style/index.css +1 -0
- package/dist/components/slideDown/SlideDown.d.ts +62 -0
- package/dist/components/slideDown/SlideDown.js +128 -0
- package/dist/components/slideDown/SlideDown.js.map +1 -0
- package/dist/components/slideDown/index.d.ts +1 -0
- package/dist/components/slider/Slider.d.ts +1726 -0
- package/dist/components/slider/Slider.js +471 -0
- package/dist/components/slider/Slider.js.map +1 -0
- package/dist/components/slider/index.d.ts +1 -0
- package/dist/components/slider/style/index.css +1 -0
- package/dist/components/svgIcon/SvgIcon.d.ts +37 -0
- package/dist/components/svgIcon/SvgIcon.js +78 -0
- package/dist/components/svgIcon/SvgIcon.js.map +1 -0
- package/dist/components/svgIcon/index.d.ts +3 -0
- package/dist/components/svgIcon/style/index.css +1 -0
- package/dist/components/switch/Switch.d.ts +105 -0
- package/dist/components/switch/Switch.js +158 -0
- package/dist/components/switch/Switch.js.map +1 -0
- package/dist/components/switch/config.d.ts +16 -0
- package/dist/components/switch/config.js +11 -0
- package/dist/components/switch/config.js.map +1 -0
- package/dist/components/switch/index.d.ts +1 -0
- package/dist/components/switch/style/index.css +1 -0
- package/dist/components/tab/Tab.d.ts +113 -0
- package/dist/components/tab/Tab.js +485 -0
- package/dist/components/tab/Tab.js.map +1 -0
- package/dist/components/tab/index.d.ts +2 -0
- package/dist/components/tab/style/index.css +1 -0
- package/dist/components/textarea/Textarea.d.ts +37 -0
- package/dist/components/textarea/Textarea.js +193 -0
- package/dist/components/textarea/Textarea.js.map +1 -0
- package/dist/components/textarea/config.d.ts +30 -0
- package/dist/components/textarea/config.js +16 -0
- package/dist/components/textarea/config.js.map +1 -0
- package/dist/components/textarea/index.d.ts +4 -0
- package/dist/components/textarea/style/index.css +1 -0
- package/dist/components/time/Dial.js +7 -0
- package/dist/components/time/Dial.js.map +1 -0
- package/dist/components/time/Dial.vue_vue_type_script_setup_true_lang.js +178 -0
- package/dist/components/time/Dial.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/time/TimePicker.d.ts +1301 -0
- package/dist/components/time/TimePicker.js +162 -0
- package/dist/components/time/TimePicker.js.map +1 -0
- package/dist/components/time/_use/useTimeModules.d.ts +1 -0
- package/dist/components/time/index.d.ts +1 -0
- package/dist/components/time/style/dial.css +1 -0
- package/dist/components/time/style/index.css +1 -0
- package/dist/components/toggle/Toggle.d.ts +140 -0
- package/dist/components/toggle/Toggle.js +209 -0
- package/dist/components/toggle/Toggle.js.map +1 -0
- package/dist/components/toggle/index.d.ts +1 -0
- package/dist/components/toggle/style/index.css +1 -0
- package/dist/components/toggle/style/scale.css +1 -0
- package/dist/components/toggle/style/translate.css +1 -0
- package/dist/components/tooltip/Tooltip.d.ts +536 -0
- package/dist/components/tooltip/Tooltip.js +51 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/style/index.css +1 -0
- package/dist/components/tree/Tree.d.ts +187 -0
- package/dist/components/tree/Tree.js +229 -0
- package/dist/components/tree/Tree.js.map +1 -0
- package/dist/components/tree/TreeItem.d.ts +86 -0
- package/dist/components/tree/TreeItem.js +152 -0
- package/dist/components/tree/TreeItem.js.map +1 -0
- package/dist/components/tree/TreeList.d.ts +86 -0
- package/dist/components/tree/TreeList.js +52 -0
- package/dist/components/tree/TreeList.js.map +1 -0
- package/dist/components/tree/_use/treeState.d.ts +45 -0
- package/dist/components/tree/_use/treeState.js +417 -0
- package/dist/components/tree/_use/treeState.js.map +1 -0
- package/dist/components/tree/config.d.ts +27 -0
- package/dist/components/tree/config.js +16 -0
- package/dist/components/tree/config.js.map +1 -0
- package/dist/components/tree/index.d.ts +4 -0
- package/dist/components/tree/style/index.css +1 -0
- package/dist/components/tree-choose/TreeChoose.d.ts +833 -0
- package/dist/components/tree-choose/TreeChoose.js +320 -0
- package/dist/components/tree-choose/TreeChoose.js.map +1 -0
- package/dist/components/tree-choose/config.d.ts +41 -0
- package/dist/components/tree-choose/config.js +19 -0
- package/dist/components/tree-choose/config.js.map +1 -0
- package/dist/components/tree-choose/index.d.ts +4 -0
- package/dist/components/tree-choose/style/index.css +1 -0
- package/dist/components/trigger/Trigger.d.ts +921 -0
- package/dist/components/trigger/Trigger.js +105 -0
- package/dist/components/trigger/Trigger.js.map +1 -0
- package/dist/components/trigger/index.d.ts +1 -0
- package/dist/components/trigger/style/index.css +2 -0
- package/dist/components/upload/Upload.d.ts +249 -0
- package/dist/components/upload/Upload.js +342 -0
- package/dist/components/upload/Upload.js.map +1 -0
- package/dist/components/upload/config.d.ts +39 -0
- package/dist/components/upload/config.js +21 -0
- package/dist/components/upload/config.js.map +1 -0
- package/dist/components/upload/index.d.ts +4 -0
- package/dist/components/upload/style/index.css +1 -0
- package/dist/components/upload/types.d.ts +47 -0
- package/dist/components/virtual/Virtual.d.ts +57 -0
- package/dist/components/virtual/Virtual.js +62 -0
- package/dist/components/virtual/Virtual.js.map +1 -0
- package/dist/components/virtual/Virtual/345/216/237/347/211/210.d.ts +44 -0
- package/dist/components/virtual/index.d.ts +4 -0
- package/dist/components/virtual/style/index.css +1 -0
- package/dist/components/virtual/useVirtualList.d.ts +50 -0
- package/dist/components/virtual/useVirtualList.js +376 -0
- package/dist/components/virtual/useVirtualList.js.map +1 -0
- package/dist/components/write/Write.d.ts +532 -0
- package/dist/components/write/Write.js +228 -0
- package/dist/components/write/Write.js.map +1 -0
- package/dist/components/write/index.d.ts +1 -0
- package/dist/components/write/style/index.css +1 -0
- package/dist/config/dictionary.d.ts +21 -0
- package/dist/config/dictionary.js +28 -0
- package/dist/config/dictionary.js.map +1 -0
- package/dist/config/i18n.d.ts +22 -0
- package/dist/config/i18n.js +53 -0
- package/dist/config/i18n.js.map +1 -0
- package/dist/config/plugin.d.ts +88 -0
- package/dist/config/plugin.js +13 -0
- package/dist/config/plugin.js.map +1 -0
- package/dist/config/types.d.ts +56 -0
- package/dist/directives/clickOutside.d.ts +10 -0
- package/dist/directives/clickOutside.js +69 -0
- package/dist/directives/clickOutside.js.map +1 -0
- package/dist/directives/index.d.ts +3 -0
- package/dist/directives/index.js +13 -0
- package/dist/directives/index.js.map +1 -0
- package/dist/directives/loading.d.ts +19 -0
- package/dist/directives/loading.js +64 -0
- package/dist/directives/loading.js.map +1 -0
- package/dist/index.d.ts +127 -0
- package/dist/index.js +91 -0
- package/dist/locales/de-DE/index.d.ts +144 -0
- package/dist/locales/de-DE/index.js +140 -0
- package/dist/locales/de-DE/index.js.map +1 -0
- package/dist/locales/en-US/index.d.ts +144 -0
- package/dist/locales/en-US/index.js +140 -0
- package/dist/locales/en-US/index.js.map +1 -0
- package/dist/locales/index.d.ts +3 -0
- package/dist/locales/zh-CN/index.d.ts +144 -0
- package/dist/locales/zh-CN/index.js +140 -0
- package/dist/locales/zh-CN/index.js.map +1 -0
- package/dist/plugin.d.ts +6 -0
- package/dist/plugin.js +38 -0
- package/dist/plugin.js.map +1 -0
- package/dist/styles/index.css +49 -0
- package/dist/theme/_transition.css +169 -0
- package/dist/theme/index.css +5 -0
- package/dist/theme/tokens/_base.css +7 -0
- package/dist/theme/tokens/_common.css +37 -0
- package/dist/theme/tokens/_scrollbar.css +53 -0
- package/dist/theme/tokens/_size.css +18 -0
- package/dist/theme/tokens/_text.css +16 -0
- package/dist/theme/tokens/_var.css +1087 -0
- package/dist/theme/tokens/components/audioPlayer.css +542 -0
- package/dist/theme/tokens/components/btn.css +253 -0
- package/dist/theme/tokens/components/btnGroup.css +68 -0
- package/dist/theme/tokens/components/cascade.css +77 -0
- package/dist/theme/tokens/components/checkbox.css +100 -0
- package/dist/theme/tokens/components/choose.css +175 -0
- package/dist/theme/tokens/components/choose2.css +242 -0
- package/dist/theme/tokens/components/chooseItem.css +54 -0
- package/dist/theme/tokens/components/circleProgress.css +61 -0
- package/dist/theme/tokens/components/close.css +12 -0
- package/dist/theme/tokens/components/colorPicker.css +404 -0
- package/dist/theme/tokens/components/confirm.css +128 -0
- package/dist/theme/tokens/components/copy.css +80 -0
- package/dist/theme/tokens/components/cornerEars.css +102 -0
- package/dist/theme/tokens/components/date/days.css +79 -0
- package/dist/theme/tokens/components/date/index.css +249 -0
- package/dist/theme/tokens/components/date/months.css +68 -0
- package/dist/theme/tokens/components/drawer.css +189 -0
- package/dist/theme/tokens/components/ellipsis.css +46 -0
- package/dist/theme/tokens/components/empty.css +24 -0
- package/dist/theme/tokens/components/equalizer.css +51 -0
- package/dist/theme/tokens/components/fallback.css +4 -0
- package/dist/theme/tokens/components/form.css +50 -0
- package/dist/theme/tokens/components/formItem.css +194 -0
- package/dist/theme/tokens/components/icon.css +41 -0
- package/dist/theme/tokens/components/image.css +70 -0
- package/dist/theme/tokens/components/layer.css +190 -0
- package/dist/theme/tokens/components/lcdFont.css +121 -0
- package/dist/theme/tokens/components/list.css +97 -0
- package/dist/theme/tokens/components/loading.css +64 -0
- package/dist/theme/tokens/components/mask.css +26 -0
- package/dist/theme/tokens/components/match.css +119 -0
- package/dist/theme/tokens/components/modal.css +136 -0
- package/dist/theme/tokens/components/notice.css +264 -0
- package/dist/theme/tokens/components/number.css +150 -0
- package/dist/theme/tokens/components/pagination.css +215 -0
- package/dist/theme/tokens/components/picture.css +299 -0
- package/dist/theme/tokens/components/progress.css +101 -0
- package/dist/theme/tokens/components/radio.css +183 -0
- package/dist/theme/tokens/components/scrollbar.css +160 -0
- package/dist/theme/tokens/components/sheet.css +518 -0
- package/dist/theme/tokens/components/slider.css +171 -0
- package/dist/theme/tokens/components/svgIcon.css +6 -0
- package/dist/theme/tokens/components/switch.css +67 -0
- package/dist/theme/tokens/components/tab.css +215 -0
- package/dist/theme/tokens/components/textarea.css +109 -0
- package/dist/theme/tokens/components/time/dial.css +123 -0
- package/dist/theme/tokens/components/time/index.css +29 -0
- package/dist/theme/tokens/components/toggle/index.css +14 -0
- package/dist/theme/tokens/components/toggle/scale.css +34 -0
- package/dist/theme/tokens/components/toggle/translate.css +41 -0
- package/dist/theme/tokens/components/tooltip.css +77 -0
- package/dist/theme/tokens/components/tree-choose.css +154 -0
- package/dist/theme/tokens/components/tree.css +172 -0
- package/dist/theme/tokens/components/trigger.css +90 -0
- package/dist/theme/tokens/components/upload.css +302 -0
- package/dist/theme/tokens/components/virtual.css +6 -0
- package/dist/theme/tokens/components/write.css +155 -0
- package/dist/theme/tokens/iconfont/iconfont.css +103 -0
- package/dist/theme/tokens/iconfont/iconfont.ttf +0 -0
- package/dist/theme/tokens/iconfont/iconfont.woff +0 -0
- package/dist/theme/tokens/iconfont/iconfont.woff2 +0 -0
- package/dist/theme/tokens/index.css +19 -0
- package/dist/use/index.d.ts +34 -0
- package/dist/use/toggle/types.d.ts +27 -0
- package/dist/use/toggle/useToggle.d.ts +22 -0
- package/dist/use/toggle/useToggleArray.d.ts +14 -0
- package/dist/use/toggle/useToggleArray.js +36 -0
- package/dist/use/toggle/useToggleArray.js.map +1 -0
- package/dist/use/toggle/useToggleCycle.d.ts +11 -0
- package/dist/use/toggle/useToggleCycle.js +88 -0
- package/dist/use/toggle/useToggleCycle.js.map +1 -0
- package/dist/use/toggle/useToggleMap.d.ts +10 -0
- package/dist/use/toggle/useToggleObject.d.ts +13 -0
- package/dist/use/useAudioPlayer.d.ts +160 -0
- package/dist/use/useAudioPlayer.js +799 -0
- package/dist/use/useAudioPlayer.js.map +1 -0
- package/dist/use/useBoundingClientRect.d.ts +14 -0
- package/dist/use/useBoundingClientRect.js +54 -0
- package/dist/use/useBoundingClientRect.js.map +1 -0
- package/dist/use/useChildComponentsCollector.js +30 -0
- package/dist/use/useChildComponentsCollector.js.map +1 -0
- package/dist/use/useComponentClass.d.ts +1 -0
- package/dist/use/useComponentClass.js +6 -0
- package/dist/use/useComponentClass.js.map +1 -0
- package/dist/use/useComponentConfig.d.ts +10 -0
- package/dist/use/useComponentConfig.js +31 -0
- package/dist/use/useComponentConfig.js.map +1 -0
- package/dist/use/useCount.d.ts +13 -0
- package/dist/use/useCount.js +36 -0
- package/dist/use/useCount.js.map +1 -0
- package/dist/use/useDate.d.ts +53 -0
- package/dist/use/useDate.js +280 -0
- package/dist/use/useDate.js.map +1 -0
- package/dist/use/useDelay.d.ts +5 -0
- package/dist/use/useDelay.js +38 -0
- package/dist/use/useDelay.js.map +1 -0
- package/dist/use/useDrag.d.ts +17 -0
- package/dist/use/useElement.d.ts +15 -0
- package/dist/use/useElement.js +41 -0
- package/dist/use/useElement.js.map +1 -0
- package/dist/use/useEscStack.d.ts +14 -0
- package/dist/use/useEscStack.js +62 -0
- package/dist/use/useEscStack.js.map +1 -0
- package/dist/use/useEvent.d.ts +9 -0
- package/dist/use/useEvent.js +43 -0
- package/dist/use/useEvent.js.map +1 -0
- package/dist/use/useFormItem.d.ts +9 -0
- package/dist/use/useFormItem.js +20 -0
- package/dist/use/useFormItem.js.map +1 -0
- package/dist/use/useGlobalZIndex.d.ts +6 -0
- package/dist/use/useGlobalZIndex.js +28 -0
- package/dist/use/useGlobalZIndex.js.map +1 -0
- package/dist/use/useMouse.d.ts +15 -0
- package/dist/use/useMouse.js +36 -0
- package/dist/use/useMouse.js.map +1 -0
- package/dist/use/useMousePositionInElement.d.ts +6 -0
- package/dist/use/useMousePositionInElement.js +27 -0
- package/dist/use/useMousePositionInElement.js.map +1 -0
- package/dist/use/useParentNode.d.ts +3 -0
- package/dist/use/useParentNode.js +25 -0
- package/dist/use/useParentNode.js.map +1 -0
- package/dist/use/usePercentDrag.d.ts +20 -0
- package/dist/use/usePercentDrag.js +59 -0
- package/dist/use/usePercentDrag.js.map +1 -0
- package/dist/use/usePictureViewport.d.ts +57 -0
- package/dist/use/usePictureViewport.js +229 -0
- package/dist/use/usePictureViewport.js.map +1 -0
- package/dist/use/useRequest.d.ts +7 -0
- package/dist/use/useRequest.js +31 -0
- package/dist/use/useRequest.js.map +1 -0
- package/dist/use/useScaleFromPoint.d.ts +57 -0
- package/dist/use/useScaleFromPoint.js +325 -0
- package/dist/use/useScaleFromPoint.js.map +1 -0
- package/dist/use/useScroll.d.ts +9 -0
- package/dist/use/useScroll.js +60 -0
- package/dist/use/useScroll.js.map +1 -0
- package/dist/use/useSearch.d.ts +11 -0
- package/dist/use/useSearch.js +65 -0
- package/dist/use/useSearch.js.map +1 -0
- package/dist/use/useSlot.d.ts +10 -0
- package/dist/use/useSlot.js +57 -0
- package/dist/use/useSlot.js.map +1 -0
- package/dist/use/useTabIndex.d.ts +1 -0
- package/dist/use/useTabIndex.js +18 -0
- package/dist/use/useTabIndex.js.map +1 -0
- package/dist/use/useUII18n.js +26 -0
- package/dist/use/useUII18n.js.map +1 -0
- package/dist/use/useUpload.d.ts +49 -0
- package/dist/use/useUpload.js +396 -0
- package/dist/use/useUpload.js.map +1 -0
- package/dist/use/useVisibleResize.d.ts +6 -0
- package/dist/use/useVisibleResize.js +77 -0
- package/dist/use/useVisibleResize.js.map +1 -0
- package/dist/util/calc.d.ts +40 -0
- package/dist/util/calc.js +239 -0
- package/dist/util/calc.js.map +1 -0
- package/dist/util/colors.d.ts +78 -0
- package/dist/util/colors.js +320 -0
- package/dist/util/colors.js.map +1 -0
- package/dist/util/cssVars.d.ts +62 -0
- package/dist/util/cssVars.js +170 -0
- package/dist/util/cssVars.js.map +1 -0
- package/dist/util/dom.d.ts +65 -0
- package/dist/util/dom.js +212 -0
- package/dist/util/dom.js.map +1 -0
- package/dist/util/index.d.ts +5 -0
- package/dist/util/tools.d.ts +54 -0
- package/dist/util/tools.js +90 -0
- package/dist/util/tools.js.map +1 -0
- package/dist/util/vnode.d.ts +2 -0
- package/package.json +88 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getCurrentInstance, onMounted, ref } from "vue";
|
|
2
|
+
//#region use/useGlobalZIndex.ts
|
|
3
|
+
/**
|
|
4
|
+
* 功能:全局自增(onMounted时自增)z-index,用以所有弹窗类型的东西
|
|
5
|
+
*/
|
|
6
|
+
var __will_ui_global_z_index = 100;
|
|
7
|
+
function useGlobalZIndex() {
|
|
8
|
+
const zIndex = ref(__will_ui_global_z_index);
|
|
9
|
+
function add(delta) {
|
|
10
|
+
__will_ui_global_z_index += delta ?? 1;
|
|
11
|
+
zIndex.value = __will_ui_global_z_index;
|
|
12
|
+
return zIndex.value;
|
|
13
|
+
}
|
|
14
|
+
if (getCurrentInstance()) onMounted(add);
|
|
15
|
+
else add();
|
|
16
|
+
return {
|
|
17
|
+
zIndex,
|
|
18
|
+
add,
|
|
19
|
+
get: () => zIndex.value,
|
|
20
|
+
set(i) {
|
|
21
|
+
zIndex.value = i;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { useGlobalZIndex as default };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=useGlobalZIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGlobalZIndex.js","names":[],"sources":["../../use/useGlobalZIndex.ts"],"sourcesContent":["/**\r\n * 功能:全局自增(onMounted时自增)z-index,用以所有弹窗类型的东西\r\n */\r\nimport { getCurrentInstance, onMounted, ref } from \"vue\"\r\nlet __will_ui_global_z_index = 100\r\n\r\nexport default function useGlobalZIndex() {\r\n const zIndex = ref(__will_ui_global_z_index)\r\n function add(delta?: number) {\r\n __will_ui_global_z_index += delta ?? 1\r\n zIndex.value = __will_ui_global_z_index\r\n return zIndex.value\r\n }\r\n if (getCurrentInstance()) {\r\n onMounted(add)\r\n } else {\r\n add()\r\n }\r\n return {\r\n zIndex,\r\n add,\r\n get: () => zIndex.value,\r\n set(i: number) {\r\n zIndex.value = i\r\n },\r\n }\r\n}\r\n"],"mappings":";;;;;AAIA,IAAI,2BAA2B;AAE/B,SAAwB,kBAAkB;CACxC,MAAM,SAAS,IAAI,wBAAwB;CAC3C,SAAS,IAAI,OAAgB;EAC3B,4BAA4B,SAAS;EACrC,OAAO,QAAQ;EACf,OAAO,OAAO;CAChB;CACA,IAAI,mBAAmB,GACrB,UAAU,GAAG;MAEb,IAAI;CAEN,OAAO;EACL;EACA;EACA,WAAW,OAAO;EAClB,IAAI,GAAW;GACb,OAAO,QAAQ;EACjB;CACF;AACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import useEvent from "./useEvent.js";
|
|
2
|
+
import { reactive } from "vue";
|
|
3
|
+
//#region use/useMouse.ts
|
|
4
|
+
function useMouse(callbackHandler) {
|
|
5
|
+
const doc = document;
|
|
6
|
+
const client = reactive({
|
|
7
|
+
x: 0,
|
|
8
|
+
y: 0
|
|
9
|
+
});
|
|
10
|
+
const page = reactive({
|
|
11
|
+
x: 0,
|
|
12
|
+
y: 0
|
|
13
|
+
});
|
|
14
|
+
function handler(e) {
|
|
15
|
+
({clientX: client.x, clientY: client.y, pageX: page.x, pageY: page.y} = e);
|
|
16
|
+
if (callbackHandler) {
|
|
17
|
+
const { mousemove: mm, mousedown: md, mouseup: mu, mouseover: mo } = callbackHandler;
|
|
18
|
+
if (e.type === "mousemove") mm?.(e);
|
|
19
|
+
if (e.type === "mousedown") md?.(e);
|
|
20
|
+
if (e.type === "mouseover") mo?.(e);
|
|
21
|
+
if (e.type === "mouseup") mu?.(e);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
useEvent(doc, "mousemove", handler);
|
|
25
|
+
useEvent(doc, "mousedown", handler);
|
|
26
|
+
useEvent(doc, "mouseup", handler);
|
|
27
|
+
useEvent(doc, "mouseover", handler);
|
|
28
|
+
return {
|
|
29
|
+
client,
|
|
30
|
+
page
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { useMouse as default };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=useMouse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMouse.js","names":[],"sources":["../../use/useMouse.ts"],"sourcesContent":["import { reactive } from \"vue\"\r\nimport useEvent from \"./useEvent\"\r\nexport default function useMouse(callbackHandler?: {\r\n mousemove?: Function\r\n mousedown?: Function\r\n mouseup?: Function\r\n mouseover?: Function\r\n}) {\r\n const doc = document\r\n const client = reactive({ x: 0, y: 0 })\r\n const page = reactive({ x: 0, y: 0 })\r\n function handler(e: MouseEvent) {\r\n ;({\r\n clientX: client.x,\r\n clientY: client.y,\r\n pageX: page.x,\r\n pageY: page.y,\r\n } = e)\r\n\r\n if (callbackHandler) {\r\n const {\r\n mousemove: mm,\r\n mousedown: md,\r\n mouseup: mu,\r\n mouseover: mo,\r\n } = callbackHandler\r\n if (e.type === \"mousemove\") {\r\n mm?.(e)\r\n }\r\n if (e.type === \"mousedown\") {\r\n md?.(e)\r\n }\r\n if (e.type === \"mouseover\") {\r\n mo?.(e)\r\n }\r\n if (e.type === \"mouseup\") {\r\n mu?.(e)\r\n }\r\n }\r\n }\r\n useEvent(doc, \"mousemove\", handler)\r\n useEvent(doc, \"mousedown\", handler)\r\n useEvent(doc, \"mouseup\", handler)\r\n useEvent(doc, \"mouseover\", handler)\r\n return {\r\n client,\r\n page,\r\n }\r\n}\r\n"],"mappings":";;;AAEA,SAAwB,SAAS,iBAK9B;CACD,MAAM,MAAM;CACZ,MAAM,SAAS,SAAS;EAAE,GAAG;EAAG,GAAG;CAAE,CAAC;CACtC,MAAM,OAAO,SAAS;EAAE,GAAG;EAAG,GAAG;CAAE,CAAC;CACpC,SAAS,QAAQ,GAAe;EAC7B,CAAC,CACA,SAAS,OAAO,GAChB,SAAS,OAAO,GAChB,OAAO,KAAK,GACZ,OAAO,KAAK,KACV;EAEJ,IAAI,iBAAiB;GACnB,MAAM,EACJ,WAAW,IACX,WAAW,IACX,SAAS,IACT,WAAW,OACT;GACJ,IAAI,EAAE,SAAS,aACb,KAAK,CAAC;GAER,IAAI,EAAE,SAAS,aACb,KAAK,CAAC;GAER,IAAI,EAAE,SAAS,aACb,KAAK,CAAC;GAER,IAAI,EAAE,SAAS,WACb,KAAK,CAAC;EAEV;CACF;CACA,SAAS,KAAK,aAAa,OAAO;CAClC,SAAS,KAAK,aAAa,OAAO;CAClC,SAAS,KAAK,WAAW,OAAO;CAChC,SAAS,KAAK,aAAa,OAAO;CAClC,OAAO;EACL;EACA;CACF;AACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type PositionType = number | "left" | "center" | "right" | "bottom" | "top";
|
|
2
|
+
export default function useMousePositionInElement(elem: any, triggerEvent?: keyof GlobalEventHandlersEventMap): {
|
|
3
|
+
x: import('vue').Ref<PositionType, PositionType>;
|
|
4
|
+
y: import('vue').Ref<PositionType, PositionType>;
|
|
5
|
+
};
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getBoundingClientRect } from "../util/dom.js";
|
|
2
|
+
import useEvent from "./useEvent.js";
|
|
3
|
+
import { ref } from "vue";
|
|
4
|
+
//#region use/useMousePositionInElement.ts
|
|
5
|
+
function useMousePositionInElement(elem, triggerEvent = "click") {
|
|
6
|
+
const x = ref();
|
|
7
|
+
const y = ref();
|
|
8
|
+
function handleEvent(e) {
|
|
9
|
+
const elemRect = getBoundingClientRect(elem);
|
|
10
|
+
x.value = e.clientX - elemRect.x;
|
|
11
|
+
y.value = e.clientY - elemRect.y;
|
|
12
|
+
}
|
|
13
|
+
function reset() {
|
|
14
|
+
x.value = void 0;
|
|
15
|
+
y.value = void 0;
|
|
16
|
+
}
|
|
17
|
+
useEvent(elem, triggerEvent, handleEvent);
|
|
18
|
+
useEvent(elem, "mouseleave", reset);
|
|
19
|
+
return {
|
|
20
|
+
x,
|
|
21
|
+
y
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { useMousePositionInElement as default };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=useMousePositionInElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMousePositionInElement.js","names":[],"sources":["../../use/useMousePositionInElement.ts"],"sourcesContent":["import { ref } from \"vue\"\r\nimport { getBoundingClientRect } from \"../util\"\r\nimport useEvent from \"./useEvent\"\r\ntype PositionType = number | \"left\" | \"center\" | \"right\" | \"bottom\" | \"top\"\r\nexport default function useMousePositionInElement(\r\n elem: any,\r\n triggerEvent: keyof GlobalEventHandlersEventMap = \"click\"\r\n) {\r\n const x = ref<PositionType>()\r\n const y = ref<PositionType>()\r\n function handleEvent(e: MouseEvent) {\r\n const elemRect = getBoundingClientRect(elem)\r\n x.value = e.clientX - elemRect.x\r\n y.value = e.clientY - elemRect.y\r\n }\r\n function reset() {\r\n x.value = undefined\r\n y.value = undefined\r\n }\r\n useEvent(elem, triggerEvent, handleEvent)\r\n useEvent(elem, \"mouseleave\", reset)\r\n return { x, y }\r\n}\r\n"],"mappings":";;;;AAIA,SAAwB,0BACtB,MACA,eAAkD,SAClD;CACA,MAAM,IAAI,IAAkB;CAC5B,MAAM,IAAI,IAAkB;CAC5B,SAAS,YAAY,GAAe;EAClC,MAAM,WAAW,sBAAsB,IAAI;EAC3C,EAAE,QAAQ,EAAE,UAAU,SAAS;EAC/B,EAAE,QAAQ,EAAE,UAAU,SAAS;CACjC;CACA,SAAS,QAAQ;EACf,EAAE,QAAQ,KAAA;EACV,EAAE,QAAQ,KAAA;CACZ;CACA,SAAS,MAAM,cAAc,WAAW;CACxC,SAAS,MAAM,cAAc,KAAK;CAClC,OAAO;EAAE;EAAG;CAAE;AAChB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getStyle } from "../util/dom.js";
|
|
2
|
+
import useElement from "./useElement.js";
|
|
3
|
+
import { onMounted, onUpdated, ref } from "vue";
|
|
4
|
+
//#region use/useParentNode.ts
|
|
5
|
+
function useParentNode(elem) {
|
|
6
|
+
const parentNode = ref();
|
|
7
|
+
const { el } = useElement(elem);
|
|
8
|
+
function getPNode() {
|
|
9
|
+
let _node;
|
|
10
|
+
const _el = el.value;
|
|
11
|
+
if (_el === void 0) console.warn("获取的节点为undefined");
|
|
12
|
+
else {
|
|
13
|
+
_node = _el.parentNode;
|
|
14
|
+
if (getStyle(_node, "position") === "static") _node.style.position = "relative";
|
|
15
|
+
parentNode.value = _node;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
onMounted(getPNode);
|
|
19
|
+
onUpdated(getPNode);
|
|
20
|
+
return { parentNode };
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { useParentNode as default };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=useParentNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useParentNode.js","names":[],"sources":["../../use/useParentNode.ts"],"sourcesContent":["import { onMounted, ref, onUpdated } from \"vue\"\r\nimport { getStyle } from \"../util\"\r\nimport useElement from \"./useElement\"\r\n\r\nexport default function useParentNode(elem: any) {\r\n const parentNode = ref<HTMLElement>()\r\n const { el } = useElement(elem)\r\n function getPNode() {\r\n let _node: HTMLElement\r\n const _el = el.value\r\n if (_el === undefined) {\r\n console.warn(\"获取的节点为undefined\")\r\n } else {\r\n _node = _el.parentNode\r\n const position = getStyle(_node, \"position\")\r\n if (position === \"static\") {\r\n _node.style.position = \"relative\"\r\n }\r\n parentNode.value = _node\r\n }\r\n }\r\n onMounted(getPNode)\r\n onUpdated(getPNode)\r\n return {\r\n parentNode,\r\n }\r\n}\r\n"],"mappings":";;;;AAIA,SAAwB,cAAc,MAAW;CAC/C,MAAM,aAAa,IAAiB;CACpC,MAAM,EAAE,OAAO,WAAW,IAAI;CAC9B,SAAS,WAAW;EAClB,IAAI;EACJ,MAAM,MAAM,GAAG;EACf,IAAI,QAAQ,KAAA,GACV,QAAQ,KAAK,iBAAiB;OACzB;GACL,QAAQ,IAAI;GAEZ,IADiB,SAAS,OAAO,UAC7B,MAAa,UACf,MAAM,MAAM,WAAW;GAEzB,WAAW,QAAQ;EACrB;CACF;CACA,UAAU,QAAQ;CAClB,UAAU,QAAQ;CAClB,OAAO,EACL,WACF;AACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
export interface UsePercentDragOptions {
|
|
3
|
+
/** 取值范围元素;拖拽过程中以该元素宽度换算百分比 */
|
|
4
|
+
target: Ref<HTMLElement | undefined | null>;
|
|
5
|
+
disabled?: () => boolean;
|
|
6
|
+
onStart?: (percent: number) => void;
|
|
7
|
+
onMove?: (percent: number) => void;
|
|
8
|
+
onEnd?: (percent: number) => void;
|
|
9
|
+
}
|
|
10
|
+
declare function clampPercent(value: number): number;
|
|
11
|
+
declare function percentFromClientX(el: HTMLElement, clientX: number): number;
|
|
12
|
+
/**
|
|
13
|
+
* 在元素上按下并拖拽,按水平位置换算 0–100 百分比。
|
|
14
|
+
* 适用于进度条、音量条等。
|
|
15
|
+
*/
|
|
16
|
+
export default function usePercentDrag(options: UsePercentDragOptions): {
|
|
17
|
+
dragging: Ref<boolean, boolean>;
|
|
18
|
+
onMouseDown: (e: MouseEvent) => void;
|
|
19
|
+
};
|
|
20
|
+
export { clampPercent, percentFromClientX };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { onUnmounted, ref } from "vue";
|
|
2
|
+
//#region use/usePercentDrag.ts
|
|
3
|
+
function clampPercent(value) {
|
|
4
|
+
return Math.max(0, Math.min(100, value));
|
|
5
|
+
}
|
|
6
|
+
function percentFromClientX(el, clientX) {
|
|
7
|
+
const rect = el.getBoundingClientRect();
|
|
8
|
+
if (!rect.width) return 0;
|
|
9
|
+
return clampPercent((clientX - rect.left) / rect.width * 100);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 在元素上按下并拖拽,按水平位置换算 0–100 百分比。
|
|
13
|
+
* 适用于进度条、音量条等。
|
|
14
|
+
*/
|
|
15
|
+
function usePercentDrag(options) {
|
|
16
|
+
const dragging = ref(false);
|
|
17
|
+
let lastPercent = 0;
|
|
18
|
+
function readPercent(clientX) {
|
|
19
|
+
const el = options.target.value;
|
|
20
|
+
if (!el) return lastPercent;
|
|
21
|
+
lastPercent = percentFromClientX(el, clientX);
|
|
22
|
+
return lastPercent;
|
|
23
|
+
}
|
|
24
|
+
function onWindowMove(e) {
|
|
25
|
+
if (!dragging.value) return;
|
|
26
|
+
const percent = readPercent(e.clientX);
|
|
27
|
+
options.onMove?.(percent);
|
|
28
|
+
}
|
|
29
|
+
function onWindowUp(e) {
|
|
30
|
+
if (!dragging.value) return;
|
|
31
|
+
const percent = readPercent(e.clientX);
|
|
32
|
+
dragging.value = false;
|
|
33
|
+
window.removeEventListener("mousemove", onWindowMove);
|
|
34
|
+
window.removeEventListener("mouseup", onWindowUp);
|
|
35
|
+
options.onEnd?.(percent);
|
|
36
|
+
}
|
|
37
|
+
function onMouseDown(e) {
|
|
38
|
+
if (options.disabled?.()) return;
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
const percent = readPercent(e.clientX);
|
|
41
|
+
dragging.value = true;
|
|
42
|
+
options.onStart?.(percent);
|
|
43
|
+
options.onMove?.(percent);
|
|
44
|
+
window.addEventListener("mousemove", onWindowMove);
|
|
45
|
+
window.addEventListener("mouseup", onWindowUp);
|
|
46
|
+
}
|
|
47
|
+
onUnmounted(() => {
|
|
48
|
+
window.removeEventListener("mousemove", onWindowMove);
|
|
49
|
+
window.removeEventListener("mouseup", onWindowUp);
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
dragging,
|
|
53
|
+
onMouseDown
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { clampPercent, usePercentDrag as default, percentFromClientX };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=usePercentDrag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePercentDrag.js","names":[],"sources":["../../use/usePercentDrag.ts"],"sourcesContent":["import type { Ref } from 'vue'\r\nimport { onUnmounted, ref } from 'vue'\r\n\r\nexport interface UsePercentDragOptions {\r\n /** 取值范围元素;拖拽过程中以该元素宽度换算百分比 */\r\n target: Ref<HTMLElement | undefined | null>\r\n disabled?: () => boolean\r\n onStart?: (percent: number) => void\r\n onMove?: (percent: number) => void\r\n onEnd?: (percent: number) => void\r\n}\r\n\r\nfunction clampPercent(value: number) {\r\n return Math.max(0, Math.min(100, value))\r\n}\r\n\r\nfunction percentFromClientX(el: HTMLElement, clientX: number) {\r\n const rect = el.getBoundingClientRect()\r\n if (!rect.width) return 0\r\n return clampPercent(((clientX - rect.left) / rect.width) * 100)\r\n}\r\n\r\n/**\r\n * 在元素上按下并拖拽,按水平位置换算 0–100 百分比。\r\n * 适用于进度条、音量条等。\r\n */\r\nexport default function usePercentDrag(options: UsePercentDragOptions) {\r\n const dragging = ref(false)\r\n let lastPercent = 0\r\n\r\n function readPercent(clientX: number) {\r\n const el = options.target.value\r\n if (!el) return lastPercent\r\n lastPercent = percentFromClientX(el, clientX)\r\n return lastPercent\r\n }\r\n\r\n function onWindowMove(e: MouseEvent) {\r\n if (!dragging.value) return\r\n const percent = readPercent(e.clientX)\r\n options.onMove?.(percent)\r\n }\r\n\r\n function onWindowUp(e: MouseEvent) {\r\n if (!dragging.value) return\r\n const percent = readPercent(e.clientX)\r\n dragging.value = false\r\n window.removeEventListener('mousemove', onWindowMove)\r\n window.removeEventListener('mouseup', onWindowUp)\r\n options.onEnd?.(percent)\r\n }\r\n\r\n function onMouseDown(e: MouseEvent) {\r\n if (options.disabled?.()) return\r\n e.preventDefault()\r\n const percent = readPercent(e.clientX)\r\n dragging.value = true\r\n options.onStart?.(percent)\r\n options.onMove?.(percent)\r\n window.addEventListener('mousemove', onWindowMove)\r\n window.addEventListener('mouseup', onWindowUp)\r\n }\r\n\r\n onUnmounted(() => {\r\n window.removeEventListener('mousemove', onWindowMove)\r\n window.removeEventListener('mouseup', onWindowUp)\r\n })\r\n\r\n return {\r\n dragging,\r\n onMouseDown,\r\n }\r\n}\r\n\r\nexport { clampPercent, percentFromClientX }\r\n"],"mappings":";;AAYA,SAAS,aAAa,OAAe;CACnC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC;AACzC;AAEA,SAAS,mBAAmB,IAAiB,SAAiB;CAC5D,MAAM,OAAO,GAAG,sBAAsB;CACtC,IAAI,CAAC,KAAK,OAAO,OAAO;CACxB,OAAO,cAAe,UAAU,KAAK,QAAQ,KAAK,QAAS,GAAG;AAChE;;;;;AAMA,SAAwB,eAAe,SAAgC;CACrE,MAAM,WAAW,IAAI,KAAK;CAC1B,IAAI,cAAc;CAElB,SAAS,YAAY,SAAiB;EACpC,MAAM,KAAK,QAAQ,OAAO;EAC1B,IAAI,CAAC,IAAI,OAAO;EAChB,cAAc,mBAAmB,IAAI,OAAO;EAC5C,OAAO;CACT;CAEA,SAAS,aAAa,GAAe;EACnC,IAAI,CAAC,SAAS,OAAO;EACrB,MAAM,UAAU,YAAY,EAAE,OAAO;EACrC,QAAQ,SAAS,OAAO;CAC1B;CAEA,SAAS,WAAW,GAAe;EACjC,IAAI,CAAC,SAAS,OAAO;EACrB,MAAM,UAAU,YAAY,EAAE,OAAO;EACrC,SAAS,QAAQ;EACjB,OAAO,oBAAoB,aAAa,YAAY;EACpD,OAAO,oBAAoB,WAAW,UAAU;EAChD,QAAQ,QAAQ,OAAO;CACzB;CAEA,SAAS,YAAY,GAAe;EAClC,IAAI,QAAQ,WAAW,GAAG;EAC1B,EAAE,eAAe;EACjB,MAAM,UAAU,YAAY,EAAE,OAAO;EACrC,SAAS,QAAQ;EACjB,QAAQ,UAAU,OAAO;EACzB,QAAQ,SAAS,OAAO;EACxB,OAAO,iBAAiB,aAAa,YAAY;EACjD,OAAO,iBAAiB,WAAW,UAAU;CAC/C;CAEA,kBAAkB;EAChB,OAAO,oBAAoB,aAAa,YAAY;EACpD,OAAO,oBAAoB,WAAW,UAAU;CAClD,CAAC;CAED,OAAO;EACL;EACA;CACF;AACF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** Picture 全屏预览视口变换(适应 / 1:1 / 指针缩放 / 平移 / 旋转 / 翻转) */
|
|
2
|
+
export type PictureViewportMode = 'fit' | 'one' | 'free';
|
|
3
|
+
export type PictureViewportSnapshot = {
|
|
4
|
+
/** 相对自然像素的绝对缩放 */
|
|
5
|
+
scale: number;
|
|
6
|
+
tx: number;
|
|
7
|
+
ty: number;
|
|
8
|
+
/** 0 | 90 | 180 | 270 */
|
|
9
|
+
rotate: number;
|
|
10
|
+
flipX: boolean;
|
|
11
|
+
flipY: boolean;
|
|
12
|
+
mode: PictureViewportMode;
|
|
13
|
+
};
|
|
14
|
+
export type PictureViewportOptions = {
|
|
15
|
+
zoomMin?: number;
|
|
16
|
+
zoomMax?: number;
|
|
17
|
+
zoomStep?: number;
|
|
18
|
+
};
|
|
19
|
+
export declare function normalizeRotate(deg: number): number;
|
|
20
|
+
/** 旋转后包围盒相对视口的适应缩放 */
|
|
21
|
+
export declare function computeFitScale(naturalW: number, naturalH: number, viewportW: number, viewportH: number, rotate: number): number;
|
|
22
|
+
export declare function clampScale(scale: number, min: number, max: number): number;
|
|
23
|
+
/** 指针缩放:保持指针下图像点不动(视口中心为原点) */
|
|
24
|
+
export declare function zoomAtPoint(tx: number, ty: number, scale: number, nextScale: number, pointerXFromCenter: number, pointerYFromCenter: number): {
|
|
25
|
+
tx: number;
|
|
26
|
+
ty: number;
|
|
27
|
+
scale: number;
|
|
28
|
+
};
|
|
29
|
+
export declare function toTransformCss(s: PictureViewportSnapshot): string;
|
|
30
|
+
export type UsePictureViewport = {
|
|
31
|
+
getSnapshot: () => PictureViewportSnapshot;
|
|
32
|
+
/** 供渲染:当前变换 CSS */
|
|
33
|
+
getTransform: () => string;
|
|
34
|
+
setNaturalSize: (w: number, h: number) => void;
|
|
35
|
+
setViewportSize: (w: number, h: number) => void;
|
|
36
|
+
fit: (withTransition?: boolean) => void;
|
|
37
|
+
oneToOne: (withTransition?: boolean) => void;
|
|
38
|
+
zoomAt: (clientX: number, clientY: number, factor: number) => void;
|
|
39
|
+
zoomBy: (factor: number) => void;
|
|
40
|
+
panBy: (dx: number, dy: number) => void;
|
|
41
|
+
rotateBy: (delta: number) => void;
|
|
42
|
+
flip: (axis: 'x' | 'y') => void;
|
|
43
|
+
reset: () => void;
|
|
44
|
+
/** 是否已放大到可拖拽(相对 fit) */
|
|
45
|
+
canPan: () => boolean;
|
|
46
|
+
subscribe: (listener: () => void) => () => void;
|
|
47
|
+
/** 最近一次按钮操作是否应带 transition(拖拽/滚轮后清 false) */
|
|
48
|
+
consumeTransition: () => boolean;
|
|
49
|
+
/**
|
|
50
|
+
* 切图前调用:记下相对「适应」的缩放比,清空平移;
|
|
51
|
+
* 随后 setNaturalSize 会按该比例落到新图(fit/one 模式仍各自重算)。
|
|
52
|
+
*/
|
|
53
|
+
prepareImageChange: () => void;
|
|
54
|
+
};
|
|
55
|
+
export declare function createPictureViewport(options?: PictureViewportOptions): UsePictureViewport;
|
|
56
|
+
export declare const PICTURE_VIEWPORT_ZOOM_STEP = 1.15;
|
|
57
|
+
export default createPictureViewport;
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
//#region use/usePictureViewport.ts
|
|
2
|
+
var DEFAULT_ZOOM_MIN = .1;
|
|
3
|
+
var DEFAULT_ZOOM_MAX = 8;
|
|
4
|
+
var DEFAULT_ZOOM_STEP = 1.15;
|
|
5
|
+
function normalizeRotate(deg) {
|
|
6
|
+
return (Math.round(deg / 90) * 90 % 360 + 360) % 360;
|
|
7
|
+
}
|
|
8
|
+
/** 旋转后包围盒相对视口的适应缩放 */
|
|
9
|
+
function computeFitScale(naturalW, naturalH, viewportW, viewportH, rotate) {
|
|
10
|
+
if (naturalW <= 0 || naturalH <= 0 || viewportW <= 0 || viewportH <= 0) return 1;
|
|
11
|
+
const swapped = normalizeRotate(rotate) % 180 === 90;
|
|
12
|
+
const iw = swapped ? naturalH : naturalW;
|
|
13
|
+
const ih = swapped ? naturalW : naturalH;
|
|
14
|
+
return Math.min(viewportW / iw, viewportH / ih);
|
|
15
|
+
}
|
|
16
|
+
function clampScale(scale, min, max) {
|
|
17
|
+
return Math.min(max, Math.max(min, scale));
|
|
18
|
+
}
|
|
19
|
+
/** 指针缩放:保持指针下图像点不动(视口中心为原点) */
|
|
20
|
+
function zoomAtPoint(tx, ty, scale, nextScale, pointerXFromCenter, pointerYFromCenter) {
|
|
21
|
+
if (scale <= 0 || nextScale <= 0 || scale === nextScale) return {
|
|
22
|
+
tx,
|
|
23
|
+
ty,
|
|
24
|
+
scale: nextScale
|
|
25
|
+
};
|
|
26
|
+
const ratio = nextScale / scale;
|
|
27
|
+
return {
|
|
28
|
+
scale: nextScale,
|
|
29
|
+
tx: pointerXFromCenter - (pointerXFromCenter - tx) * ratio,
|
|
30
|
+
ty: pointerYFromCenter - (pointerYFromCenter - ty) * ratio
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function toTransformCss(s) {
|
|
34
|
+
const sx = s.scale * (s.flipX ? -1 : 1);
|
|
35
|
+
const sy = s.scale * (s.flipY ? -1 : 1);
|
|
36
|
+
return `translate(${s.tx}px, ${s.ty}px) rotate(${s.rotate}deg) scale(${sx}, ${sy})`;
|
|
37
|
+
}
|
|
38
|
+
function createPictureViewport(options = {}) {
|
|
39
|
+
const zoomMin = options.zoomMin ?? DEFAULT_ZOOM_MIN;
|
|
40
|
+
const zoomMax = options.zoomMax ?? DEFAULT_ZOOM_MAX;
|
|
41
|
+
let naturalW = 0;
|
|
42
|
+
let naturalH = 0;
|
|
43
|
+
let viewportW = 0;
|
|
44
|
+
let viewportH = 0;
|
|
45
|
+
let withTransition = false;
|
|
46
|
+
/** 切图时携带的相对适应缩放比;null 表示不按比例携带 */
|
|
47
|
+
let pendingZoomRatio = null;
|
|
48
|
+
let state = {
|
|
49
|
+
scale: 1,
|
|
50
|
+
tx: 0,
|
|
51
|
+
ty: 0,
|
|
52
|
+
rotate: 0,
|
|
53
|
+
flipX: false,
|
|
54
|
+
flipY: false,
|
|
55
|
+
mode: "fit"
|
|
56
|
+
};
|
|
57
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
58
|
+
function notify() {
|
|
59
|
+
listeners.forEach((l) => l());
|
|
60
|
+
}
|
|
61
|
+
function setState(next, transition) {
|
|
62
|
+
state = next;
|
|
63
|
+
withTransition = transition;
|
|
64
|
+
notify();
|
|
65
|
+
}
|
|
66
|
+
function fitScaleOf(rotate) {
|
|
67
|
+
return computeFitScale(naturalW, naturalH, viewportW, viewportH, rotate);
|
|
68
|
+
}
|
|
69
|
+
function fit(withTrans = true) {
|
|
70
|
+
const scale = clampScale(fitScaleOf(state.rotate), zoomMin, zoomMax);
|
|
71
|
+
setState({
|
|
72
|
+
...state,
|
|
73
|
+
scale,
|
|
74
|
+
tx: 0,
|
|
75
|
+
ty: 0,
|
|
76
|
+
mode: "fit"
|
|
77
|
+
}, withTrans);
|
|
78
|
+
}
|
|
79
|
+
function oneToOne(withTrans = true) {
|
|
80
|
+
const scale = clampScale(1, zoomMin, zoomMax);
|
|
81
|
+
setState({
|
|
82
|
+
...state,
|
|
83
|
+
scale,
|
|
84
|
+
tx: 0,
|
|
85
|
+
ty: 0,
|
|
86
|
+
mode: "one"
|
|
87
|
+
}, withTrans);
|
|
88
|
+
}
|
|
89
|
+
function reset() {
|
|
90
|
+
setState({
|
|
91
|
+
scale: clampScale(fitScaleOf(0), zoomMin, zoomMax),
|
|
92
|
+
tx: 0,
|
|
93
|
+
ty: 0,
|
|
94
|
+
rotate: 0,
|
|
95
|
+
flipX: false,
|
|
96
|
+
flipY: false,
|
|
97
|
+
mode: "fit"
|
|
98
|
+
}, true);
|
|
99
|
+
}
|
|
100
|
+
function zoomAt(clientX, clientY, factor) {
|
|
101
|
+
const next = clampScale(state.scale * factor, zoomMin, zoomMax);
|
|
102
|
+
const moved = zoomAtPoint(state.tx, state.ty, state.scale, next, clientX, clientY);
|
|
103
|
+
setState({
|
|
104
|
+
...state,
|
|
105
|
+
...moved,
|
|
106
|
+
mode: "free"
|
|
107
|
+
}, false);
|
|
108
|
+
}
|
|
109
|
+
function zoomBy(factor) {
|
|
110
|
+
const next = clampScale(state.scale * factor, zoomMin, zoomMax);
|
|
111
|
+
setState({
|
|
112
|
+
...state,
|
|
113
|
+
scale: next,
|
|
114
|
+
mode: "free"
|
|
115
|
+
}, true);
|
|
116
|
+
}
|
|
117
|
+
function panBy(dx, dy) {
|
|
118
|
+
if (!canPan()) return;
|
|
119
|
+
setState({
|
|
120
|
+
...state,
|
|
121
|
+
tx: state.tx + dx,
|
|
122
|
+
ty: state.ty + dy,
|
|
123
|
+
mode: "free"
|
|
124
|
+
}, false);
|
|
125
|
+
}
|
|
126
|
+
function rotateBy(delta) {
|
|
127
|
+
const rotate = normalizeRotate(state.rotate + delta);
|
|
128
|
+
const scale = state.mode === "one" ? clampScale(1, zoomMin, zoomMax) : clampScale(fitScaleOf(rotate), zoomMin, zoomMax);
|
|
129
|
+
setState({
|
|
130
|
+
...state,
|
|
131
|
+
rotate,
|
|
132
|
+
scale,
|
|
133
|
+
tx: 0,
|
|
134
|
+
ty: 0,
|
|
135
|
+
mode: state.mode === "one" ? "one" : "fit"
|
|
136
|
+
}, true);
|
|
137
|
+
}
|
|
138
|
+
function flip(axis) {
|
|
139
|
+
setState({
|
|
140
|
+
...state,
|
|
141
|
+
flipX: axis === "x" ? !state.flipX : state.flipX,
|
|
142
|
+
flipY: axis === "y" ? !state.flipY : state.flipY
|
|
143
|
+
}, true);
|
|
144
|
+
}
|
|
145
|
+
function canPan() {
|
|
146
|
+
const fit = fitScaleOf(state.rotate);
|
|
147
|
+
return state.scale > fit * 1.001;
|
|
148
|
+
}
|
|
149
|
+
function prepareImageChange() {
|
|
150
|
+
if (state.mode === "free") {
|
|
151
|
+
const fit = fitScaleOf(state.rotate);
|
|
152
|
+
pendingZoomRatio = fit > 0 ? state.scale / fit : 1;
|
|
153
|
+
} else pendingZoomRatio = null;
|
|
154
|
+
setState({
|
|
155
|
+
...state,
|
|
156
|
+
tx: 0,
|
|
157
|
+
ty: 0
|
|
158
|
+
}, false);
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
getSnapshot: () => state,
|
|
162
|
+
getTransform: () => toTransformCss(state),
|
|
163
|
+
setNaturalSize: (w, h) => {
|
|
164
|
+
naturalW = w;
|
|
165
|
+
naturalH = h;
|
|
166
|
+
if (state.mode === "fit") {
|
|
167
|
+
pendingZoomRatio = null;
|
|
168
|
+
fit(false);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (state.mode === "one") {
|
|
172
|
+
pendingZoomRatio = null;
|
|
173
|
+
oneToOne(false);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (pendingZoomRatio != null) {
|
|
177
|
+
const next = clampScale(fitScaleOf(state.rotate) * pendingZoomRatio, zoomMin, zoomMax);
|
|
178
|
+
pendingZoomRatio = null;
|
|
179
|
+
setState({
|
|
180
|
+
...state,
|
|
181
|
+
scale: next,
|
|
182
|
+
tx: 0,
|
|
183
|
+
ty: 0,
|
|
184
|
+
mode: "free"
|
|
185
|
+
}, false);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
setState({
|
|
189
|
+
...state,
|
|
190
|
+
scale: clampScale(state.scale, zoomMin, zoomMax),
|
|
191
|
+
tx: 0,
|
|
192
|
+
ty: 0
|
|
193
|
+
}, false);
|
|
194
|
+
},
|
|
195
|
+
setViewportSize: (w, h) => {
|
|
196
|
+
if (w === viewportW && h === viewportH) return;
|
|
197
|
+
viewportW = w;
|
|
198
|
+
viewportH = h;
|
|
199
|
+
if (state.mode === "fit") fit(false);
|
|
200
|
+
else if (state.mode === "one") oneToOne(false);
|
|
201
|
+
},
|
|
202
|
+
fit,
|
|
203
|
+
oneToOne,
|
|
204
|
+
zoomAt,
|
|
205
|
+
zoomBy,
|
|
206
|
+
panBy,
|
|
207
|
+
rotateBy,
|
|
208
|
+
flip,
|
|
209
|
+
reset,
|
|
210
|
+
canPan,
|
|
211
|
+
subscribe: (listener) => {
|
|
212
|
+
listeners.add(listener);
|
|
213
|
+
return () => {
|
|
214
|
+
listeners.delete(listener);
|
|
215
|
+
};
|
|
216
|
+
},
|
|
217
|
+
consumeTransition: () => {
|
|
218
|
+
const v = withTransition;
|
|
219
|
+
withTransition = false;
|
|
220
|
+
return v;
|
|
221
|
+
},
|
|
222
|
+
prepareImageChange
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
var PICTURE_VIEWPORT_ZOOM_STEP = DEFAULT_ZOOM_STEP;
|
|
226
|
+
//#endregion
|
|
227
|
+
export { PICTURE_VIEWPORT_ZOOM_STEP, clampScale, computeFitScale, createPictureViewport, createPictureViewport as default, normalizeRotate, toTransformCss, zoomAtPoint };
|
|
228
|
+
|
|
229
|
+
//# sourceMappingURL=usePictureViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePictureViewport.js","names":[],"sources":["../../use/usePictureViewport.ts"],"sourcesContent":["/** Picture 全屏预览视口变换(适应 / 1:1 / 指针缩放 / 平移 / 旋转 / 翻转) */\r\n\r\nexport type PictureViewportMode = 'fit' | 'one' | 'free'\r\n\r\nexport type PictureViewportSnapshot = {\r\n /** 相对自然像素的绝对缩放 */\r\n scale: number\r\n tx: number\r\n ty: number\r\n /** 0 | 90 | 180 | 270 */\r\n rotate: number\r\n flipX: boolean\r\n flipY: boolean\r\n mode: PictureViewportMode\r\n}\r\n\r\nexport type PictureViewportOptions = {\r\n zoomMin?: number\r\n zoomMax?: number\r\n zoomStep?: number\r\n}\r\n\r\nconst DEFAULT_ZOOM_MIN = 0.1\r\nconst DEFAULT_ZOOM_MAX = 8\r\nconst DEFAULT_ZOOM_STEP = 1.15\r\n\r\nexport function normalizeRotate(deg: number): number {\r\n const n = ((Math.round(deg / 90) * 90) % 360 + 360) % 360\r\n return n\r\n}\r\n\r\n/** 旋转后包围盒相对视口的适应缩放 */\r\nexport function computeFitScale(\r\n naturalW: number,\r\n naturalH: number,\r\n viewportW: number,\r\n viewportH: number,\r\n rotate: number,\r\n): number {\r\n if (naturalW <= 0 || naturalH <= 0 || viewportW <= 0 || viewportH <= 0) {\r\n return 1\r\n }\r\n const swapped = normalizeRotate(rotate) % 180 === 90\r\n const iw = swapped ? naturalH : naturalW\r\n const ih = swapped ? naturalW : naturalH\r\n return Math.min(viewportW / iw, viewportH / ih)\r\n}\r\n\r\nexport function clampScale(\r\n scale: number,\r\n min: number,\r\n max: number,\r\n): number {\r\n return Math.min(max, Math.max(min, scale))\r\n}\r\n\r\n/** 指针缩放:保持指针下图像点不动(视口中心为原点) */\r\nexport function zoomAtPoint(\r\n tx: number,\r\n ty: number,\r\n scale: number,\r\n nextScale: number,\r\n pointerXFromCenter: number,\r\n pointerYFromCenter: number,\r\n): { tx: number; ty: number; scale: number } {\r\n if (scale <= 0 || nextScale <= 0 || scale === nextScale) {\r\n return { tx, ty, scale: nextScale }\r\n }\r\n const ratio = nextScale / scale\r\n return {\r\n scale: nextScale,\r\n tx: pointerXFromCenter - (pointerXFromCenter - tx) * ratio,\r\n ty: pointerYFromCenter - (pointerYFromCenter - ty) * ratio,\r\n }\r\n}\r\n\r\nexport function toTransformCss(s: PictureViewportSnapshot): string {\r\n const sx = s.scale * (s.flipX ? -1 : 1)\r\n const sy = s.scale * (s.flipY ? -1 : 1)\r\n return `translate(${s.tx}px, ${s.ty}px) rotate(${s.rotate}deg) scale(${sx}, ${sy})`\r\n}\r\n\r\nexport type UsePictureViewport = {\r\n getSnapshot: () => PictureViewportSnapshot\r\n /** 供渲染:当前变换 CSS */\r\n getTransform: () => string\r\n setNaturalSize: (w: number, h: number) => void\r\n setViewportSize: (w: number, h: number) => void\r\n fit: (withTransition?: boolean) => void\r\n oneToOne: (withTransition?: boolean) => void\r\n zoomAt: (clientX: number, clientY: number, factor: number) => void\r\n zoomBy: (factor: number) => void\r\n panBy: (dx: number, dy: number) => void\r\n rotateBy: (delta: number) => void\r\n flip: (axis: 'x' | 'y') => void\r\n reset: () => void\r\n /** 是否已放大到可拖拽(相对 fit) */\r\n canPan: () => boolean\r\n subscribe: (listener: () => void) => () => void\r\n /** 最近一次按钮操作是否应带 transition(拖拽/滚轮后清 false) */\r\n consumeTransition: () => boolean\r\n /**\r\n * 切图前调用:记下相对「适应」的缩放比,清空平移;\r\n * 随后 setNaturalSize 会按该比例落到新图(fit/one 模式仍各自重算)。\r\n */\r\n prepareImageChange: () => void\r\n}\r\n\r\nexport function createPictureViewport(\r\n options: PictureViewportOptions = {},\r\n): UsePictureViewport {\r\n const zoomMin = options.zoomMin ?? DEFAULT_ZOOM_MIN\r\n const zoomMax = options.zoomMax ?? DEFAULT_ZOOM_MAX\r\n\r\n let naturalW = 0\r\n let naturalH = 0\r\n let viewportW = 0\r\n let viewportH = 0\r\n let withTransition = false\r\n /** 切图时携带的相对适应缩放比;null 表示不按比例携带 */\r\n let pendingZoomRatio: number | null = null\r\n\r\n let state: PictureViewportSnapshot = {\r\n scale: 1,\r\n tx: 0,\r\n ty: 0,\r\n rotate: 0,\r\n flipX: false,\r\n flipY: false,\r\n mode: 'fit',\r\n }\r\n\r\n const listeners = new Set<() => void>()\r\n\r\n function notify() {\r\n listeners.forEach((l) => l())\r\n }\r\n\r\n function setState(next: PictureViewportSnapshot, transition: boolean) {\r\n state = next\r\n withTransition = transition\r\n notify()\r\n }\r\n\r\n function fitScaleOf(rotate: number) {\r\n return computeFitScale(naturalW, naturalH, viewportW, viewportH, rotate)\r\n }\r\n\r\n function fit(withTrans = true) {\r\n const scale = clampScale(fitScaleOf(state.rotate), zoomMin, zoomMax)\r\n setState(\r\n {\r\n ...state,\r\n scale,\r\n tx: 0,\r\n ty: 0,\r\n mode: 'fit',\r\n },\r\n withTrans,\r\n )\r\n }\r\n\r\n function oneToOne(withTrans = true) {\r\n const scale = clampScale(1, zoomMin, zoomMax)\r\n setState(\r\n {\r\n ...state,\r\n scale,\r\n tx: 0,\r\n ty: 0,\r\n mode: 'one',\r\n },\r\n withTrans,\r\n )\r\n }\r\n\r\n function reset() {\r\n setState(\r\n {\r\n scale: clampScale(fitScaleOf(0), zoomMin, zoomMax),\r\n tx: 0,\r\n ty: 0,\r\n rotate: 0,\r\n flipX: false,\r\n flipY: false,\r\n mode: 'fit',\r\n },\r\n true,\r\n )\r\n }\r\n\r\n function zoomAt(clientX: number, clientY: number, factor: number) {\r\n // 调用方传入相对视口中心的坐标更稳;此处约定 client 为视口本地:中心原点\r\n const next = clampScale(state.scale * factor, zoomMin, zoomMax)\r\n const moved = zoomAtPoint(\r\n state.tx,\r\n state.ty,\r\n state.scale,\r\n next,\r\n clientX,\r\n clientY,\r\n )\r\n setState(\r\n {\r\n ...state,\r\n ...moved,\r\n mode: 'free',\r\n },\r\n false,\r\n )\r\n }\r\n\r\n function zoomBy(factor: number) {\r\n const next = clampScale(state.scale * factor, zoomMin, zoomMax)\r\n setState(\r\n {\r\n ...state,\r\n scale: next,\r\n mode: 'free',\r\n },\r\n true,\r\n )\r\n }\r\n\r\n function panBy(dx: number, dy: number) {\r\n if (!canPan()) return\r\n setState(\r\n {\r\n ...state,\r\n tx: state.tx + dx,\r\n ty: state.ty + dy,\r\n mode: 'free',\r\n },\r\n false,\r\n )\r\n }\r\n\r\n function rotateBy(delta: number) {\r\n const rotate = normalizeRotate(state.rotate + delta)\r\n const scale =\r\n state.mode === 'one'\r\n ? clampScale(1, zoomMin, zoomMax)\r\n : clampScale(fitScaleOf(rotate), zoomMin, zoomMax)\r\n setState(\r\n {\r\n ...state,\r\n rotate,\r\n scale,\r\n tx: 0,\r\n ty: 0,\r\n mode: state.mode === 'one' ? 'one' : 'fit',\r\n },\r\n true,\r\n )\r\n }\r\n\r\n function flip(axis: 'x' | 'y') {\r\n setState(\r\n {\r\n ...state,\r\n flipX: axis === 'x' ? !state.flipX : state.flipX,\r\n flipY: axis === 'y' ? !state.flipY : state.flipY,\r\n },\r\n true,\r\n )\r\n }\r\n\r\n function canPan() {\r\n const fit = fitScaleOf(state.rotate)\r\n return state.scale > fit * 1.001\r\n }\r\n\r\n function prepareImageChange() {\r\n if (state.mode === 'free') {\r\n const fit = fitScaleOf(state.rotate)\r\n pendingZoomRatio = fit > 0 ? state.scale / fit : 1\r\n } else {\r\n pendingZoomRatio = null\r\n }\r\n setState(\r\n {\r\n ...state,\r\n tx: 0,\r\n ty: 0,\r\n },\r\n false,\r\n )\r\n }\r\n\r\n return {\r\n getSnapshot: () => state,\r\n getTransform: () => toTransformCss(state),\r\n setNaturalSize: (w, h) => {\r\n naturalW = w\r\n naturalH = h\r\n if (state.mode === 'fit') {\r\n pendingZoomRatio = null\r\n fit(false)\r\n return\r\n }\r\n if (state.mode === 'one') {\r\n pendingZoomRatio = null\r\n oneToOne(false)\r\n return\r\n }\r\n // free:按切图前相对适应比例落到新图;无 pending 则保留绝对 scale\r\n if (pendingZoomRatio != null) {\r\n const next = clampScale(\r\n fitScaleOf(state.rotate) * pendingZoomRatio,\r\n zoomMin,\r\n zoomMax,\r\n )\r\n pendingZoomRatio = null\r\n setState(\r\n {\r\n ...state,\r\n scale: next,\r\n tx: 0,\r\n ty: 0,\r\n mode: 'free',\r\n },\r\n false,\r\n )\r\n return\r\n }\r\n setState(\r\n {\r\n ...state,\r\n scale: clampScale(state.scale, zoomMin, zoomMax),\r\n tx: 0,\r\n ty: 0,\r\n },\r\n false,\r\n )\r\n },\r\n setViewportSize: (w, h) => {\r\n if (w === viewportW && h === viewportH) return\r\n viewportW = w\r\n viewportH = h\r\n if (state.mode === 'fit') fit(false)\r\n else if (state.mode === 'one') oneToOne(false)\r\n },\r\n fit,\r\n oneToOne,\r\n zoomAt,\r\n zoomBy,\r\n panBy,\r\n rotateBy,\r\n flip,\r\n reset,\r\n canPan,\r\n subscribe: (listener) => {\r\n listeners.add(listener)\r\n return () => {\r\n listeners.delete(listener)\r\n }\r\n },\r\n consumeTransition: () => {\r\n const v = withTransition\r\n withTransition = false\r\n return v\r\n },\r\n prepareImageChange,\r\n }\r\n}\r\n\r\nexport const PICTURE_VIEWPORT_ZOOM_STEP = DEFAULT_ZOOM_STEP\r\n\r\nexport default createPictureViewport\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
export default function useRequest<T>(requestFn: undefined | ((para?: Ref<any>) => Promise<T>), para?: Ref<any>, manual?: boolean): {
|
|
3
|
+
loading: Ref<boolean, boolean>;
|
|
4
|
+
empty: Ref<boolean, boolean>;
|
|
5
|
+
data: Ref<T | T[], T | T[]>;
|
|
6
|
+
get: () => Promise<void>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isArray } from "../util/tools.js";
|
|
2
|
+
import { ref } from "vue";
|
|
3
|
+
//#region use/useRequest.ts
|
|
4
|
+
function useRequest(requestFn, para, manual = false) {
|
|
5
|
+
const loading = ref(false);
|
|
6
|
+
const empty = ref(false);
|
|
7
|
+
const data = ref();
|
|
8
|
+
async function get() {
|
|
9
|
+
try {
|
|
10
|
+
if (loading.value) return;
|
|
11
|
+
loading.value = true;
|
|
12
|
+
data.value = await requestFn?.(para?.value);
|
|
13
|
+
if (isArray(data.value)) empty.value = data.value.length === 0;
|
|
14
|
+
else empty.value = !data.value;
|
|
15
|
+
loading.value = false;
|
|
16
|
+
} catch (err) {
|
|
17
|
+
loading.value = false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
!manual && get();
|
|
21
|
+
return {
|
|
22
|
+
loading,
|
|
23
|
+
empty,
|
|
24
|
+
data,
|
|
25
|
+
get
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { useRequest as default };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=useRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRequest.js","names":[],"sources":["../../use/useRequest.ts"],"sourcesContent":["import type { Ref } from \"vue\"\r\nimport { ref } from \"vue\"\r\nimport { isArray } from \"../util\"\r\nexport default function useRequest<T>(\r\n requestFn: undefined | ((para?: Ref<any>) => Promise<T>),\r\n para?: Ref<any>,\r\n manual = false\r\n) {\r\n const loading = ref(false)\r\n const empty = ref(false)\r\n const data: Ref<T | T[] | undefined | null> = ref()\r\n\r\n async function get() {\r\n try {\r\n if (loading.value) {\r\n return\r\n }\r\n loading.value = true\r\n data.value = await requestFn?.(para?.value)\r\n if (isArray(data.value)) {\r\n empty.value = data.value.length === 0\r\n } else {\r\n empty.value = !data.value\r\n }\r\n loading.value = false\r\n } catch (err) {\r\n loading.value = false\r\n } finally {\r\n }\r\n }\r\n\r\n !manual && get()\r\n\r\n return {\r\n loading,\r\n empty,\r\n data,\r\n get,\r\n }\r\n}\r\n"],"mappings":";;;AAGA,SAAwB,WACtB,WACA,MACA,SAAS,OACT;CACA,MAAM,UAAU,IAAI,KAAK;CACzB,MAAM,QAAQ,IAAI,KAAK;CACvB,MAAM,OAAwC,IAAI;CAElD,eAAe,MAAM;EACnB,IAAI;GACF,IAAI,QAAQ,OACV;GAEF,QAAQ,QAAQ;GAChB,KAAK,QAAQ,MAAM,YAAY,MAAM,KAAK;GAC1C,IAAI,QAAQ,KAAK,KAAK,GACpB,MAAM,QAAQ,KAAK,MAAM,WAAW;QAEpC,MAAM,QAAQ,CAAC,KAAK;GAEtB,QAAQ,QAAQ;EAClB,SAAS,KAAK;GACZ,QAAQ,QAAQ;EAClB;CAEF;CAEA,CAAC,UAAU,IAAI;CAEf,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
|