@ioca/react 1.4.78 → 1.4.80
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/lib/cjs/_virtual/_rolldown/runtime.js +23 -0
- package/lib/cjs/components/affix/affix.js +66 -0
- package/lib/cjs/components/affix/affix.js.map +1 -0
- package/lib/cjs/components/affix/index.js +6 -0
- package/lib/cjs/components/affix/index.js.map +1 -0
- package/lib/cjs/components/affix/totop.js +25 -0
- package/lib/cjs/components/affix/totop.js.map +1 -0
- package/lib/cjs/components/badge/badge.js +24 -0
- package/lib/cjs/components/badge/badge.js.map +1 -0
- package/lib/cjs/components/badge/index.js +6 -0
- package/lib/cjs/components/badge/index.js.map +1 -0
- package/lib/cjs/components/button/button.js +64 -0
- package/lib/cjs/components/button/button.js.map +1 -0
- package/lib/cjs/components/button/confirm.js +60 -0
- package/lib/cjs/components/button/confirm.js.map +1 -0
- package/lib/cjs/components/button/group.js +26 -0
- package/lib/cjs/components/button/group.js.map +1 -0
- package/lib/cjs/components/button/index.js +6 -0
- package/lib/cjs/components/button/index.js.map +1 -0
- package/lib/cjs/components/button/toggle.js +46 -0
- package/lib/cjs/components/button/toggle.js.map +1 -0
- package/lib/cjs/components/card/card.js +33 -0
- package/lib/cjs/components/card/card.js.map +1 -0
- package/lib/cjs/components/card/index.js +6 -0
- package/lib/cjs/components/card/index.js.map +1 -0
- package/lib/cjs/components/checkbox/checkbox.js +66 -0
- package/lib/cjs/components/checkbox/checkbox.js.map +1 -0
- package/lib/cjs/components/checkbox/index.js +6 -0
- package/lib/cjs/components/checkbox/index.js.map +1 -0
- package/lib/cjs/components/checkbox/item.js +59 -0
- package/lib/cjs/components/checkbox/item.js.map +1 -0
- package/lib/cjs/components/collapse/collapse.js +84 -0
- package/lib/cjs/components/collapse/collapse.js.map +1 -0
- package/lib/cjs/components/collapse/index.js +6 -0
- package/lib/cjs/components/collapse/index.js.map +1 -0
- package/lib/cjs/components/collapse/item.js +10 -0
- package/lib/cjs/components/collapse/item.js.map +1 -0
- package/lib/cjs/components/datagrid/cell.js +39 -0
- package/lib/cjs/components/datagrid/cell.js.map +1 -0
- package/lib/cjs/components/datagrid/datagrid.js +140 -0
- package/lib/cjs/components/datagrid/datagrid.js.map +1 -0
- package/lib/cjs/components/datagrid/index.js +6 -0
- package/lib/cjs/components/datagrid/index.js.map +1 -0
- package/lib/cjs/components/datagrid/resize.js +42 -0
- package/lib/cjs/components/datagrid/resize.js.map +1 -0
- package/lib/cjs/components/datagrid/row.js +68 -0
- package/lib/cjs/components/datagrid/row.js.map +1 -0
- package/lib/cjs/components/datagrid/sorter.js +28 -0
- package/lib/cjs/components/datagrid/sorter.js.map +1 -0
- package/lib/cjs/components/description/description.js +43 -0
- package/lib/cjs/components/description/description.js.map +1 -0
- package/lib/cjs/components/description/index.js +6 -0
- package/lib/cjs/components/description/index.js.map +1 -0
- package/lib/cjs/components/drawer/drawer.js +84 -0
- package/lib/cjs/components/drawer/drawer.js.map +1 -0
- package/lib/cjs/components/drawer/index.js +6 -0
- package/lib/cjs/components/drawer/index.js.map +1 -0
- package/lib/cjs/components/dropdown/dropdown.js +38 -0
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -0
- package/lib/cjs/components/dropdown/index.js +6 -0
- package/lib/cjs/components/dropdown/index.js.map +1 -0
- package/lib/cjs/components/dropdown/item.js +36 -0
- package/lib/cjs/components/dropdown/item.js.map +1 -0
- package/lib/cjs/components/editor/controls.js +89 -0
- package/lib/cjs/components/editor/controls.js.map +1 -0
- package/lib/cjs/components/editor/editor.js +91 -0
- package/lib/cjs/components/editor/editor.js.map +1 -0
- package/lib/cjs/components/editor/index.js +6 -0
- package/lib/cjs/components/editor/index.js.map +1 -0
- package/lib/cjs/components/flex/flex.js +31 -0
- package/lib/cjs/components/flex/flex.js.map +1 -0
- package/lib/cjs/components/flex/index.js +6 -0
- package/lib/cjs/components/flex/index.js.map +1 -0
- package/lib/cjs/components/form/context.js +7 -0
- package/lib/cjs/components/form/context.js.map +1 -0
- package/lib/cjs/components/form/field.js +71 -0
- package/lib/cjs/components/form/field.js.map +1 -0
- package/lib/cjs/components/form/form.js +64 -0
- package/lib/cjs/components/form/form.js.map +1 -0
- package/lib/cjs/components/form/index.js +6 -0
- package/lib/cjs/components/form/index.js.map +1 -0
- package/lib/cjs/components/form/useConfig.js +45 -0
- package/lib/cjs/components/form/useConfig.js.map +1 -0
- package/lib/cjs/components/form/useForm.js +123 -0
- package/lib/cjs/components/form/useForm.js.map +1 -0
- package/lib/cjs/components/icon/icon.js +24 -0
- package/lib/cjs/components/icon/icon.js.map +1 -0
- package/lib/cjs/components/icon/index.js +6 -0
- package/lib/cjs/components/icon/index.js.map +1 -0
- package/lib/cjs/components/image/image.js +86 -0
- package/lib/cjs/components/image/image.js.map +1 -0
- package/lib/cjs/components/image/index.js +6 -0
- package/lib/cjs/components/image/index.js.map +1 -0
- package/lib/cjs/components/image/list.js +49 -0
- package/lib/cjs/components/image/list.js.map +1 -0
- package/lib/cjs/components/input/container.js +30 -0
- package/lib/cjs/components/input/container.js.map +1 -0
- package/lib/cjs/components/input/index.js +6 -0
- package/lib/cjs/components/input/index.js.map +1 -0
- package/lib/cjs/components/input/input.js +113 -0
- package/lib/cjs/components/input/input.js.map +1 -0
- package/lib/cjs/components/input/number.js +138 -0
- package/lib/cjs/components/input/number.js.map +1 -0
- package/lib/cjs/components/input/range.js +134 -0
- package/lib/cjs/components/input/range.js.map +1 -0
- package/lib/cjs/components/input/textarea.js +61 -0
- package/lib/cjs/components/input/textarea.js.map +1 -0
- package/lib/cjs/components/list/index.js +6 -0
- package/lib/cjs/components/list/index.js.map +1 -0
- package/lib/cjs/components/list/item.js +30 -0
- package/lib/cjs/components/list/item.js.map +1 -0
- package/lib/cjs/components/list/list.js +30 -0
- package/lib/cjs/components/list/list.js.map +1 -0
- package/lib/cjs/components/loading/index.js +6 -0
- package/lib/cjs/components/loading/index.js.map +1 -0
- package/lib/cjs/components/loading/loading.js +39 -0
- package/lib/cjs/components/loading/loading.js.map +1 -0
- package/lib/cjs/components/message/index.js +6 -0
- package/lib/cjs/components/message/index.js.map +1 -0
- package/lib/cjs/components/message/message.js +197 -0
- package/lib/cjs/components/message/message.js.map +1 -0
- package/lib/cjs/components/modal/content.js +57 -0
- package/lib/cjs/components/modal/content.js.map +1 -0
- package/lib/cjs/components/modal/context.js +7 -0
- package/lib/cjs/components/modal/context.js.map +1 -0
- package/lib/cjs/components/modal/hookModal.js +28 -0
- package/lib/cjs/components/modal/hookModal.js.map +1 -0
- package/lib/cjs/components/modal/index.js +6 -0
- package/lib/cjs/components/modal/index.js.map +1 -0
- package/lib/cjs/components/modal/modal.js +117 -0
- package/lib/cjs/components/modal/modal.js.map +1 -0
- package/lib/cjs/components/modal/useModal.js +39 -0
- package/lib/cjs/components/modal/useModal.js.map +1 -0
- package/lib/cjs/components/pagination/index.js +6 -0
- package/lib/cjs/components/pagination/index.js.map +1 -0
- package/lib/cjs/components/pagination/page.js +31 -0
- package/lib/cjs/components/pagination/page.js.map +1 -0
- package/lib/cjs/components/pagination/pagination.js +86 -0
- package/lib/cjs/components/pagination/pagination.js.map +1 -0
- package/lib/cjs/components/picker/colors/footer.js +64 -0
- package/lib/cjs/components/picker/colors/footer.js.map +1 -0
- package/lib/cjs/components/picker/colors/handle.js +25 -0
- package/lib/cjs/components/picker/colors/handle.js.map +1 -0
- package/lib/cjs/components/picker/colors/index.js +81 -0
- package/lib/cjs/components/picker/colors/index.js.map +1 -0
- package/lib/cjs/components/picker/dates/dates.js +68 -0
- package/lib/cjs/components/picker/dates/dates.js.map +1 -0
- package/lib/cjs/components/picker/dates/index.js +97 -0
- package/lib/cjs/components/picker/dates/index.js.map +1 -0
- package/lib/cjs/components/picker/dates/panel.js +151 -0
- package/lib/cjs/components/picker/dates/panel.js.map +1 -0
- package/lib/cjs/components/picker/time/index.js +73 -0
- package/lib/cjs/components/picker/time/index.js.map +1 -0
- package/lib/cjs/components/picker/time/item.js +20 -0
- package/lib/cjs/components/picker/time/item.js.map +1 -0
- package/lib/cjs/components/picker/time/panel.js +144 -0
- package/lib/cjs/components/picker/time/panel.js.map +1 -0
- package/lib/cjs/components/popconfirm/index.js +6 -0
- package/lib/cjs/components/popconfirm/index.js.map +1 -0
- package/lib/cjs/components/popconfirm/popconfirm.js +86 -0
- package/lib/cjs/components/popconfirm/popconfirm.js.map +1 -0
- package/lib/cjs/components/popup/content.js +56 -0
- package/lib/cjs/components/popup/content.js.map +1 -0
- package/lib/cjs/components/popup/index.js +6 -0
- package/lib/cjs/components/popup/index.js.map +1 -0
- package/lib/cjs/components/popup/popup.js +425 -0
- package/lib/cjs/components/popup/popup.js.map +1 -0
- package/lib/cjs/components/progress/circle.js +45 -0
- package/lib/cjs/components/progress/circle.js.map +1 -0
- package/lib/cjs/components/progress/index.js +6 -0
- package/lib/cjs/components/progress/index.js.map +1 -0
- package/lib/cjs/components/progress/line.js +27 -0
- package/lib/cjs/components/progress/line.js.map +1 -0
- package/lib/cjs/components/progress/progress.js +100 -0
- package/lib/cjs/components/progress/progress.js.map +1 -0
- package/lib/cjs/components/radio/index.js +6 -0
- package/lib/cjs/components/radio/index.js.map +1 -0
- package/lib/cjs/components/radio/item.js +34 -0
- package/lib/cjs/components/radio/item.js.map +1 -0
- package/lib/cjs/components/radio/radio.js +62 -0
- package/lib/cjs/components/radio/radio.js.map +1 -0
- package/lib/cjs/components/resizable/index.js +6 -0
- package/lib/cjs/components/resizable/index.js.map +1 -0
- package/lib/cjs/components/resizable/resizable.js +81 -0
- package/lib/cjs/components/resizable/resizable.js.map +1 -0
- package/lib/cjs/components/river/index.js +6 -0
- package/lib/cjs/components/river/index.js.map +1 -0
- package/lib/cjs/components/river/river.js +116 -0
- package/lib/cjs/components/river/river.js.map +1 -0
- package/lib/cjs/components/select/index.js +6 -0
- package/lib/cjs/components/select/index.js.map +1 -0
- package/lib/cjs/components/select/options.js +76 -0
- package/lib/cjs/components/select/options.js.map +1 -0
- package/lib/cjs/components/select/select.js +155 -0
- package/lib/cjs/components/select/select.js.map +1 -0
- package/lib/cjs/components/step/divider.js +10 -0
- package/lib/cjs/components/step/divider.js.map +1 -0
- package/lib/cjs/components/step/index.js +6 -0
- package/lib/cjs/components/step/index.js.map +1 -0
- package/lib/cjs/components/step/item.js +60 -0
- package/lib/cjs/components/step/item.js.map +1 -0
- package/lib/cjs/components/step/step.js +42 -0
- package/lib/cjs/components/step/step.js.map +1 -0
- package/lib/cjs/components/swiper/index.js +6 -0
- package/lib/cjs/components/swiper/index.js.map +1 -0
- package/lib/cjs/components/swiper/item.js +39 -0
- package/lib/cjs/components/swiper/item.js.map +1 -0
- package/lib/cjs/components/swiper/swiper.js +262 -0
- package/lib/cjs/components/swiper/swiper.js.map +1 -0
- package/lib/cjs/components/tabs/index.js +6 -0
- package/lib/cjs/components/tabs/index.js.map +1 -0
- package/lib/cjs/components/tabs/item.js +10 -0
- package/lib/cjs/components/tabs/item.js.map +1 -0
- package/lib/cjs/components/tabs/tabs.js +272 -0
- package/lib/cjs/components/tabs/tabs.js.map +1 -0
- package/lib/cjs/components/tag/index.js +6 -0
- package/lib/cjs/components/tag/index.js.map +1 -0
- package/lib/cjs/components/tag/tag.js +32 -0
- package/lib/cjs/components/tag/tag.js.map +1 -0
- package/lib/cjs/components/text/highlight.js +35 -0
- package/lib/cjs/components/text/highlight.js.map +1 -0
- package/lib/cjs/components/text/index.js +6 -0
- package/lib/cjs/components/text/index.js.map +1 -0
- package/lib/cjs/components/text/number.js +32 -0
- package/lib/cjs/components/text/number.js.map +1 -0
- package/lib/cjs/components/text/text.js +39 -0
- package/lib/cjs/components/text/text.js.map +1 -0
- package/lib/cjs/components/text/time.js +24 -0
- package/lib/cjs/components/text/time.js.map +1 -0
- package/lib/cjs/components/tree/index.js +6 -0
- package/lib/cjs/components/tree/index.js.map +1 -0
- package/lib/cjs/components/tree/item.js +136 -0
- package/lib/cjs/components/tree/item.js.map +1 -0
- package/lib/cjs/components/tree/tree.js +127 -0
- package/lib/cjs/components/tree/tree.js.map +1 -0
- package/lib/cjs/components/upload/index.js +6 -0
- package/lib/cjs/components/upload/index.js.map +1 -0
- package/lib/cjs/components/upload/renderFile.js +99 -0
- package/lib/cjs/components/upload/renderFile.js.map +1 -0
- package/lib/cjs/components/upload/upload.js +165 -0
- package/lib/cjs/components/upload/upload.js.map +1 -0
- package/lib/cjs/components/utils/empty/index.js +17 -0
- package/lib/cjs/components/utils/empty/index.js.map +1 -0
- package/lib/cjs/components/utils/helpericon/helpericon.js +24 -0
- package/lib/cjs/components/utils/helpericon/helpericon.js.map +1 -0
- package/lib/cjs/components/utils/helpericon/index.js +6 -0
- package/lib/cjs/components/utils/helpericon/index.js.map +1 -0
- package/lib/cjs/components/video/index.js +6 -0
- package/lib/cjs/components/video/index.js.map +1 -0
- package/lib/cjs/components/video/video.js +237 -0
- package/lib/cjs/components/video/video.js.map +1 -0
- package/lib/cjs/index.js +83 -0
- package/lib/cjs/js/hooks.js +259 -0
- package/lib/cjs/js/hooks.js.map +1 -0
- package/lib/cjs/js/usePreview/content.js +197 -0
- package/lib/cjs/js/usePreview/content.js.map +1 -0
- package/lib/cjs/js/usePreview/index.js +39 -0
- package/lib/cjs/js/usePreview/index.js.map +1 -0
- package/lib/cjs/js/usePreview/renderFile.js +28 -0
- package/lib/cjs/js/usePreview/renderFile.js.map +1 -0
- package/lib/cjs/js/usePreview/type.js +15 -0
- package/lib/cjs/js/usePreview/type.js.map +1 -0
- package/lib/cjs/js/useRipple/index.js +45 -0
- package/lib/cjs/js/useRipple/index.js.map +1 -0
- package/lib/cjs/js/useTheme/index.js +30 -0
- package/lib/cjs/js/useTheme/index.js.map +1 -0
- package/lib/cjs/js/utils.js +284 -0
- package/lib/cjs/js/utils.js.map +1 -0
- package/lib/es/components/affix/affix.js +1 -1
- package/lib/es/components/affix/affix.js.map +1 -1
- package/lib/es/components/affix/totop.js +1 -1
- package/lib/es/components/affix/totop.js.map +1 -1
- package/lib/es/components/badge/badge.js.map +1 -1
- package/lib/es/components/button/button.js.map +1 -1
- package/lib/es/components/card/card.js.map +1 -1
- package/lib/es/components/checkbox/checkbox.js.map +1 -1
- package/lib/es/components/collapse/collapse.js +1 -2
- package/lib/es/components/collapse/collapse.js.map +1 -1
- package/lib/es/components/datagrid/datagrid.js.map +1 -1
- package/lib/es/components/description/description.js.map +1 -1
- package/lib/es/components/drawer/drawer.js.map +1 -1
- package/lib/es/components/dropdown/dropdown.js.map +1 -1
- package/lib/es/components/editor/controls.js +1 -7
- package/lib/es/components/editor/controls.js.map +1 -1
- package/lib/es/components/editor/editor.js.map +1 -1
- package/lib/es/components/flex/flex.js.map +1 -1
- package/lib/es/components/form/field.js +1 -1
- package/lib/es/components/form/form.js +1 -1
- package/lib/es/components/form/form.js.map +1 -1
- package/lib/es/components/form/useForm.js +2 -2
- package/lib/es/components/icon/icon.js.map +1 -1
- package/lib/es/components/image/image.js.map +1 -1
- package/lib/es/components/input/input.js +1 -2
- package/lib/es/components/input/input.js.map +1 -1
- package/lib/es/components/input/number.js +1 -3
- package/lib/es/components/input/number.js.map +1 -1
- package/lib/es/components/input/range.js +1 -3
- package/lib/es/components/input/range.js.map +1 -1
- package/lib/es/components/input/textarea.js.map +1 -1
- package/lib/es/components/list/list.js.map +1 -1
- package/lib/es/components/loading/loading.js.map +1 -1
- package/lib/es/components/message/message.js +2 -2
- package/lib/es/components/message/message.js.map +1 -1
- package/lib/es/components/modal/content.js.map +1 -1
- package/lib/es/components/modal/modal.js.map +1 -1
- package/lib/es/components/pagination/pagination.js +1 -3
- package/lib/es/components/pagination/pagination.js.map +1 -1
- package/lib/es/components/picker/colors/footer.js +1 -1
- package/lib/es/components/picker/colors/footer.js.map +1 -1
- package/lib/es/components/picker/colors/index.js.map +1 -1
- package/lib/es/components/picker/dates/index.js +2 -2
- package/lib/es/components/picker/dates/index.js.map +1 -1
- package/lib/es/components/picker/dates/panel.js +2 -3
- package/lib/es/components/picker/dates/panel.js.map +1 -1
- package/lib/es/components/picker/time/index.js +1 -1
- package/lib/es/components/picker/time/index.js.map +1 -1
- package/lib/es/components/picker/time/panel.js.map +1 -1
- package/lib/es/components/popconfirm/popconfirm.js +1 -1
- package/lib/es/components/popconfirm/popconfirm.js.map +1 -1
- package/lib/es/components/popup/popup.js +1 -1
- package/lib/es/components/popup/popup.js.map +1 -1
- package/lib/es/components/progress/progress.js.map +1 -1
- package/lib/es/components/radio/radio.js.map +1 -1
- package/lib/es/components/resizable/resizable.js.map +1 -1
- package/lib/es/components/river/river.js.map +1 -1
- package/lib/es/components/select/options.js +1 -2
- package/lib/es/components/select/options.js.map +1 -1
- package/lib/es/components/select/select.js +2 -2
- package/lib/es/components/select/select.js.map +1 -1
- package/lib/es/components/step/divider.js.map +1 -1
- package/lib/es/components/step/item.js +1 -1
- package/lib/es/components/step/item.js.map +1 -1
- package/lib/es/components/step/step.js.map +1 -1
- package/lib/es/components/swiper/swiper.js +1 -2
- package/lib/es/components/swiper/swiper.js.map +1 -1
- package/lib/es/components/tabs/tabs.js +1 -1
- package/lib/es/components/tabs/tabs.js.map +1 -1
- package/lib/es/components/tag/tag.js.map +1 -1
- package/lib/es/components/text/highlight.js +1 -1
- package/lib/es/components/text/text.js.map +1 -1
- package/lib/es/components/tree/item.js +1 -1
- package/lib/es/components/tree/item.js.map +1 -1
- package/lib/es/components/tree/tree.js.map +1 -1
- package/lib/es/components/upload/renderFile.js +2 -2
- package/lib/es/components/upload/renderFile.js.map +1 -1
- package/lib/es/components/upload/upload.js +2 -3
- package/lib/es/components/upload/upload.js.map +1 -1
- package/lib/es/components/utils/empty/index.js +1 -1
- package/lib/es/components/utils/empty/index.js.map +1 -1
- package/lib/es/components/utils/helpericon/helpericon.js +2 -2
- package/lib/es/components/utils/helpericon/helpericon.js.map +1 -1
- package/lib/es/components/video/video.js +2 -8
- package/lib/es/components/video/video.js.map +1 -1
- package/lib/es/js/usePreview/content.js +2 -9
- package/lib/es/js/usePreview/content.js.map +1 -1
- package/lib/es/js/usePreview/index.js.map +1 -1
- package/lib/es/js/usePreview/renderFile.js +1 -1
- package/lib/es/js/usePreview/renderFile.js.map +1 -1
- package/lib/es/js/useRipple/index.js.map +1 -1
- package/lib/es/js/utils.js +1 -1
- package/lib/types/components/affix/affix.js +1 -2
- package/lib/types/components/affix/totop.js +1 -1
- package/lib/types/components/badge/badge.js +0 -1
- package/lib/types/components/button/button.js +0 -1
- package/lib/types/components/card/card.js +0 -1
- package/lib/types/components/checkbox/checkbox.js +0 -2
- package/lib/types/components/collapse/collapse.js +1 -3
- package/lib/types/components/datagrid/datagrid.js +0 -1
- package/lib/types/components/description/description.js +0 -1
- package/lib/types/components/drawer/drawer.js +0 -1
- package/lib/types/components/dropdown/dropdown.js +0 -1
- package/lib/types/components/editor/controls.js +1 -7
- package/lib/types/components/editor/editor.js +0 -1
- package/lib/types/components/flex/flex.js +0 -1
- package/lib/types/components/form/field.js +1 -1
- package/lib/types/components/form/form.js +1 -2
- package/lib/types/components/form/useForm.js +2 -2
- package/lib/types/components/icon/icon.js +0 -1
- package/lib/types/components/image/image.js +0 -1
- package/lib/types/components/input/input.js +1 -3
- package/lib/types/components/input/number.js +1 -4
- package/lib/types/components/input/range.js +1 -4
- package/lib/types/components/input/textarea.js +0 -1
- package/lib/types/components/list/list.js +0 -1
- package/lib/types/components/loading/loading.js +0 -1
- package/lib/types/components/message/message.js +2 -3
- package/lib/types/components/modal/content.js +0 -1
- package/lib/types/components/modal/modal.js +0 -1
- package/lib/types/components/pagination/pagination.js +1 -4
- package/lib/types/components/picker/colors/footer.js +1 -1
- package/lib/types/components/picker/colors/index.js +0 -1
- package/lib/types/components/picker/dates/index.js +2 -3
- package/lib/types/components/picker/dates/panel.js +2 -3
- package/lib/types/components/picker/time/index.js +1 -1
- package/lib/types/components/picker/time/panel.js +0 -1
- package/lib/types/components/popconfirm/popconfirm.js +1 -2
- package/lib/types/components/popup/popup.js +1 -2
- package/lib/types/components/progress/progress.js +0 -2
- package/lib/types/components/radio/radio.js +0 -2
- package/lib/types/components/resizable/resizable.js +0 -1
- package/lib/types/components/river/river.js +0 -1
- package/lib/types/components/select/options.js +1 -2
- package/lib/types/components/select/select.js +2 -4
- package/lib/types/components/step/divider.js +0 -1
- package/lib/types/components/step/item.js +1 -1
- package/lib/types/components/step/step.js +0 -1
- package/lib/types/components/swiper/swiper.js +1 -3
- package/lib/types/components/tabs/tabs.js +1 -2
- package/lib/types/components/tag/tag.js +0 -1
- package/lib/types/components/text/highlight.js +1 -1
- package/lib/types/components/text/text.js +0 -1
- package/lib/types/components/tree/item.js +1 -1
- package/lib/types/components/tree/tree.js +0 -1
- package/lib/types/components/upload/renderFile.js +2 -2
- package/lib/types/components/upload/upload.js +2 -4
- package/lib/types/components/utils/empty/index.js +1 -2
- package/lib/types/components/utils/helpericon/helpericon.js +2 -3
- package/lib/types/components/video/video.js +2 -9
- package/lib/types/index.js +0 -1
- package/lib/types/js/usePreview/content.js +2 -9
- package/lib/types/js/usePreview/index.js +0 -1
- package/lib/types/js/usePreview/renderFile.js +1 -1
- package/lib/types/js/useRipple/index.js +0 -1
- package/lib/types/js/utils.js +1 -1
- package/package.json +8 -3
- package/lib/css/index.css +0 -1
- package/lib/types/components/affix/affix.d.ts +0 -7
- package/lib/types/components/affix/index.d.ts +0 -2
- package/lib/types/components/affix/totop.d.ts +0 -3
- package/lib/types/components/affix/type.d.ts +0 -10
- package/lib/types/components/area/area.d.ts +0 -3
- package/lib/types/components/area/index.d.ts +0 -2
- package/lib/types/components/area/item.d.ts +0 -3
- package/lib/types/components/area/type.d.ts +0 -12
- package/lib/types/components/badge/badge.d.ts +0 -3
- package/lib/types/components/badge/index.d.ts +0 -2
- package/lib/types/components/badge/type.d.ts +0 -12
- package/lib/types/components/button/button.d.ts +0 -3
- package/lib/types/components/button/confirm.d.ts +0 -2
- package/lib/types/components/button/group.d.ts +0 -2
- package/lib/types/components/button/index.d.ts +0 -2
- package/lib/types/components/button/toggle.d.ts +0 -2
- package/lib/types/components/button/type.d.ts +0 -51
- package/lib/types/components/card/card.d.ts +0 -3
- package/lib/types/components/card/index.d.ts +0 -2
- package/lib/types/components/card/type.d.ts +0 -10
- package/lib/types/components/checkbox/checkbox.d.ts +0 -7
- package/lib/types/components/checkbox/index.d.ts +0 -2
- package/lib/types/components/checkbox/item.d.ts +0 -2
- package/lib/types/components/checkbox/type.d.ts +0 -22
- package/lib/types/components/collapse/collapse.d.ts +0 -7
- package/lib/types/components/collapse/index.d.ts +0 -2
- package/lib/types/components/collapse/item.d.ts +0 -2
- package/lib/types/components/collapse/type.d.ts +0 -20
- package/lib/types/components/datagrid/cell.d.ts +0 -13
- package/lib/types/components/datagrid/datagrid.d.ts +0 -3
- package/lib/types/components/datagrid/index.d.ts +0 -2
- package/lib/types/components/datagrid/resize.d.ts +0 -1
- package/lib/types/components/datagrid/row.d.ts +0 -3
- package/lib/types/components/datagrid/sorter.d.ts +0 -1
- package/lib/types/components/datagrid/type.d.ts +0 -61
- package/lib/types/components/description/description.d.ts +0 -3
- package/lib/types/components/description/index.d.ts +0 -2
- package/lib/types/components/description/type.d.ts +0 -23
- package/lib/types/components/drawer/drawer.d.ts +0 -3
- package/lib/types/components/drawer/index.d.ts +0 -2
- package/lib/types/components/drawer/type.d.ts +0 -13
- package/lib/types/components/drawer/useDrawer.d.ts +0 -0
- package/lib/types/components/dropdown/dropdown.d.ts +0 -6
- package/lib/types/components/dropdown/index.d.ts +0 -2
- package/lib/types/components/dropdown/item.d.ts +0 -3
- package/lib/types/components/dropdown/type.d.ts +0 -11
- package/lib/types/components/editor/controls.d.ts +0 -5
- package/lib/types/components/editor/editor.d.ts +0 -3
- package/lib/types/components/editor/index.d.ts +0 -2
- package/lib/types/components/editor/type.d.ts +0 -17
- package/lib/types/components/flex/flex.d.ts +0 -3
- package/lib/types/components/flex/index.d.ts +0 -2
- package/lib/types/components/flex/type.d.ts +0 -10
- package/lib/types/components/form/context.d.ts +0 -3
- package/lib/types/components/form/field.d.ts +0 -3
- package/lib/types/components/form/form.d.ts +0 -11
- package/lib/types/components/form/index.d.ts +0 -2
- package/lib/types/components/form/type.d.ts +0 -40
- package/lib/types/components/form/useConfig.d.ts +0 -5
- package/lib/types/components/form/useForm.d.ts +0 -14
- package/lib/types/components/icon/icon.d.ts +0 -3
- package/lib/types/components/icon/index.d.ts +0 -2
- package/lib/types/components/icon/type.d.ts +0 -9
- package/lib/types/components/image/image.d.ts +0 -3
- package/lib/types/components/image/index.d.ts +0 -2
- package/lib/types/components/image/list.d.ts +0 -2
- package/lib/types/components/image/type.d.ts +0 -30
- package/lib/types/components/input/container.d.ts +0 -2
- package/lib/types/components/input/index.d.ts +0 -2
- package/lib/types/components/input/input.d.ts +0 -3
- package/lib/types/components/input/number.d.ts +0 -3
- package/lib/types/components/input/range.d.ts +0 -3
- package/lib/types/components/input/textarea.d.ts +0 -3
- package/lib/types/components/input/type.d.ts +0 -61
- package/lib/types/components/list/index.d.ts +0 -2
- package/lib/types/components/list/item.d.ts +0 -3
- package/lib/types/components/list/list.d.ts +0 -6
- package/lib/types/components/list/type.d.ts +0 -13
- package/lib/types/components/loading/index.d.ts +0 -2
- package/lib/types/components/loading/loading.d.ts +0 -3
- package/lib/types/components/loading/type.d.ts +0 -7
- package/lib/types/components/message/index.d.ts +0 -2
- package/lib/types/components/message/message.d.ts +0 -27
- package/lib/types/components/message/type.d.ts +0 -29
- package/lib/types/components/modal/content.d.ts +0 -2
- package/lib/types/components/modal/context.d.ts +0 -2
- package/lib/types/components/modal/hookModal.d.ts +0 -6
- package/lib/types/components/modal/index.d.ts +0 -2
- package/lib/types/components/modal/modal.d.ts +0 -3
- package/lib/types/components/modal/type.d.ts +0 -34
- package/lib/types/components/modal/useModal.d.ts +0 -6
- package/lib/types/components/pagination/index.d.ts +0 -2
- package/lib/types/components/pagination/page.d.ts +0 -3
- package/lib/types/components/pagination/pagination.d.ts +0 -3
- package/lib/types/components/pagination/type.d.ts +0 -20
- package/lib/types/components/picker/colors/footer.d.ts +0 -6
- package/lib/types/components/picker/colors/handle.d.ts +0 -2
- package/lib/types/components/picker/colors/index.d.ts +0 -2
- package/lib/types/components/picker/dates/dates.d.ts +0 -5
- package/lib/types/components/picker/dates/index.d.ts +0 -3
- package/lib/types/components/picker/dates/panel.d.ts +0 -3
- package/lib/types/components/picker/index.d.ts +0 -10
- package/lib/types/components/picker/time/index.d.ts +0 -2
- package/lib/types/components/picker/time/item.d.ts +0 -1
- package/lib/types/components/picker/time/panel.d.ts +0 -1
- package/lib/types/components/picker/type.d.ts +0 -38
- package/lib/types/components/popconfirm/index.d.ts +0 -2
- package/lib/types/components/popconfirm/popconfirm.d.ts +0 -3
- package/lib/types/components/popconfirm/type.d.ts +0 -11
- package/lib/types/components/popup/content.d.ts +0 -3
- package/lib/types/components/popup/index.d.ts +0 -2
- package/lib/types/components/popup/popup.d.ts +0 -2
- package/lib/types/components/popup/type.d.ts +0 -25
- package/lib/types/components/progress/circle.d.ts +0 -2
- package/lib/types/components/progress/index.d.ts +0 -2
- package/lib/types/components/progress/line.d.ts +0 -9
- package/lib/types/components/progress/progress.d.ts +0 -3
- package/lib/types/components/progress/type.d.ts +0 -20
- package/lib/types/components/radio/index.d.ts +0 -2
- package/lib/types/components/radio/item.d.ts +0 -2
- package/lib/types/components/radio/radio.d.ts +0 -7
- package/lib/types/components/radio/type.d.ts +0 -18
- package/lib/types/components/resizable/index.d.ts +0 -2
- package/lib/types/components/resizable/resizable.d.ts +0 -3
- package/lib/types/components/resizable/type.d.ts +0 -16
- package/lib/types/components/river/index.d.ts +0 -2
- package/lib/types/components/river/river.d.ts +0 -3
- package/lib/types/components/river/type.d.ts +0 -5
- package/lib/types/components/select/index.d.ts +0 -2
- package/lib/types/components/select/options.d.ts +0 -5
- package/lib/types/components/select/select.d.ts +0 -3
- package/lib/types/components/select/type.d.ts +0 -24
- package/lib/types/components/step/divider.d.ts +0 -1
- package/lib/types/components/step/index.d.ts +0 -2
- package/lib/types/components/step/item.d.ts +0 -3
- package/lib/types/components/step/step.d.ts +0 -7
- package/lib/types/components/step/type.d.ts +0 -16
- package/lib/types/components/swiper/index.d.ts +0 -2
- package/lib/types/components/swiper/item.d.ts +0 -3
- package/lib/types/components/swiper/swiper.d.ts +0 -3
- package/lib/types/components/swiper/type.d.ts +0 -49
- package/lib/types/components/tabs/index.d.ts +0 -2
- package/lib/types/components/tabs/item.d.ts +0 -3
- package/lib/types/components/tabs/tabs.d.ts +0 -3
- package/lib/types/components/tabs/type.d.ts +0 -41
- package/lib/types/components/tag/index.d.ts +0 -2
- package/lib/types/components/tag/tag.d.ts +0 -3
- package/lib/types/components/tag/type.d.ts +0 -11
- package/lib/types/components/text/highlight.d.ts +0 -2
- package/lib/types/components/text/index.d.ts +0 -2
- package/lib/types/components/text/number.d.ts +0 -2
- package/lib/types/components/text/text.d.ts +0 -3
- package/lib/types/components/text/time.d.ts +0 -2
- package/lib/types/components/text/type.d.ts +0 -40
- package/lib/types/components/tree/index.d.ts +0 -2
- package/lib/types/components/tree/item.d.ts +0 -11
- package/lib/types/components/tree/tree.d.ts +0 -3
- package/lib/types/components/tree/type.d.ts +0 -60
- package/lib/types/components/upload/index.d.ts +0 -2
- package/lib/types/components/upload/renderFile.d.ts +0 -7
- package/lib/types/components/upload/type.d.ts +0 -41
- package/lib/types/components/upload/upload.d.ts +0 -3
- package/lib/types/components/utils/empty/index.d.ts +0 -1
- package/lib/types/components/utils/helpericon/helpericon.d.ts +0 -3
- package/lib/types/components/utils/helpericon/index.d.ts +0 -2
- package/lib/types/components/utils/helpericon/type.d.ts +0 -11
- package/lib/types/components/video/index.d.ts +0 -2
- package/lib/types/components/video/type.d.ts +0 -24
- package/lib/types/components/video/video.d.ts +0 -3
- package/lib/types/index.d.ts +0 -40
- package/lib/types/js/hooks.d.ts +0 -36
- package/lib/types/js/usePreview/content.d.ts +0 -2
- package/lib/types/js/usePreview/index.d.ts +0 -2
- package/lib/types/js/usePreview/renderFile.d.ts +0 -2
- package/lib/types/js/usePreview/type.d.ts +0 -36
- package/lib/types/js/useRipple/index.d.ts +0 -2
- package/lib/types/js/useTheme/index.d.ts +0 -6
- package/lib/types/js/useTheme/type.d.ts +0 -9
- package/lib/types/js/utils.d.ts +0 -36
- package/lib/types/type/index.d.ts +0 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.js","names":[],"sources":["../../../../../packages/components/picker/time/panel.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport \"./index.css\";\nimport Items from \"./item\";\n\nconst UnitMaps = {\n\th: \"hour\",\n\thh: \"hour\",\n\tm: \"minute\",\n\tmm: \"minute\",\n\ts: \"second\",\n\tss: \"second\",\n};\n\nexport default function Panel(props) {\n\tconst {\n\t\tvalue,\n\t\tstepH = 1,\n\t\tstepM = 1,\n\t\tstepS = 1,\n\t\tformat,\n\t\tperiods,\n\t\trenderItem,\n\t\tonChange,\n\t\tonFallback,\n\t} = props;\n\tconst [period, setPeriod] = useState<any>(undefined);\n\tconst [hour, setHour] = useState<any>(undefined);\n\tconst [minute, setMinute] = useState<any>(undefined);\n\tconst [second, setSecond] = useState<any>(undefined);\n\n\tconst [hours, minutes, seconds] = useMemo(() => {\n\t\tconst hasH = format.includes(\"h\");\n\t\tconst hasM = format.includes(\"m\");\n\t\tconst hasS = format.includes(\"s\");\n\t\tconst hours = hasH\n\t\t\t? Array.from(\n\t\t\t\t\t{ length: (periods ? 12 : 24) / stepH },\n\t\t\t\t\t(_, i) => i * stepH\n\t\t\t )\n\t\t\t: [];\n\t\tconst minutes = hasM\n\t\t\t? Array.from({ length: 60 / stepM }, (_, i) => i * stepM)\n\t\t\t: [];\n\t\tconst seconds = hasS\n\t\t\t? Array.from({ length: 60 / stepS }, (_, i) => i * stepS)\n\t\t\t: [];\n\n\t\treturn [hours, minutes, seconds];\n\t}, [stepH, stepM, stepS, format, periods]);\n\n\tconst updateValue = (next?: {\n\t\tperiod?: any;\n\t\thour?: any;\n\t\tminute?: any;\n\t\tsecond?: any;\n\t}) => {\n\t\tconst nextPeriod = next?.period ?? period;\n\t\tconst nextHour = next?.hour ?? hour;\n\t\tconst nextMinute = next?.minute ?? minute;\n\t\tconst nextSecond = next?.second ?? second;\n\n\t\tconst reg = /(hh|h){1}|(mm|m){1}|(ss|s){1}/gi;\n\t\tlet result = format.replace(reg, (pattern) => {\n\t\t\tconst p = pattern.toLowerCase();\n\t\t\tconst u = UnitMaps[p];\n\t\t\tconst n =\n\t\t\t\tu === \"hour\"\n\t\t\t\t\t? (nextHour ?? 0)\n\t\t\t\t\t: u === \"minute\"\n\t\t\t\t\t\t? (nextMinute ?? 0)\n\t\t\t\t\t\t: (nextSecond ?? 0);\n\n\t\t\treturn p.length > 1 && n < 10 ? `0${n ?? 0}` : n ?? 0;\n\t\t});\n\n\t\tif (periods && hours.length > 0) {\n\t\t\tresult = `${nextPeriod ?? periods[0]} ${result}`;\n\t\t}\n\n\t\tonChange(result);\n\t};\n\n\tconst handleSetTime = (v, unit) => {\n\t\tconst next = { period, hour, minute, second, [unit]: v };\n\n\t\tif (unit === \"period\") setPeriod(v);\n\t\tif (unit === \"hour\") setHour(v);\n\t\tif (unit === \"minute\") setMinute(v);\n\t\tif (unit === \"second\") setSecond(v);\n\n\t\tupdateValue(next);\n\t};\n\n\tuseEffect(() => {\n\t\tlet time = value ?? \"\";\n\n\t\tif (periods && hours.length > 0 && value) {\n\t\t\tconst [p, t] = value.split(\" \");\n\t\t\ttime = t ?? \"\";\n\t\t\tsetPeriod(periods.includes(p) ? p : undefined);\n\t\t}\n\n\t\tconst nums = time.match(/\\d+/g) ?? [];\n\n\t\tif (!nums.length) {\n\t\t\tonFallback(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet i = 0;\n\t\tconst parsed = {\n\t\t\thour: undefined,\n\t\t\tminute: undefined,\n\t\t\tsecond: undefined,\n\t\t};\n\t\tconst r = format.replace(/(hh|h)+|(mm|m)+|(ss|s)+/gi, (p) => {\n\t\t\tconst n = nums[i++] ?? 0;\n\t\t\tconst o = Math.min(59, n);\n\t\t\tparsed[UnitMaps[p]] = o;\n\t\t\treturn p.length > 1 && o < 10 ? `0${o}` : o;\n\t\t});\n\n\t\tsetHour(parsed.hour);\n\t\tsetMinute(parsed.minute);\n\t\tsetSecond(parsed.second);\n\t\tonFallback(r);\n\t}, [value, format, hours.length, periods]);\n\n\treturn (\n\t\t<div className='i-timepicker'>\n\t\t\t{hours.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{periods && (\n\t\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\t\titems={periods}\n\t\t\t\t\t\t\t\tactive={period}\n\t\t\t\t\t\t\t\tonClick={(p) => handleSetTime(p, \"period\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\titems={hours}\n\t\t\t\t\t\t\tactive={hour}\n\t\t\t\t\t\t\tunit='hour'\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\tonClick={(h) => handleSetTime(h, \"hour\")}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{minutes.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={minutes}\n\t\t\t\t\t\tactive={minute}\n\t\t\t\t\t\tunit='minute'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(m) => handleSetTime(m, \"minute\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{seconds.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={seconds}\n\t\t\t\t\t\tactive={second}\n\t\t\t\t\t\tunit='second'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(s) => handleSetTime(s, \"second\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"panel.js","names":[],"sources":["../../../../../packages/components/picker/time/panel.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport \"./index.css\";\nimport Items from \"./item\";\n\nconst UnitMaps = {\n\th: \"hour\",\n\thh: \"hour\",\n\tm: \"minute\",\n\tmm: \"minute\",\n\ts: \"second\",\n\tss: \"second\",\n};\n\nexport default function Panel(props) {\n\tconst {\n\t\tvalue,\n\t\tstepH = 1,\n\t\tstepM = 1,\n\t\tstepS = 1,\n\t\tformat,\n\t\tperiods,\n\t\trenderItem,\n\t\tonChange,\n\t\tonFallback,\n\t} = props;\n\tconst [period, setPeriod] = useState<any>(undefined);\n\tconst [hour, setHour] = useState<any>(undefined);\n\tconst [minute, setMinute] = useState<any>(undefined);\n\tconst [second, setSecond] = useState<any>(undefined);\n\n\tconst [hours, minutes, seconds] = useMemo(() => {\n\t\tconst hasH = format.includes(\"h\");\n\t\tconst hasM = format.includes(\"m\");\n\t\tconst hasS = format.includes(\"s\");\n\t\tconst hours = hasH\n\t\t\t? Array.from(\n\t\t\t\t\t{ length: (periods ? 12 : 24) / stepH },\n\t\t\t\t\t(_, i) => i * stepH\n\t\t\t )\n\t\t\t: [];\n\t\tconst minutes = hasM\n\t\t\t? Array.from({ length: 60 / stepM }, (_, i) => i * stepM)\n\t\t\t: [];\n\t\tconst seconds = hasS\n\t\t\t? Array.from({ length: 60 / stepS }, (_, i) => i * stepS)\n\t\t\t: [];\n\n\t\treturn [hours, minutes, seconds];\n\t}, [stepH, stepM, stepS, format, periods]);\n\n\tconst updateValue = (next?: {\n\t\tperiod?: any;\n\t\thour?: any;\n\t\tminute?: any;\n\t\tsecond?: any;\n\t}) => {\n\t\tconst nextPeriod = next?.period ?? period;\n\t\tconst nextHour = next?.hour ?? hour;\n\t\tconst nextMinute = next?.minute ?? minute;\n\t\tconst nextSecond = next?.second ?? second;\n\n\t\tconst reg = /(hh|h){1}|(mm|m){1}|(ss|s){1}/gi;\n\t\tlet result = format.replace(reg, (pattern) => {\n\t\t\tconst p = pattern.toLowerCase();\n\t\t\tconst u = UnitMaps[p];\n\t\t\tconst n =\n\t\t\t\tu === \"hour\"\n\t\t\t\t\t? (nextHour ?? 0)\n\t\t\t\t\t: u === \"minute\"\n\t\t\t\t\t\t? (nextMinute ?? 0)\n\t\t\t\t\t\t: (nextSecond ?? 0);\n\n\t\t\treturn p.length > 1 && n < 10 ? `0${n ?? 0}` : n ?? 0;\n\t\t});\n\n\t\tif (periods && hours.length > 0) {\n\t\t\tresult = `${nextPeriod ?? periods[0]} ${result}`;\n\t\t}\n\n\t\tonChange(result);\n\t};\n\n\tconst handleSetTime = (v, unit) => {\n\t\tconst next = { period, hour, minute, second, [unit]: v };\n\n\t\tif (unit === \"period\") setPeriod(v);\n\t\tif (unit === \"hour\") setHour(v);\n\t\tif (unit === \"minute\") setMinute(v);\n\t\tif (unit === \"second\") setSecond(v);\n\n\t\tupdateValue(next);\n\t};\n\n\tuseEffect(() => {\n\t\tlet time = value ?? \"\";\n\n\t\tif (periods && hours.length > 0 && value) {\n\t\t\tconst [p, t] = value.split(\" \");\n\t\t\ttime = t ?? \"\";\n\t\t\tsetPeriod(periods.includes(p) ? p : undefined);\n\t\t}\n\n\t\tconst nums = time.match(/\\d+/g) ?? [];\n\n\t\tif (!nums.length) {\n\t\t\tonFallback(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet i = 0;\n\t\tconst parsed = {\n\t\t\thour: undefined,\n\t\t\tminute: undefined,\n\t\t\tsecond: undefined,\n\t\t};\n\t\tconst r = format.replace(/(hh|h)+|(mm|m)+|(ss|s)+/gi, (p) => {\n\t\t\tconst n = nums[i++] ?? 0;\n\t\t\tconst o = Math.min(59, n);\n\t\t\tparsed[UnitMaps[p]] = o;\n\t\t\treturn p.length > 1 && o < 10 ? `0${o}` : o;\n\t\t});\n\n\t\tsetHour(parsed.hour);\n\t\tsetMinute(parsed.minute);\n\t\tsetSecond(parsed.second);\n\t\tonFallback(r);\n\t}, [value, format, hours.length, periods]);\n\n\treturn (\n\t\t<div className='i-timepicker'>\n\t\t\t{hours.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{periods && (\n\t\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\t\titems={periods}\n\t\t\t\t\t\t\t\tactive={period}\n\t\t\t\t\t\t\t\tonClick={(p) => handleSetTime(p, \"period\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\titems={hours}\n\t\t\t\t\t\t\tactive={hour}\n\t\t\t\t\t\t\tunit='hour'\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\tonClick={(h) => handleSetTime(h, \"hour\")}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{minutes.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={minutes}\n\t\t\t\t\t\tactive={minute}\n\t\t\t\t\t\tunit='minute'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(m) => handleSetTime(m, \"minute\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{seconds.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={seconds}\n\t\t\t\t\t\tactive={second}\n\t\t\t\t\t\tunit='second'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(s) => handleSetTime(s, \"second\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":""}
|
|
@@ -3,8 +3,8 @@ import button_default from "../button/index.js";
|
|
|
3
3
|
import icon_default from "../icon/index.js";
|
|
4
4
|
import popup_default from "../popup/index.js";
|
|
5
5
|
import flex_default from "../flex/index.js";
|
|
6
|
+
import { InfoOutlined } from "@ricons/material";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import InfoOutlined from "@ricons/material/es/InfoOutlined.js";
|
|
8
8
|
//#region packages/components/popconfirm/popconfirm.tsx
|
|
9
9
|
const defaultOk = { children: "确定" };
|
|
10
10
|
const defaultCancel = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popconfirm.js","names":[],"sources":["../../../../packages/components/popconfirm/popconfirm.tsx"],"sourcesContent":["import InfoOutlined from \"@ricons/material
|
|
1
|
+
{"version":3,"file":"popconfirm.js","names":[],"sources":["../../../../packages/components/popconfirm/popconfirm.tsx"],"sourcesContent":["import { InfoOutlined } from \"@ricons/material\";\nimport { MouseEvent } from \"react\";\nimport { useReactive } from \"../../js/hooks\";\nimport Button from \"../button\";\nimport { IButton } from \"../button/type\";\nimport Flex from \"../flex\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport { IPopconfirm } from \"./type\";\n\nconst defaultOk = {\n\tchildren: \"确定\",\n};\n\nconst defaultCancel = {\n\tchildren: \"取消\",\n\tsecondary: true,\n};\n\nconst Popconfirm = (props: IPopconfirm) => {\n\tconst {\n\t\ttrigger = \"click\",\n\t\tvisible,\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' size='1.2em' />,\n\t\tcontent,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\talign,\n\t\tposition = \"top\",\n\t\toffset = 12,\n\t\textra,\n\t\tonOk,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tloading: false,\n\t\tvisible,\n\t});\n\n\tconst ok: IButton = okButtonProps\n\t\t? Object.assign({}, defaultOk, okButtonProps)\n\t\t: defaultOk;\n\tconst cancel: IButton = cancelButtonProps\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\n\t\t: defaultCancel;\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\trestProps.onVisibleChange?.(v);\n\t};\n\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\n\t\tstate.loading = true;\n\t\tok.onClick?.(e);\n\t\ttry {\n\t\t\tawait onOk?.();\n\t\t\tstate.visible = false;\n\t\t} finally {\n\t\t\tstate.loading = false;\n\t\t}\n\t};\n\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\n\t\tcancel.onClick?.(e);\n\t\tawait onClose?.();\n\t\tstate.visible = false;\n\t};\n\n\tconst popconfirmContent = (\n\t\t<div className='i-popconfirm'>\n\t\t\t<Flex gap='.5em'>\n\t\t\t\t{icon}\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\n\t\t\t</Flex>\n\n\t\t\t<Flex gap={12} justify='flex-end' className='i-popconfirm-footer'>\n\t\t\t\t{cancelButtonProps !== null && (\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\n\t\t\t\t)}\n\t\t\t\t{extra}\n\t\t\t\t{okButtonProps !== null && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t{...ok}\n\t\t\t\t\t\tonClick={handleOk}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<Popup\n\t\t\tcontent={popconfirmContent}\n\t\t\t{...restProps}\n\t\t\ttrigger={trigger}\n\t\t\tvisible={state.visible}\n\t\t\talign={align}\n\t\t\toffset={offset}\n\t\t\tposition={position}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nexport default Popconfirm;\n"],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useMouseUp, useResizeObserver } from "../../js/hooks.js";
|
|
2
2
|
import { getPointPosition, getPosition } from "../../js/utils.js";
|
|
3
3
|
import Content from "./content.js";
|
|
4
|
-
import { debounce } from "radash";
|
|
4
|
+
import { debounce } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
|
|
5
5
|
import { Children, cloneElement, isValidElement, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
6
6
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region packages/components/popup/popup.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popup.js","names":[],"sources":["../../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tRef,\n\tcloneElement,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { useMouseUp, useResizeObserver } from \"../../js/hooks\";\nimport { getPointPosition, getPosition } from \"../../js/utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPopup } from \"./type\";\n\nexport default function Popup(props: IPopup) {\n\tconst {\n\t\tvisible = false,\n\t\tcontent,\n\t\ttrigger = \"hover\",\n\t\tgap = 12,\n\t\toffset = 8,\n\t\tposition = \"top\",\n\t\tshowDelay = 16,\n\t\thideDelay = 12,\n\t\ttouchable,\n\t\tarrow = true,\n\t\talign = \"center\",\n\t\tfitSize,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonVisibleChange,\n\t} = props;\n\n\tconst triggerRef = useRef<HTMLElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst afterHideTimerRef = useRef<any>(null);\n\tconst rafRef = useRef<number | null>(null);\n\n\tconst [show, setShow] = useState(false);\n\tconst showRef = useRef(false);\n\tshowRef.current = show;\n\n\tconst latestRef = useRef({\n\t\tdisabled,\n\t\ttrigger,\n\t\ttouchable,\n\t\tshowDelay,\n\t\thideDelay,\n\t\tposition,\n\t\tgap,\n\t\toffset,\n\t\talign,\n\t\tfitSize,\n\t\tonVisibleChange,\n\t});\n\tlatestRef.current = {\n\t\tdisabled,\n\t\ttrigger,\n\t\ttouchable,\n\t\tshowDelay,\n\t\thideDelay,\n\t\tposition,\n\t\tgap,\n\t\toffset,\n\t\talign,\n\t\tfitSize,\n\t\tonVisibleChange,\n\t};\n\n\tconst phaseRef = useRef<\"\" | \"showing\" | \"hiding\">(\"\");\n\tconst lastPosRef = useRef<{ left: number; top: number } | null>(null);\n\tconst lastArrowRef = useRef<{\n\t\tleft: number;\n\t\ttop: number;\n\t\ttransform: string;\n\t} | null>(null);\n\tconst arrowElRef = useRef<HTMLElement | null>(null);\n\tconst pointRef = useRef<{ pageX: number; pageY: number } | null>(null);\n\n\tconst clearTimer = () => {\n\t\tif (!timerRef.current) return;\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t\tphaseRef.current = \"\";\n\t};\n\n\tconst clearAllTimers = () => {\n\t\tclearTimer();\n\t\tif (afterHideTimerRef.current) {\n\t\t\tclearTimeout(afterHideTimerRef.current);\n\t\t\tafterHideTimerRef.current = null;\n\t\t}\n\t\tif (rafRef.current !== null) {\n\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\trafRef.current = null;\n\t\t}\n\t};\n\n\tconst setContentVisible = (visible: boolean) => {\n\t\tconst el = contentRef.current;\n\t\tif (!el) return;\n\t\tel.style.opacity = visible ? \"1\" : \"0\";\n\t\tel.style.transform = visible ? \"none\" : \"translate(0, 2px)\";\n\t};\n\n\tconst ensureBaseStyle = () => {\n\t\tconst el = contentRef.current;\n\t\tif (!el) return;\n\t\tconst pos = \"fixed\";\n\t\tif (el.style.position !== pos) el.style.position = pos;\n\t};\n\n\tconst applyFitSize = () => {\n\t\tconst o = latestRef.current;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\n\t\tconst vertical = [\"top\", \"bottom\"].includes(o.position);\n\t\tconst key = vertical ? \"width\" : \"height\";\n\t\tif (!o.fitSize) {\n\t\t\t(contentEl.style as any)[key] = \"\";\n\t\t\treturn;\n\t\t}\n\n\t\tconst size = triggerEl[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n\t\t(contentEl.style as any)[key] =\n\t\t\ttypeof size === \"number\" ? `${size}px` : \"\";\n\t};\n\n\tconst applyArrow = (arrowX: number, arrowY: number, arrowPos: string) => {\n\t\tconst contentEl = contentRef.current;\n\t\tif (!contentEl) return;\n\n\t\tconst arrowEl =\n\t\t\tarrowElRef.current ??\n\t\t\t(contentEl.querySelector(\".i-popup-arrow\") as HTMLElement | null);\n\t\tarrowElRef.current = arrowEl;\n\t\tif (!arrowEl) return;\n\n\t\tlet left = arrowX ?? 0;\n\t\tlet top = arrowY ?? 0;\n\t\tlet transform = \"\";\n\n\t\tswitch (arrowPos) {\n\t\t\tcase \"left\":\n\t\t\t\tleft += 2;\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\t\tleft -= 2;\n\t\t\t\ttransform = `translate(0, -50%)`;\n\t\t\t\tbreak;\n\t\t\tcase \"top\":\n\t\t\t\ttop -= 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\ttop += 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst prev = lastArrowRef.current;\n\t\tif (\n\t\t\tprev &&\n\t\t\tprev.left === left &&\n\t\t\tprev.top === top &&\n\t\t\tprev.transform === transform\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tlastArrowRef.current = { left, top, transform };\n\t\tarrowEl.style.left = `${left}px`;\n\t\tarrowEl.style.top = `${top}px`;\n\t\tarrowEl.style.transform = transform;\n\t};\n\n\tconst applyLeftTop = (left: number, top: number) => {\n\t\tconst contentEl = contentRef.current;\n\t\tif (!contentEl) return;\n\n\t\tconst prev = lastPosRef.current;\n\t\tif (prev && prev.left === left && prev.top === top) return;\n\n\t\tlastPosRef.current = { left, top };\n\t\tcontentEl.style.left = `${left}px`;\n\t\tcontentEl.style.top = `${top}px`;\n\t};\n\n\tconst computeRelativePosition = () => {\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\n\t\tconst o = latestRef.current;\n\t\tapplyFitSize();\n\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\ttriggerEl,\n\t\t\tcontentEl,\n\t\t\t{\n\t\t\t\tposition: o.position,\n\t\t\t\tgap: o.gap,\n\t\t\t\toffset: o.offset,\n\t\t\t\talign: o.align,\n\t\t\t\trefWindow: true,\n\t\t\t},\n\t\t);\n\n\t\tapplyLeftTop(left, top);\n\t\tapplyArrow(arrowX, arrowY, arrowPos);\n\t};\n\n\tconst computePointPosition = () => {\n\t\tconst contentEl = contentRef.current as HTMLElement | null;\n\t\tif (!contentEl) return;\n\t\tconst point = pointRef.current;\n\t\tif (!point) return;\n\n\t\tconst [left, top] = getPointPosition(point as any, contentEl);\n\t\tapplyLeftTop(left, top);\n\t};\n\n\tconst scheduleComputePosition = () => {\n\t\tif (!showRef.current) return;\n\t\tif (rafRef.current !== null) return;\n\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\trafRef.current = null;\n\t\t\tif (!showRef.current) return;\n\t\t\tensureBaseStyle();\n\n\t\t\tif (latestRef.current.trigger === \"contextmenu\") {\n\t\t\t\tcomputePointPosition();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcomputeRelativePosition();\n\t\t});\n\t};\n\n\tconst handleShow = () => {\n\t\tconst opts = latestRef.current;\n\t\tif (opts.disabled) return;\n\t\tclearAllTimers();\n\t\tif (\n\t\t\tshowRef.current &&\n\t\t\t(opts.trigger !== \"hover\" ||\n\t\t\t\t(opts.trigger === \"hover\" && !opts.touchable))\n\t\t) {\n\t\t\tensureBaseStyle();\n\t\t\tcomputeRelativePosition();\n\t\t\tsetContentVisible(true);\n\t\t\treturn;\n\t\t}\n\n\t\tphaseRef.current = \"showing\";\n\t\tif (!showRef.current) {\n\t\t\tlastPosRef.current = null;\n\t\t\tlastArrowRef.current = null;\n\t\t\tarrowElRef.current = null;\n\t\t\tsetShow(true);\n\t\t}\n\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (phaseRef.current !== \"showing\") return;\n\n\t\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\t\trafRef.current = null;\n\t\t\t\tif (phaseRef.current !== \"showing\") return;\n\t\t\t\tif (!contentRef.current) return;\n\n\t\t\t\tensureBaseStyle();\n\t\t\t\tif (opts.trigger === \"contextmenu\") {\n\t\t\t\t\tcomputePointPosition();\n\t\t\t\t} else {\n\t\t\t\t\tcomputeRelativePosition();\n\t\t\t\t}\n\t\t\t\tsetContentVisible(true);\n\t\t\t\topts.onVisibleChange?.(true);\n\t\t\t\tclearTimer();\n\t\t\t\tphaseRef.current = \"\";\n\t\t\t});\n\t\t}, opts.showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!showRef.current) return;\n\n\t\tclearAllTimers();\n\t\tphaseRef.current = \"hiding\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (phaseRef.current !== \"hiding\") {\n\t\t\t\tclearTimer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetContentVisible(false);\n\n\t\t\tafterHideTimerRef.current = setTimeout(() => {\n\t\t\t\tafterHideTimerRef.current = null;\n\t\t\t\tsetShow(false);\n\t\t\t\tclearAllTimers();\n\t\t\t\tlatestRef.current.onVisibleChange?.(false);\n\t\t\t\tphaseRef.current = \"\";\n\t\t\t}, 160);\n\t\t}, latestRef.current.hideDelay);\n\t};\n\n\tconst handleToggle = (action?: boolean) => {\n\t\tif (action !== undefined) {\n\t\t\taction ? handleShow() : handleHide();\n\t\t\treturn;\n\t\t}\n\t\tshowRef.current ? handleHide() : handleShow();\n\t};\n\n\tconst hideRef = useRef(handleHide);\n\tconst toggleRef = useRef(handleToggle);\n\thideRef.current = handleHide;\n\ttoggleRef.current = handleToggle;\n\n\tconst doHide = useMemo(() => () => hideRef.current(), []);\n\tconst doToggle = useMemo(\n\t\t() => (action?: boolean) => toggleRef.current(action),\n\t\t[],\n\t);\n\n\tconst eventMaps = useMemo(() => {\n\t\treturn {\n\t\t\tclick: {\n\t\t\t\tonClick: () => doToggle(true),\n\t\t\t},\n\t\t\thover: {\n\t\t\t\tonMouseEnter: () => doToggle(true),\n\t\t\t\tonMouseLeave: () => doToggle(false),\n\t\t\t},\n\t\t\tfocus: {\n\t\t\t\tonFocus: () => doToggle(true),\n\t\t\t\tonBlur: () => doToggle(false),\n\t\t\t},\n\t\t\tcontextmenu: {\n\t\t\t\tonContextMenu: (e: MouseEvent) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\tpointRef.current = {\n\t\t\t\t\t\tpageX: (e as any).pageX,\n\t\t\t\t\t\tpageY: (e as any).pageY,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (showRef.current) {\n\t\t\t\t\t\tensureBaseStyle();\n\t\t\t\t\t\tcomputePointPosition();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tclearAllTimers();\n\t\t\t\t\tphaseRef.current = \"showing\";\n\t\t\t\t\tlastPosRef.current = null;\n\t\t\t\t\tlastArrowRef.current = null;\n\t\t\t\t\tarrowElRef.current = null;\n\t\t\t\t\tsetShow(true);\n\n\t\t\t\t\ttimerRef.current = setTimeout(() => {\n\t\t\t\t\t\tif (phaseRef.current !== \"showing\") return;\n\t\t\t\t\t\tif (!contentRef.current) return;\n\n\t\t\t\t\t\tensureBaseStyle();\n\t\t\t\t\t\tcomputePointPosition();\n\t\t\t\t\t\tsetContentVisible(true);\n\t\t\t\t\t\tclearTimer();\n\t\t\t\t\t\tlatestRef.current.onVisibleChange?.(true);\n\t\t\t\t\t\tphaseRef.current = \"\";\n\t\t\t\t\t}, latestRef.current.showDelay);\n\t\t\t\t},\n\t\t\t},\n\t\t\tnone: {},\n\t\t};\n\t}, [doToggle]);\n\n\tconst contentTouch = useMemo(() => {\n\t\tif (!touchable) return {};\n\t\tconst events: { [key: string]: () => void } = {};\n\n\t\tif (trigger === \"hover\") {\n\t\t\tevents[\"onMouseEnter\"] = () => {\n\t\t\t\tclearTimer();\n\t\t\t};\n\t\t\tevents[\"onMouseLeave\"] = () => handleToggle(false);\n\t\t}\n\n\t\treturn events;\n\t}, [touchable, trigger]);\n\n\tconst { observe, unobserve, disconnect } = useResizeObserver();\n\tuseEffect(() => {\n\t\tif (!observe) return;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (triggerEl) observe(triggerEl, scheduleComputePosition);\n\t\tif (contentEl) observe(contentEl, scheduleComputePosition);\n\t\treturn () => {\n\t\t\tif (contentEl) unobserve(contentEl);\n\t\t\tif (triggerEl) unobserve(triggerEl);\n\t\t\tdisconnect();\n\t\t};\n\t}, [trigger, observe, unobserve, disconnect, show]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!show) return;\n\t\tensureBaseStyle();\n\t\tif (latestRef.current.trigger === \"contextmenu\") {\n\t\t\tcomputePointPosition();\n\t\t} else {\n\t\t\tcomputeRelativePosition();\n\t\t}\n\t}, [show]);\n\n\tuseLayoutEffect(() => {\n\t\tdoToggle(visible);\n\t}, [visible]);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tclearAllTimers();\n\t\t};\n\t}, []);\n\n\tconst mouseUpHandlerRef = useRef<(e: any) => void>(() => {});\n\tmouseUpHandlerRef.current = (e) => {\n\t\tif (!showRef.current) return;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\t\tconst tar = e.target as HTMLElement;\n\t\tif (triggerEl.contains(tar) || contentEl.contains(tar)) return;\n\t\tdoHide();\n\t};\n\tconst onGlobalMouseUp = useMemo(\n\t\t() => (e: any) => mouseUpHandlerRef.current(e),\n\t\t[],\n\t);\n\tuseMouseUp(onGlobalMouseUp);\n\n\tuseEffect(() => {\n\t\tif (!show) return;\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst onScrollOrResize = debounce({ delay: 160 }, () => {\n\t\t\tscheduleComputePosition();\n\t\t});\n\n\t\twindow.addEventListener(\"scroll\", onScrollOrResize, {\n\t\t\tpassive: true,\n\t\t\tcapture: true,\n\t\t});\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"scroll\", onScrollOrResize, true);\n\t\t};\n\t}, [show]);\n\n\tconst mergeRefs = (...refs: Array<Ref<HTMLElement> | undefined>) => {\n\t\treturn (node: HTMLElement | null) => {\n\t\t\tfor (const ref of refs) {\n\t\t\t\tif (!ref) continue;\n\t\t\t\tif (typeof ref === \"function\") {\n\t\t\t\t\tref(node);\n\t\t\t\t} else {\n\t\t\t\t\t(ref as any).current = node;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{(() => {\n\t\t\t\tconst events = eventMaps[trigger] as any;\n\t\t\t\tconst items = Children.toArray(children);\n\t\t\t\tconst canAttachRef = (el: any) => {\n\t\t\t\t\tif (!isValidElement(el)) return false;\n\t\t\t\t\tconst t: any = el.type;\n\t\t\t\t\tif (typeof t === \"string\") return true;\n\t\t\t\t\tif (t?.prototype?.isReactComponent) return true;\n\t\t\t\t\tif (t?.$$typeof === Symbol.for(\"react.forward_ref\"))\n\t\t\t\t\t\treturn true;\n\t\t\t\t\treturn false;\n\t\t\t\t};\n\n\t\t\t\tif (items.length !== 1) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={triggerRef as any}\n\t\t\t\t\t\t\t{...events}\n\t\t\t\t\t\t\tclassName='i-popup-trigger'\n\t\t\t\t\t\t\tstyle={{ display: \"inline-block\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst only = items[0] as any;\n\t\t\t\tif (!isValidElement(only) || !canAttachRef(only)) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={triggerRef as any}\n\t\t\t\t\t\t\t{...events}\n\t\t\t\t\t\t\tclassName='i-popup-trigger'\n\t\t\t\t\t\t\tstyle={{ display: \"inline-block\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{only}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst { className: childClassName, ...restProps } =\n\t\t\t\t\tonly.props as any;\n\t\t\t\tconst nextProps: Record<string, any> = { ...restProps };\n\t\t\t\tfor (const evt of Object.keys(events)) {\n\t\t\t\t\tconst theirs = restProps[evt];\n\t\t\t\t\tconst ours = events[evt];\n\t\t\t\t\tnextProps[evt] =\n\t\t\t\t\t\ttypeof theirs === \"function\"\n\t\t\t\t\t\t\t? (e: any) => {\n\t\t\t\t\t\t\t\t\tours(e);\n\t\t\t\t\t\t\t\t\ttheirs(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: ours;\n\t\t\t\t}\n\t\t\t\treturn cloneElement(only as any, {\n\t\t\t\t\tref: mergeRefs((only as any).ref, triggerRef as any),\n\t\t\t\t\tclassName: childClassName,\n\t\t\t\t\t...nextProps,\n\t\t\t\t});\n\t\t\t})()}\n\n\t\t\t{show && (\n\t\t\t\t<Content\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\tposition: \"fixed\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\t{...contentTouch}\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Content>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"popup.js","names":[],"sources":["../../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tRef,\n\tcloneElement,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { useMouseUp, useResizeObserver } from \"../../js/hooks\";\nimport { getPointPosition, getPosition } from \"../../js/utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPopup } from \"./type\";\n\nexport default function Popup(props: IPopup) {\n\tconst {\n\t\tvisible = false,\n\t\tcontent,\n\t\ttrigger = \"hover\",\n\t\tgap = 12,\n\t\toffset = 8,\n\t\tposition = \"top\",\n\t\tshowDelay = 16,\n\t\thideDelay = 12,\n\t\ttouchable,\n\t\tarrow = true,\n\t\talign = \"center\",\n\t\tfitSize,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonVisibleChange,\n\t} = props;\n\n\tconst triggerRef = useRef<HTMLElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst afterHideTimerRef = useRef<any>(null);\n\tconst rafRef = useRef<number | null>(null);\n\n\tconst [show, setShow] = useState(false);\n\tconst showRef = useRef(false);\n\tshowRef.current = show;\n\n\tconst latestRef = useRef({\n\t\tdisabled,\n\t\ttrigger,\n\t\ttouchable,\n\t\tshowDelay,\n\t\thideDelay,\n\t\tposition,\n\t\tgap,\n\t\toffset,\n\t\talign,\n\t\tfitSize,\n\t\tonVisibleChange,\n\t});\n\tlatestRef.current = {\n\t\tdisabled,\n\t\ttrigger,\n\t\ttouchable,\n\t\tshowDelay,\n\t\thideDelay,\n\t\tposition,\n\t\tgap,\n\t\toffset,\n\t\talign,\n\t\tfitSize,\n\t\tonVisibleChange,\n\t};\n\n\tconst phaseRef = useRef<\"\" | \"showing\" | \"hiding\">(\"\");\n\tconst lastPosRef = useRef<{ left: number; top: number } | null>(null);\n\tconst lastArrowRef = useRef<{\n\t\tleft: number;\n\t\ttop: number;\n\t\ttransform: string;\n\t} | null>(null);\n\tconst arrowElRef = useRef<HTMLElement | null>(null);\n\tconst pointRef = useRef<{ pageX: number; pageY: number } | null>(null);\n\n\tconst clearTimer = () => {\n\t\tif (!timerRef.current) return;\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t\tphaseRef.current = \"\";\n\t};\n\n\tconst clearAllTimers = () => {\n\t\tclearTimer();\n\t\tif (afterHideTimerRef.current) {\n\t\t\tclearTimeout(afterHideTimerRef.current);\n\t\t\tafterHideTimerRef.current = null;\n\t\t}\n\t\tif (rafRef.current !== null) {\n\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\trafRef.current = null;\n\t\t}\n\t};\n\n\tconst setContentVisible = (visible: boolean) => {\n\t\tconst el = contentRef.current;\n\t\tif (!el) return;\n\t\tel.style.opacity = visible ? \"1\" : \"0\";\n\t\tel.style.transform = visible ? \"none\" : \"translate(0, 2px)\";\n\t};\n\n\tconst ensureBaseStyle = () => {\n\t\tconst el = contentRef.current;\n\t\tif (!el) return;\n\t\tconst pos = \"fixed\";\n\t\tif (el.style.position !== pos) el.style.position = pos;\n\t};\n\n\tconst applyFitSize = () => {\n\t\tconst o = latestRef.current;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\n\t\tconst vertical = [\"top\", \"bottom\"].includes(o.position);\n\t\tconst key = vertical ? \"width\" : \"height\";\n\t\tif (!o.fitSize) {\n\t\t\t(contentEl.style as any)[key] = \"\";\n\t\t\treturn;\n\t\t}\n\n\t\tconst size = triggerEl[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n\t\t(contentEl.style as any)[key] =\n\t\t\ttypeof size === \"number\" ? `${size}px` : \"\";\n\t};\n\n\tconst applyArrow = (arrowX: number, arrowY: number, arrowPos: string) => {\n\t\tconst contentEl = contentRef.current;\n\t\tif (!contentEl) return;\n\n\t\tconst arrowEl =\n\t\t\tarrowElRef.current ??\n\t\t\t(contentEl.querySelector(\".i-popup-arrow\") as HTMLElement | null);\n\t\tarrowElRef.current = arrowEl;\n\t\tif (!arrowEl) return;\n\n\t\tlet left = arrowX ?? 0;\n\t\tlet top = arrowY ?? 0;\n\t\tlet transform = \"\";\n\n\t\tswitch (arrowPos) {\n\t\t\tcase \"left\":\n\t\t\t\tleft += 2;\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\t\tleft -= 2;\n\t\t\t\ttransform = `translate(0, -50%)`;\n\t\t\t\tbreak;\n\t\t\tcase \"top\":\n\t\t\t\ttop -= 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\ttop += 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst prev = lastArrowRef.current;\n\t\tif (\n\t\t\tprev &&\n\t\t\tprev.left === left &&\n\t\t\tprev.top === top &&\n\t\t\tprev.transform === transform\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tlastArrowRef.current = { left, top, transform };\n\t\tarrowEl.style.left = `${left}px`;\n\t\tarrowEl.style.top = `${top}px`;\n\t\tarrowEl.style.transform = transform;\n\t};\n\n\tconst applyLeftTop = (left: number, top: number) => {\n\t\tconst contentEl = contentRef.current;\n\t\tif (!contentEl) return;\n\n\t\tconst prev = lastPosRef.current;\n\t\tif (prev && prev.left === left && prev.top === top) return;\n\n\t\tlastPosRef.current = { left, top };\n\t\tcontentEl.style.left = `${left}px`;\n\t\tcontentEl.style.top = `${top}px`;\n\t};\n\n\tconst computeRelativePosition = () => {\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\n\t\tconst o = latestRef.current;\n\t\tapplyFitSize();\n\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\ttriggerEl,\n\t\t\tcontentEl,\n\t\t\t{\n\t\t\t\tposition: o.position,\n\t\t\t\tgap: o.gap,\n\t\t\t\toffset: o.offset,\n\t\t\t\talign: o.align,\n\t\t\t\trefWindow: true,\n\t\t\t},\n\t\t);\n\n\t\tapplyLeftTop(left, top);\n\t\tapplyArrow(arrowX, arrowY, arrowPos);\n\t};\n\n\tconst computePointPosition = () => {\n\t\tconst contentEl = contentRef.current as HTMLElement | null;\n\t\tif (!contentEl) return;\n\t\tconst point = pointRef.current;\n\t\tif (!point) return;\n\n\t\tconst [left, top] = getPointPosition(point as any, contentEl);\n\t\tapplyLeftTop(left, top);\n\t};\n\n\tconst scheduleComputePosition = () => {\n\t\tif (!showRef.current) return;\n\t\tif (rafRef.current !== null) return;\n\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\trafRef.current = null;\n\t\t\tif (!showRef.current) return;\n\t\t\tensureBaseStyle();\n\n\t\t\tif (latestRef.current.trigger === \"contextmenu\") {\n\t\t\t\tcomputePointPosition();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcomputeRelativePosition();\n\t\t});\n\t};\n\n\tconst handleShow = () => {\n\t\tconst opts = latestRef.current;\n\t\tif (opts.disabled) return;\n\t\tclearAllTimers();\n\t\tif (\n\t\t\tshowRef.current &&\n\t\t\t(opts.trigger !== \"hover\" ||\n\t\t\t\t(opts.trigger === \"hover\" && !opts.touchable))\n\t\t) {\n\t\t\tensureBaseStyle();\n\t\t\tcomputeRelativePosition();\n\t\t\tsetContentVisible(true);\n\t\t\treturn;\n\t\t}\n\n\t\tphaseRef.current = \"showing\";\n\t\tif (!showRef.current) {\n\t\t\tlastPosRef.current = null;\n\t\t\tlastArrowRef.current = null;\n\t\t\tarrowElRef.current = null;\n\t\t\tsetShow(true);\n\t\t}\n\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (phaseRef.current !== \"showing\") return;\n\n\t\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\t\trafRef.current = null;\n\t\t\t\tif (phaseRef.current !== \"showing\") return;\n\t\t\t\tif (!contentRef.current) return;\n\n\t\t\t\tensureBaseStyle();\n\t\t\t\tif (opts.trigger === \"contextmenu\") {\n\t\t\t\t\tcomputePointPosition();\n\t\t\t\t} else {\n\t\t\t\t\tcomputeRelativePosition();\n\t\t\t\t}\n\t\t\t\tsetContentVisible(true);\n\t\t\t\topts.onVisibleChange?.(true);\n\t\t\t\tclearTimer();\n\t\t\t\tphaseRef.current = \"\";\n\t\t\t});\n\t\t}, opts.showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!showRef.current) return;\n\n\t\tclearAllTimers();\n\t\tphaseRef.current = \"hiding\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (phaseRef.current !== \"hiding\") {\n\t\t\t\tclearTimer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetContentVisible(false);\n\n\t\t\tafterHideTimerRef.current = setTimeout(() => {\n\t\t\t\tafterHideTimerRef.current = null;\n\t\t\t\tsetShow(false);\n\t\t\t\tclearAllTimers();\n\t\t\t\tlatestRef.current.onVisibleChange?.(false);\n\t\t\t\tphaseRef.current = \"\";\n\t\t\t}, 160);\n\t\t}, latestRef.current.hideDelay);\n\t};\n\n\tconst handleToggle = (action?: boolean) => {\n\t\tif (action !== undefined) {\n\t\t\taction ? handleShow() : handleHide();\n\t\t\treturn;\n\t\t}\n\t\tshowRef.current ? handleHide() : handleShow();\n\t};\n\n\tconst hideRef = useRef(handleHide);\n\tconst toggleRef = useRef(handleToggle);\n\thideRef.current = handleHide;\n\ttoggleRef.current = handleToggle;\n\n\tconst doHide = useMemo(() => () => hideRef.current(), []);\n\tconst doToggle = useMemo(\n\t\t() => (action?: boolean) => toggleRef.current(action),\n\t\t[],\n\t);\n\n\tconst eventMaps = useMemo(() => {\n\t\treturn {\n\t\t\tclick: {\n\t\t\t\tonClick: () => doToggle(true),\n\t\t\t},\n\t\t\thover: {\n\t\t\t\tonMouseEnter: () => doToggle(true),\n\t\t\t\tonMouseLeave: () => doToggle(false),\n\t\t\t},\n\t\t\tfocus: {\n\t\t\t\tonFocus: () => doToggle(true),\n\t\t\t\tonBlur: () => doToggle(false),\n\t\t\t},\n\t\t\tcontextmenu: {\n\t\t\t\tonContextMenu: (e: MouseEvent) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\tpointRef.current = {\n\t\t\t\t\t\tpageX: (e as any).pageX,\n\t\t\t\t\t\tpageY: (e as any).pageY,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (showRef.current) {\n\t\t\t\t\t\tensureBaseStyle();\n\t\t\t\t\t\tcomputePointPosition();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tclearAllTimers();\n\t\t\t\t\tphaseRef.current = \"showing\";\n\t\t\t\t\tlastPosRef.current = null;\n\t\t\t\t\tlastArrowRef.current = null;\n\t\t\t\t\tarrowElRef.current = null;\n\t\t\t\t\tsetShow(true);\n\n\t\t\t\t\ttimerRef.current = setTimeout(() => {\n\t\t\t\t\t\tif (phaseRef.current !== \"showing\") return;\n\t\t\t\t\t\tif (!contentRef.current) return;\n\n\t\t\t\t\t\tensureBaseStyle();\n\t\t\t\t\t\tcomputePointPosition();\n\t\t\t\t\t\tsetContentVisible(true);\n\t\t\t\t\t\tclearTimer();\n\t\t\t\t\t\tlatestRef.current.onVisibleChange?.(true);\n\t\t\t\t\t\tphaseRef.current = \"\";\n\t\t\t\t\t}, latestRef.current.showDelay);\n\t\t\t\t},\n\t\t\t},\n\t\t\tnone: {},\n\t\t};\n\t}, [doToggle]);\n\n\tconst contentTouch = useMemo(() => {\n\t\tif (!touchable) return {};\n\t\tconst events: { [key: string]: () => void } = {};\n\n\t\tif (trigger === \"hover\") {\n\t\t\tevents[\"onMouseEnter\"] = () => {\n\t\t\t\tclearTimer();\n\t\t\t};\n\t\t\tevents[\"onMouseLeave\"] = () => handleToggle(false);\n\t\t}\n\n\t\treturn events;\n\t}, [touchable, trigger]);\n\n\tconst { observe, unobserve, disconnect } = useResizeObserver();\n\tuseEffect(() => {\n\t\tif (!observe) return;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (triggerEl) observe(triggerEl, scheduleComputePosition);\n\t\tif (contentEl) observe(contentEl, scheduleComputePosition);\n\t\treturn () => {\n\t\t\tif (contentEl) unobserve(contentEl);\n\t\t\tif (triggerEl) unobserve(triggerEl);\n\t\t\tdisconnect();\n\t\t};\n\t}, [trigger, observe, unobserve, disconnect, show]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!show) return;\n\t\tensureBaseStyle();\n\t\tif (latestRef.current.trigger === \"contextmenu\") {\n\t\t\tcomputePointPosition();\n\t\t} else {\n\t\t\tcomputeRelativePosition();\n\t\t}\n\t}, [show]);\n\n\tuseLayoutEffect(() => {\n\t\tdoToggle(visible);\n\t}, [visible]);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tclearAllTimers();\n\t\t};\n\t}, []);\n\n\tconst mouseUpHandlerRef = useRef<(e: any) => void>(() => {});\n\tmouseUpHandlerRef.current = (e) => {\n\t\tif (!showRef.current) return;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\t\tconst tar = e.target as HTMLElement;\n\t\tif (triggerEl.contains(tar) || contentEl.contains(tar)) return;\n\t\tdoHide();\n\t};\n\tconst onGlobalMouseUp = useMemo(\n\t\t() => (e: any) => mouseUpHandlerRef.current(e),\n\t\t[],\n\t);\n\tuseMouseUp(onGlobalMouseUp);\n\n\tuseEffect(() => {\n\t\tif (!show) return;\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst onScrollOrResize = debounce({ delay: 160 }, () => {\n\t\t\tscheduleComputePosition();\n\t\t});\n\n\t\twindow.addEventListener(\"scroll\", onScrollOrResize, {\n\t\t\tpassive: true,\n\t\t\tcapture: true,\n\t\t});\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"scroll\", onScrollOrResize, true);\n\t\t};\n\t}, [show]);\n\n\tconst mergeRefs = (...refs: Array<Ref<HTMLElement> | undefined>) => {\n\t\treturn (node: HTMLElement | null) => {\n\t\t\tfor (const ref of refs) {\n\t\t\t\tif (!ref) continue;\n\t\t\t\tif (typeof ref === \"function\") {\n\t\t\t\t\tref(node);\n\t\t\t\t} else {\n\t\t\t\t\t(ref as any).current = node;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{(() => {\n\t\t\t\tconst events = eventMaps[trigger] as any;\n\t\t\t\tconst items = Children.toArray(children);\n\t\t\t\tconst canAttachRef = (el: any) => {\n\t\t\t\t\tif (!isValidElement(el)) return false;\n\t\t\t\t\tconst t: any = el.type;\n\t\t\t\t\tif (typeof t === \"string\") return true;\n\t\t\t\t\tif (t?.prototype?.isReactComponent) return true;\n\t\t\t\t\tif (t?.$$typeof === Symbol.for(\"react.forward_ref\"))\n\t\t\t\t\t\treturn true;\n\t\t\t\t\treturn false;\n\t\t\t\t};\n\n\t\t\t\tif (items.length !== 1) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={triggerRef as any}\n\t\t\t\t\t\t\t{...events}\n\t\t\t\t\t\t\tclassName='i-popup-trigger'\n\t\t\t\t\t\t\tstyle={{ display: \"inline-block\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst only = items[0] as any;\n\t\t\t\tif (!isValidElement(only) || !canAttachRef(only)) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={triggerRef as any}\n\t\t\t\t\t\t\t{...events}\n\t\t\t\t\t\t\tclassName='i-popup-trigger'\n\t\t\t\t\t\t\tstyle={{ display: \"inline-block\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{only}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst { className: childClassName, ...restProps } =\n\t\t\t\t\tonly.props as any;\n\t\t\t\tconst nextProps: Record<string, any> = { ...restProps };\n\t\t\t\tfor (const evt of Object.keys(events)) {\n\t\t\t\t\tconst theirs = restProps[evt];\n\t\t\t\t\tconst ours = events[evt];\n\t\t\t\t\tnextProps[evt] =\n\t\t\t\t\t\ttypeof theirs === \"function\"\n\t\t\t\t\t\t\t? (e: any) => {\n\t\t\t\t\t\t\t\t\tours(e);\n\t\t\t\t\t\t\t\t\ttheirs(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: ours;\n\t\t\t\t}\n\t\t\t\treturn cloneElement(only as any, {\n\t\t\t\t\tref: mergeRefs((only as any).ref, triggerRef as any),\n\t\t\t\t\tclassName: childClassName,\n\t\t\t\t\t...nextProps,\n\t\t\t\t});\n\t\t\t})()}\n\n\t\t\t{show && (\n\t\t\t\t<Content\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\tposition: \"fixed\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\t{...contentTouch}\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Content>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","names":[],"sources":["../../../../packages/components/progress/progress.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport { useMouseMove, useMouseUp, useReactive } from \"../../js/hooks\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tlineWidth = 8,\n\t\tcircleSize = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tvertical,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t\tonDraggingChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\tsize: 0,\n\t\tstart: 0,\n\t});\n\n\tconst pageXY = vertical ? \"pageY\" : \"pageX\";\n\tconst rectTL = vertical ? \"top\" : \"left\";\n\tconst rectWH = vertical ? \"height\" : \"width\";\n\n\tconst getFixedValue = () => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e[pageXY] - rect[rectTL]) * 100) / rect[rectWH];\n\n\t\tObject.assign(state, {\n\t\t\tvalue: vertical ? 100 - value : value,\n\t\t\tsize: rect[rectWH],\n\t\t\tstart: rect[rectTL],\n\t\t\tdragging: true,\n\t\t});\n\t\tonDraggingChange?.(true);\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, size } = state;\n\t\tconst offset = e[pageXY] - start;\n\n\t\tif (offset < 0 || offset > size) return;\n\n\t\tconst value = ((e[pageXY] - start) * 100) / size;\n\t\tstate.value = vertical ? 100 - value : value;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(getFixedValue());\n\t\tstate.dragging = false;\n\t\tonDraggingChange?.(false);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tvertical={vertical}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tcircleSize={circleSize}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"progress.js","names":[],"sources":["../../../../packages/components/progress/progress.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport { useMouseMove, useMouseUp, useReactive } from \"../../js/hooks\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tlineWidth = 8,\n\t\tcircleSize = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tvertical,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t\tonDraggingChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\tsize: 0,\n\t\tstart: 0,\n\t});\n\n\tconst pageXY = vertical ? \"pageY\" : \"pageX\";\n\tconst rectTL = vertical ? \"top\" : \"left\";\n\tconst rectWH = vertical ? \"height\" : \"width\";\n\n\tconst getFixedValue = () => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e[pageXY] - rect[rectTL]) * 100) / rect[rectWH];\n\n\t\tObject.assign(state, {\n\t\t\tvalue: vertical ? 100 - value : value,\n\t\t\tsize: rect[rectWH],\n\t\t\tstart: rect[rectTL],\n\t\t\tdragging: true,\n\t\t});\n\t\tonDraggingChange?.(true);\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, size } = state;\n\t\tconst offset = e[pageXY] - start;\n\n\t\tif (offset < 0 || offset > size) return;\n\n\t\tconst value = ((e[pageXY] - start) * 100) / size;\n\t\tstate.value = vertical ? 100 - value : value;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(getFixedValue());\n\t\tstate.dragging = false;\n\t\tonDraggingChange?.(false);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tvertical={vertical}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tcircleSize={circleSize}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.js","names":[],"sources":["../../../../packages/components/radio/radio.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t} = props;\n\n\tconst [selectedValue, setSelectedValue] = useState(value);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tsetSelectedValue(value);\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tsetSelectedValue(value);\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\tconst checked = selectedValue === option.value;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<RadioItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem ?? option.label}\n\t\t\t\t\t\t</RadioItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"radio.js","names":[],"sources":["../../../../packages/components/radio/radio.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t} = props;\n\n\tconst [selectedValue, setSelectedValue] = useState(value);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tsetSelectedValue(value);\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tsetSelectedValue(value);\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\tconst checked = selectedValue === option.value;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<RadioItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem ?? option.label}\n\t\t\t\t\t\t</RadioItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resizable.js","names":[],"sources":["../../../../packages/components/resizable/resizable.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport { useMouseMove, useMouseUp, useReactive } from \"../../js/hooks\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"resizable.js","names":[],"sources":["../../../../packages/components/resizable/resizable.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport { useMouseMove, useMouseUp, useReactive } from \"../../js/hooks\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"river.js","names":[],"sources":["../../../../packages/components/river/river.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, useLayoutEffect, useMemo, useRef } from \"react\";\nimport { useReactive } from \"../../js/hooks\";\nimport \"./index.css\";\nimport { IRiver } from \"./type\";\n\nconst River = (props: IRiver) => {\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tspeed = 1,\n\t\tpauseOnHover,\n\t\t...restProps\n\t} = props;\n\tconst trackRef = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<any>({\n\t\tinitialized: false,\n\t\toffset: 0,\n\t\tqueue: [],\n\t\tpaddingLeft: 0,\n\t\tpause: false,\n\t});\n\tconst rafRef = useRef<any>(null);\n\tconst sizeRef = useRef<number[]>([]);\n\tconst [items, length] = useMemo(() => {\n\t\tconst nodes = Children.toArray(children);\n\n\t\treturn [nodes, nodes.length];\n\t}, [children]);\n\n\tconst animate = () => {\n\t\tif (!trackRef.current) return;\n\n\t\tlet next = state.offset - speed;\n\t\tconst d = Math.abs(next);\n\t\tconst [head, ...restQueue] = state.queue;\n\t\tconst size = sizeRef.current.at(head % length) ?? 0;\n\n\t\tif (d > size) {\n\t\t\tconst tail = state.queue.at(-1);\n\t\t\tconst newQueue = [...restQueue, tail + 1];\n\n\t\t\tstate.queue = newQueue;\n\t\t\tnext += size;\n\t\t}\n\n\t\tstate.offset = next;\n\n\t\tif (!state.pause) {\n\t\t\trafRef.current = requestAnimationFrame(animate);\n\t\t}\n\t};\n\n\tconst cancelRaf = () => {\n\t\tif (!rafRef.current) return;\n\n\t\tcancelAnimationFrame(rafRef.current);\n\t\trafRef.current = null;\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\n\t\tstate.pause = true;\n\t\tcancelRaf();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\n\t\tstate.pause = false;\n\t\trafRef.current = requestAnimationFrame(animate);\n\t};\n\n\tuseLayoutEffect(() => {\n\t\tif (!trackRef.current) return;\n\n\t\tconst pa = trackRef.current.offsetParent as HTMLDivElement;\n\t\tconst parentWidth = pa.offsetWidth;\n\t\tconst nodes = Array.from(trackRef.current.childNodes);\n\t\tconst length = nodes.length;\n\n\t\tif (length < 2) return;\n\n\t\tlet contentWidth = trackRef.current.scrollWidth;\n\t\tlet count = 0;\n\t\tconst tails: number[] = [];\n\n\t\tconst sizes = nodes.map((node: any) => {\n\t\t\treturn node.offsetWidth;\n\t\t});\n\t\tsizeRef.current = sizes;\n\n\t\twhile (contentWidth < parentWidth) {\n\t\t\tconst w = sizes.at(count % length) ?? 0;\n\t\t\ttails.push(length + count);\n\t\t\tcontentWidth += w;\n\t\t\tcount += 1;\n\t\t}\n\n\t\tstate.offset = -1 * sizes.at(-1);\n\t\tstate.queue = [-1, ...sizes.map((_, i) => i), ...tails];\n\n\t\tanimate();\n\t\tstate.initialized = true;\n\n\t\treturn () => {\n\t\t\tstate.queue = [];\n\t\t\tstate.initialized = false;\n\t\t\tstate.offset = 0;\n\n\t\t\tcancelRaf();\n\t\t};\n\t}, [children]);\n\n\treturn (\n\t\t<div\n\t\t\t{...restProps}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-river\",\n\t\t\t\t{\n\t\t\t\t\t\"i-river-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={trackRef}\n\t\t\t\tclassName='i-river-track'\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate3d(${state.offset}px, 0, 0)`,\n\t\t\t\t\tpaddingLeft: state.paddingLeft,\n\t\t\t\t}}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t{!state.initialized &&\n\t\t\t\t\tChildren.map(children, (item, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div className='i-river-item' key={i}>\n\t\t\t\t\t\t\t\t{item}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t{state.initialized &&\n\t\t\t\t\tstate.queue.map((index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div className='i-river-item' key={index}>\n\t\t\t\t\t\t\t\t{items.at(index % items.length)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default River;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"river.js","names":[],"sources":["../../../../packages/components/river/river.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, useLayoutEffect, useMemo, useRef } from \"react\";\nimport { useReactive } from \"../../js/hooks\";\nimport \"./index.css\";\nimport { IRiver } from \"./type\";\n\nconst River = (props: IRiver) => {\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tspeed = 1,\n\t\tpauseOnHover,\n\t\t...restProps\n\t} = props;\n\tconst trackRef = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<any>({\n\t\tinitialized: false,\n\t\toffset: 0,\n\t\tqueue: [],\n\t\tpaddingLeft: 0,\n\t\tpause: false,\n\t});\n\tconst rafRef = useRef<any>(null);\n\tconst sizeRef = useRef<number[]>([]);\n\tconst [items, length] = useMemo(() => {\n\t\tconst nodes = Children.toArray(children);\n\n\t\treturn [nodes, nodes.length];\n\t}, [children]);\n\n\tconst animate = () => {\n\t\tif (!trackRef.current) return;\n\n\t\tlet next = state.offset - speed;\n\t\tconst d = Math.abs(next);\n\t\tconst [head, ...restQueue] = state.queue;\n\t\tconst size = sizeRef.current.at(head % length) ?? 0;\n\n\t\tif (d > size) {\n\t\t\tconst tail = state.queue.at(-1);\n\t\t\tconst newQueue = [...restQueue, tail + 1];\n\n\t\t\tstate.queue = newQueue;\n\t\t\tnext += size;\n\t\t}\n\n\t\tstate.offset = next;\n\n\t\tif (!state.pause) {\n\t\t\trafRef.current = requestAnimationFrame(animate);\n\t\t}\n\t};\n\n\tconst cancelRaf = () => {\n\t\tif (!rafRef.current) return;\n\n\t\tcancelAnimationFrame(rafRef.current);\n\t\trafRef.current = null;\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\n\t\tstate.pause = true;\n\t\tcancelRaf();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\n\t\tstate.pause = false;\n\t\trafRef.current = requestAnimationFrame(animate);\n\t};\n\n\tuseLayoutEffect(() => {\n\t\tif (!trackRef.current) return;\n\n\t\tconst pa = trackRef.current.offsetParent as HTMLDivElement;\n\t\tconst parentWidth = pa.offsetWidth;\n\t\tconst nodes = Array.from(trackRef.current.childNodes);\n\t\tconst length = nodes.length;\n\n\t\tif (length < 2) return;\n\n\t\tlet contentWidth = trackRef.current.scrollWidth;\n\t\tlet count = 0;\n\t\tconst tails: number[] = [];\n\n\t\tconst sizes = nodes.map((node: any) => {\n\t\t\treturn node.offsetWidth;\n\t\t});\n\t\tsizeRef.current = sizes;\n\n\t\twhile (contentWidth < parentWidth) {\n\t\t\tconst w = sizes.at(count % length) ?? 0;\n\t\t\ttails.push(length + count);\n\t\t\tcontentWidth += w;\n\t\t\tcount += 1;\n\t\t}\n\n\t\tstate.offset = -1 * sizes.at(-1);\n\t\tstate.queue = [-1, ...sizes.map((_, i) => i), ...tails];\n\n\t\tanimate();\n\t\tstate.initialized = true;\n\n\t\treturn () => {\n\t\t\tstate.queue = [];\n\t\t\tstate.initialized = false;\n\t\t\tstate.offset = 0;\n\n\t\t\tcancelRaf();\n\t\t};\n\t}, [children]);\n\n\treturn (\n\t\t<div\n\t\t\t{...restProps}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-river\",\n\t\t\t\t{\n\t\t\t\t\t\"i-river-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={trackRef}\n\t\t\t\tclassName='i-river-track'\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate3d(${state.offset}px, 0, 0)`,\n\t\t\t\t\tpaddingLeft: state.paddingLeft,\n\t\t\t\t}}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t{!state.initialized &&\n\t\t\t\t\tChildren.map(children, (item, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div className='i-river-item' key={i}>\n\t\t\t\t\t\t\t\t{item}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t{state.initialized &&\n\t\t\t\t\tstate.queue.map((index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div className='i-river-item' key={index}>\n\t\t\t\t\t\t\t\t{items.at(index % items.length)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default River;\n"],"mappings":""}
|
|
@@ -3,9 +3,8 @@ import Empty from "../utils/empty/index.js";
|
|
|
3
3
|
import list_default from "../list/index.js";
|
|
4
4
|
import tag_default from "../tag/index.js";
|
|
5
5
|
import classNames from "classnames";
|
|
6
|
+
import { CheckRound, SearchRound } from "@ricons/material";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import CheckRound from "@ricons/material/es/CheckRound.js";
|
|
8
|
-
import SearchRound from "@ricons/material/es/SearchRound.js";
|
|
9
8
|
//#region packages/components/select/options.tsx
|
|
10
9
|
const Options = (props) => {
|
|
11
10
|
const { value: val, options, filter, filterPlaceholder, multiple, empty = /* @__PURE__ */ jsx(Empty, {}), onSelect, onFilter } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","names":["Icon","List","Tag"],"sources":["../../../../packages/components/select/options.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"options.js","names":["Icon","List","Tag"],"sources":["../../../../packages/components/select/options.tsx"],"sourcesContent":["import { CheckRound, SearchRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { TOption } from \"../../type\";\nimport Icon from \"../icon\";\nimport List from \"../list\";\nimport Tag from \"../tag\";\nimport Empty from \"../utils/empty\";\nimport { ISelectOptions } from \"./type\";\nexport const Options = (props: ISelectOptions) => {\n\tconst {\n\t\tvalue: val,\n\t\toptions,\n\t\tfilter,\n\t\tfilterPlaceholder,\n\t\tmultiple,\n\t\tempty = <Empty />,\n\t\tonSelect,\n\t\tonFilter,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-select-options\", {\n\t\t\t\t\"i-select-options-multiple\": multiple,\n\t\t\t})}\n\t\t>\n\t\t\t{filter && multiple && (\n\t\t\t\t<div className='i-select-filter'>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<SearchRound />}\n\t\t\t\t\t\tclassName='color-8 ml-8 my-auto'\n\t\t\t\t\t\tsize='1.2em'\n\t\t\t\t\t/>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype='text'\n\t\t\t\t\t\tclassName='i-input'\n\t\t\t\t\t\tplaceholder={filterPlaceholder}\n\t\t\t\t\t\tonChange={onFilter}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{options.length === 0 && empty}\n\n\t\t\t{options.map((option, i) => {\n\t\t\t\tconst { label, value, disabled } = option;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? val?.includes(value)\n\t\t\t\t\t: val === value;\n\n\t\t\t\treturn (\n\t\t\t\t\t<List.Item\n\t\t\t\t\t\tkey={(value as string) || i}\n\t\t\t\t\t\tactive={isActive}\n\t\t\t\t\t\ttype='option'\n\t\t\t\t\t\tonClick={() => onSelect?.(value, option)}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{multiple && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={<CheckRound />}\n\t\t\t\t\t\t\t\tclassName='i-select-option-check'\n\t\t\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</List.Item>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport const activeOptions = (\n\toptions: TOption[] = [],\n\tvalue: any[] = [],\n\tmax = 3\n) => {\n\tconst total = options.flatMap((opt) =>\n\t\tvalue.includes(opt.value) ? [opt] : []\n\t);\n\n\tif (max >= total.length) return total;\n\n\tconst rest = total.length - max;\n\tconst after = total.slice(0, max);\n\tafter.push(rest as any);\n\n\treturn after;\n};\n\nexport const displayValue = (config) => {\n\tconst { options, value, maxDisplay, multiple, onSelect } = config;\n\n\tif (multiple) {\n\t\treturn activeOptions(options, value, maxDisplay).map((opt, i) => {\n\t\t\tif (typeof opt === \"number\") return <Tag key={i}>+{opt}</Tag>;\n\n\t\t\tconst { label, value } = opt;\n\n\t\t\treturn (\n\t\t\t\t<Tag\n\t\t\t\t\tkey={value as string}\n\t\t\t\t\thoverShowClose\n\t\t\t\t\tonClose={(e) => {\n\t\t\t\t\t\te?.stopPropagation();\n\t\t\t\t\t\tonSelect?.(value, opt);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Tag>\n\t\t\t);\n\t\t});\n\t}\n\n\treturn options.find((opt: TOption) => opt.value === value)?.label;\n};\n"],"mappings":";;;;;;;;AAQA,MAAa,WAAW,UAA0B;CACjD,MAAM,EACL,OAAO,KACP,SACA,QACA,mBACA,UACA,QAAQ,oBAAC,OAAD,EAAS,CAAA,EACjB,UACA,aACG;AAEJ,QACC,qBAAC,OAAD;EACC,WAAW,WAAW,oBAAoB,EACzC,6BAA6B,UAC7B,CAAC;YAHH;GAKE,UAAU,YACV,qBAAC,OAAD;IAAK,WAAU;cAAf,CACC,oBAACA,cAAD;KACC,MAAM,oBAAC,aAAD,EAAe,CAAA;KACrB,WAAU;KACV,MAAK;KACJ,CAAA,EACF,oBAAC,SAAD;KACC,MAAK;KACL,WAAU;KACV,aAAa;KACb,UAAU;KACT,CAAA,CACG;;GAGN,QAAQ,WAAW,KAAK;GAExB,QAAQ,KAAK,QAAQ,MAAM;IAC3B,MAAM,EAAE,OAAO,OAAO,aAAa;IACnC,MAAM,WAAW,WACd,KAAK,SAAS,MAAM,GACpB,QAAQ;AAEX,WACC,qBAACC,aAAK,MAAN;KAEC,QAAQ;KACR,MAAK;KACL,eAAe,WAAW,OAAO,OAAO;KAC9B;eALX,CAOE,YACA,oBAACD,cAAD;MACC,MAAM,oBAAC,YAAD,EAAc,CAAA;MACpB,WAAU;MACV,MAAK;MACJ,CAAA,EAEF,MACU;OAdL,SAAoB,EAcf;KAEZ;GACG;;;AAIR,MAAa,iBACZ,UAAqB,EAAE,EACvB,QAAe,EAAE,EACjB,MAAM,MACF;CACJ,MAAM,QAAQ,QAAQ,SAAS,QAC9B,MAAM,SAAS,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,CACtC;AAED,KAAI,OAAO,MAAM,OAAQ,QAAO;CAEhC,MAAM,OAAO,MAAM,SAAS;CAC5B,MAAM,QAAQ,MAAM,MAAM,GAAG,IAAI;AACjC,OAAM,KAAK,KAAY;AAEvB,QAAO;;AAGR,MAAa,gBAAgB,WAAW;CACvC,MAAM,EAAE,SAAS,OAAO,YAAY,UAAU,aAAa;AAE3D,KAAI,SACH,QAAO,cAAc,SAAS,OAAO,WAAW,CAAC,KAAK,KAAK,MAAM;AAChE,MAAI,OAAO,QAAQ,SAAU,QAAO,qBAACE,aAAD,EAAA,UAAA,CAAa,KAAE,IAAU,EAAA,EAAf,EAAe;EAE7D,MAAM,EAAE,OAAO,UAAU;AAEzB,SACC,oBAACA,aAAD;GAEC,gBAAA;GACA,UAAU,MAAM;AACf,OAAG,iBAAiB;AACpB,eAAW,OAAO,IAAI;;aAGtB;GACI,EARA,MAQA;GAEN;AAGH,QAAO,QAAQ,MAAM,QAAiB,IAAI,UAAU,MAAM,EAAE"}
|
|
@@ -3,10 +3,10 @@ import helpericon_default from "../utils/helpericon/index.js";
|
|
|
3
3
|
import popup_default from "../popup/index.js";
|
|
4
4
|
import { Options, displayValue } from "./options.js";
|
|
5
5
|
import classNames from "classnames";
|
|
6
|
-
import { debounce } from "radash";
|
|
6
|
+
import { debounce } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
|
|
7
7
|
import { useEffect, useMemo, useState } from "react";
|
|
8
|
+
import { UnfoldMoreRound } from "@ricons/material";
|
|
8
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
-
import UnfoldMoreRound from "@ricons/material/es/UnfoldMoreRound.js";
|
|
10
10
|
//#region packages/components/select/select.tsx
|
|
11
11
|
const Select = (props) => {
|
|
12
12
|
const { ref, type = "text", name, label, value = "", placeholder, options = [], multiple, prepend, append, labelInline, style, className, message, status = "normal", hideClear, hideArrow, maxDisplay, border, filter, tip, filterPlaceholder = "...", popupProps, onSelect, onChange, ...restProps } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","names":[],"sources":["../../../../packages/components/select/select.tsx"],"sourcesContent":["import UnfoldMoreRound from \"@ricons/material
|
|
1
|
+
{"version":3,"file":"select.js","names":[],"sources":["../../../../packages/components/select/select.tsx"],"sourcesContent":["import { UnfoldMoreRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport { ChangeEvent, useEffect, useMemo, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport { TOption } from \"../../type\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { Options, displayValue } from \"./options\";\nimport { ISelect } from \"./type\";\n\nconst Select = (props: ISelect) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tname,\n\t\tlabel,\n\t\tvalue = \"\",\n\t\tplaceholder,\n\t\toptions = [],\n\t\tmultiple,\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tstyle,\n\t\tclassName,\n\t\tmessage,\n\t\tstatus = \"normal\",\n\t\thideClear,\n\t\thideArrow,\n\t\tmaxDisplay,\n\t\tborder,\n\t\tfilter,\n\t\ttip,\n\t\tfilterPlaceholder = \"...\",\n\t\tpopupProps,\n\t\tonSelect,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst [filterValue, setFilterValue] = useState(\"\");\n\tconst [selectedValue, setSelectedValue] = useState(value);\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst filterOptions = useMemo(() => {\n\t\tconst fv = filterValue;\n\t\tif (!fv || !filter) return formattedOptions;\n\n\t\tconst filterFn =\n\t\t\ttypeof filter === \"function\"\n\t\t\t\t? filter\n\t\t\t\t: (opt) => opt.value.includes(fv) || opt.label.includes(fv);\n\n\t\treturn formattedOptions.filter(filterFn);\n\t}, [formattedOptions, filter, filterValue]);\n\n\tconst changeValue = (v: any) => {\n\t\tsetSelectedValue(v);\n\t\tonChange?.(v);\n\t};\n\n\tconst displayLabel = useMemo(() => {\n\t\tif (multiple) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst option = formattedOptions.find(\n\t\t\t(opt) => opt.value === selectedValue\n\t\t);\n\t\treturn option ? option.label : selectedValue;\n\t}, [selectedValue, formattedOptions]);\n\n\tconst handleSelect = (value: any, option?: TOption) => {\n\t\tonSelect?.(value, option);\n\n\t\tif (multiple) {\n\t\t\tconst values = [...(selectedValue as any[])];\n\t\t\tconst i = values.findIndex((v) => v === value);\n\n\t\t\ti > -1 ? values.splice(i, 1) : values.push(value);\n\t\t\tchangeValue(values as any);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tchangeValue(value);\n\t};\n\n\tconst handleVisibleChange = (visible: boolean) => {\n\t\tsetActive(visible);\n\n\t\tif (!filter) return;\n\n\t\tsetFilterValue(\"\");\n\t};\n\n\tconst handleHelperClick = (e) => {\n\t\te.stopPropagation();\n\t\tsetActive(true);\n\t\tif (!active) return;\n\n\t\tchangeValue(multiple ? [] : \"\");\n\t};\n\n\tconst handleFilterChange = debounce(\n\t\t{ delay: 400 },\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst v = e.target.value;\n\t\t\tsetFilterValue(v);\n\t\t}\n\t);\n\n\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tsetFilterValue(e.target.value);\n\t};\n\n\tuseEffect(() => {\n\t\tsetSelectedValue(value);\n\t}, [value]);\n\n\tconst hasValue = multiple\n\t\t? (selectedValue as any[]).length > 0\n\t\t: !!selectedValue;\n\tconst clearable = !hideClear && active && hasValue;\n\tconst text = message ?? tip;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t<Popup\n\t\t\t\tposition='bottom'\n\t\t\t\tarrow={false}\n\t\t\t\tfitSize\n\t\t\t\toffset={0}\n\t\t\t\t{...popupProps}\n\t\t\t\tvisible={active}\n\t\t\t\ttrigger='none'\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t\tcontent={\n\t\t\t\t\t<Options\n\t\t\t\t\t\toptions={filterOptions}\n\t\t\t\t\t\tvalue={selectedValue}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tfilter={!!filter}\n\t\t\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonFilter={handleFilterChange}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t\t\t\"i-input-focus\": active,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={() => setActive(true)}\n\t\t\t\t>\n\t\t\t\t\t{prepend}\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\ttype='hidden'\n\t\t\t\t\t\tvalue={selectedValue}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{multiple ? (\n\t\t\t\t\t\thasValue ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-input i-select\", {\n\t\t\t\t\t\t\t\t\t\"i-select-multiple\": multiple,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{displayValue({\n\t\t\t\t\t\t\t\t\toptions: formattedOptions,\n\t\t\t\t\t\t\t\t\tvalue: selectedValue,\n\t\t\t\t\t\t\t\t\tmultiple,\n\t\t\t\t\t\t\t\t\tmaxDisplay,\n\t\t\t\t\t\t\t\t\tonSelect: handleSelect,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\n\t\t\t\t\t{!multiple && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={active ? filterValue : displayLabel}\n\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\tplaceholder={displayLabel || placeholder}\n\t\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\t\treadOnly={!filter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideArrow}\n\t\t\t\t\t\ticon={clearable ? undefined : <UnfoldMoreRound />}\n\t\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{append}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\n\t\t\t{text && <span className='i-input-message'>{text}</span>}\n\t\t</label>\n\t);\n};\n\nexport default Select;\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"divider.js","names":[],"sources":["../../../../packages/components/step/divider.tsx"],"sourcesContent":["import \"./index.css\";\n\nexport default function Divider() {\n\treturn <i className='i-step-divider' />;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"divider.js","names":[],"sources":["../../../../packages/components/step/divider.tsx"],"sourcesContent":["import \"./index.css\";\n\nexport default function Divider() {\n\treturn <i className='i-step-divider' />;\n}\n"],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Divider from "./divider.js";
|
|
2
2
|
import classNames from "classnames";
|
|
3
|
+
import { CheckRound } from "@ricons/material";
|
|
3
4
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
-
import CheckRound from "@ricons/material/es/CheckRound.js";
|
|
5
5
|
//#region packages/components/step/item.tsx
|
|
6
6
|
const STATUS = [
|
|
7
7
|
"finished",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","names":[],"sources":["../../../../packages/components/step/item.tsx"],"sourcesContent":["import CheckRound from \"@ricons/material
|
|
1
|
+
{"version":3,"file":"item.js","names":[],"sources":["../../../../packages/components/step/item.tsx"],"sourcesContent":["import { CheckRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Divider from \"./divider\";\nimport { IStepItem } from \"./type\";\n\nconst STATUS = [\"finished\", \"active\", \"pending\"];\n\nfunction defaultRenderIcon(i: number, status: string) {\n\treturn (\n\t\t<span className='i-step-item-index'>\n\t\t\t{status === \"finished\" ? (\n\t\t\t\t<CheckRound style={{ width: \"1em\", height: \"1.5em\" }} />\n\t\t\t) : (\n\t\t\t\ti + 1\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction Item(props: IStepItem) {\n\tconst {\n\t\tindex = 0,\n\t\tactive = 0,\n\t\trenderIcon = defaultRenderIcon,\n\t\ttitle,\n\t\tvertical,\n\t\tline = <Divider />,\n\t\tasList,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\tconst status = STATUS[index === active ? 1 : index < active ? 0 : 2];\n\n\tconst handleClick = () => {\n\t\tonClick?.(index);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-step-item-${status}`]: !asList,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{vertical ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-left'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='i-step-item-right'>\n\t\t\t\t\t\t<div className='i-step-item-title'>{title}</div>\n\t\t\t\t\t\t{children && (\n\t\t\t\t\t\t\t<div className='i-step-item-content'>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-title'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\n\t\t\t\t\t\t<span>{title}</span>\n\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t{children && (\n\t\t\t\t\t\t<div className='i-step-item-content'>{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n"],"mappings":";;;;;AAKA,MAAM,SAAS;CAAC;CAAY;CAAU;CAAU;AAEhD,SAAS,kBAAkB,GAAW,QAAgB;AACrD,QACC,oBAAC,QAAD;EAAM,WAAU;YACd,WAAW,aACX,oBAAC,YAAD,EAAY,OAAO;GAAE,OAAO;GAAO,QAAQ;GAAS,EAAI,CAAA,GAExD,IAAI;EAEC,CAAA;;AAIT,SAAS,KAAK,OAAkB;CAC/B,MAAM,EACL,QAAQ,GACR,SAAS,GACT,aAAa,mBACb,OACA,UACA,OAAO,oBAAC,SAAD,EAAW,CAAA,EAClB,QACA,OACA,WACA,UACA,YACG;CACJ,MAAM,SAAS,OAAO,UAAU,SAAS,IAAI,QAAQ,SAAS,IAAI;CAElE,MAAM,oBAAoB;AACzB,YAAU,MAAM;;AAGjB,QACC,oBAAC,OAAD;EACQ;EACP,WAAW,WACV,eACA,GACE,eAAe,WAAW,CAAC,QAC5B,EACD,UACA;EACD,SAAS;YAER,WACA,qBAAA,UAAA,EAAA,UAAA,CACC,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,aAAa,OAAO,OAAO,EAC3B,KACI;MACN,qBAAC,OAAD;GAAK,WAAU;aAAf,CACC,oBAAC,OAAD;IAAK,WAAU;cAAqB;IAAY,CAAA,EAC/C,YACA,oBAAC,OAAD;IAAK,WAAU;IACb;IACI,CAAA,CAEF;KACJ,EAAA,CAAA,GAEH,qBAAA,UAAA,EAAA,UAAA,CACC,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,aAAa,OAAO,OAAO;IAE5B,oBAAC,QAAD,EAAA,UAAO,OAAa,CAAA;IAEnB;IACI;MACL,YACA,oBAAC,OAAD;GAAK,WAAU;GAAuB;GAAe,CAAA,CAEpD,EAAA,CAAA;EAEC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.js","names":[],"sources":["../../../../packages/components/step/step.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, ReactNode, useMemo } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IStep } from \"./type\";\n\nconst Step = (props: IStep) => {\n\tconst {\n\t\tactive = 0,\n\t\tvertical,\n\t\trenderIcon,\n\t\tline,\n\t\tstyle,\n\t\tasList,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\n\tconst steps = useMemo(() => {\n\t\tconst nodes: ReactNode[] = [];\n\t\tlet index = 0;\n\n\t\tChildren.map(children, (el: any) => {\n\t\t\tif (!el || el.type !== Item) return;\n\n\t\t\tconst { props: elProps } = el;\n\n\t\t\tnodes.push({\n\t\t\t\t...el,\n\t\t\t\tprops: {\n\t\t\t\t\trenderIcon,\n\t\t\t\t\tline,\n\t\t\t\t\tonClick,\n\t\t\t\t\t...elProps,\n\t\t\t\t\tvertical,\n\t\t\t\t\tactive,\n\t\t\t\t\tasList,\n\t\t\t\t\tindex: index++,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\treturn nodes;\n\t}, [active, children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step\",\n\t\t\t\t{ \"i-step-vertical\": vertical },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{steps}\n\t\t</div>\n\t);\n};\n\nStep.Item = Item;\n\nexport default Step;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"step.js","names":[],"sources":["../../../../packages/components/step/step.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, ReactNode, useMemo } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IStep } from \"./type\";\n\nconst Step = (props: IStep) => {\n\tconst {\n\t\tactive = 0,\n\t\tvertical,\n\t\trenderIcon,\n\t\tline,\n\t\tstyle,\n\t\tasList,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\n\tconst steps = useMemo(() => {\n\t\tconst nodes: ReactNode[] = [];\n\t\tlet index = 0;\n\n\t\tChildren.map(children, (el: any) => {\n\t\t\tif (!el || el.type !== Item) return;\n\n\t\t\tconst { props: elProps } = el;\n\n\t\t\tnodes.push({\n\t\t\t\t...el,\n\t\t\t\tprops: {\n\t\t\t\t\trenderIcon,\n\t\t\t\t\tline,\n\t\t\t\t\tonClick,\n\t\t\t\t\t...elProps,\n\t\t\t\t\tvertical,\n\t\t\t\t\tactive,\n\t\t\t\t\tasList,\n\t\t\t\t\tindex: index++,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\treturn nodes;\n\t}, [active, children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step\",\n\t\t\t\t{ \"i-step-vertical\": vertical },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{steps}\n\t\t</div>\n\t);\n};\n\nStep.Item = Item;\n\nexport default Step;\n"],"mappings":""}
|
|
@@ -4,9 +4,8 @@ import { clamp } from "../../js/utils.js";
|
|
|
4
4
|
import Item from "./item.js";
|
|
5
5
|
import classNames from "classnames";
|
|
6
6
|
import { Children, useEffect, useImperativeHandle, useMemo, useRef } from "react";
|
|
7
|
+
import { KeyboardArrowLeftRound, KeyboardArrowRightRound } from "@ricons/material";
|
|
7
8
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
import KeyboardArrowLeftRound from "@ricons/material/es/KeyboardArrowLeftRound.js";
|
|
9
|
-
import KeyboardArrowRightRound from "@ricons/material/es/KeyboardArrowRightRound.js";
|
|
10
9
|
//#region packages/components/swiper/swiper.tsx
|
|
11
10
|
const Swiper = ((props) => {
|
|
12
11
|
const { ref, type = "normal", initial = 0, display = 1, scroll = 1, loop = true, vertical, prev = /* @__PURE__ */ jsx(icon_default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swiper.js","names":[],"sources":["../../../../packages/components/swiper/swiper.tsx"],"sourcesContent":["import KeyboardArrowLeftRound from \"@ricons/material/es/KeyboardArrowLeftRound.js\";\nimport KeyboardArrowRightRound from \"@ricons/material/es/KeyboardArrowRightRound.js\";\nimport classNames from \"classnames\";\nimport {\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { useMouseMove, useMouseUp, useReactive } from \"../../js/hooks\";\nimport { clamp } from \"../../js/utils\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { CompositionSwiper, ISwiper } from \"./type\";\n\nconst Swiper = ((props: ISwiper) => {\n\tconst {\n\t\tref,\n\t\ttype = \"normal\",\n\t\tinitial = 0,\n\t\tdisplay = 1,\n\t\tscroll = 1,\n\t\tloop = true,\n\t\tvertical,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} size='2em' />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} size='2em' />,\n\t\tduration = 600,\n\t\tinterval = 3000,\n\t\tautoplay,\n\t\tpauseOnHover,\n\t\tarrow = true,\n\t\treverse,\n\t\tdraggable,\n\t\tdragOffset = 40,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tindicator,\n\t\tfixedIndicator,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\n\t\tonItemClick,\n\t} = props;\n\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst transition = `all ${duration / 1000}s`;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\tswipable: true,\n\t\ttransition: type === \"fade\" ? \"none\" : transition,\n\t\tdragStart: 0,\n\t\tdragging: false,\n\t\tinitialized: false,\n\t});\n\n\tconst items = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type !== Item) return;\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\tconst [displayItems, extra, size, total, listSize] = useMemo(() => {\n\t\tconst extra =\n\t\t\ttype === \"normal\" && loop && items.length > display\n\t\t\t\t? display + 1\n\t\t\t\t: 0;\n\t\tlet list: any = [];\n\n\t\tif (extra <= 0) {\n\t\t\tlist = [...items];\n\t\t} else {\n\t\t\tconst head = items.slice(0, extra);\n\t\t\tconst tail = items.slice(-extra);\n\t\t\tlist = [...tail, ...items, ...head];\n\t\t}\n\n\t\tconst listSize = `${(list.length / display) * 100}%`;\n\n\t\treturn [list, extra, items.length, list.length, listSize];\n\t}, [display, loop, type, items]);\n\n\tconst offsetPercent = useMemo(\n\t\t() => (-100 * (state.current + extra)) / total,\n\t\t[state.current, total]\n\t);\n\n\tconst position = useMemo(() => {\n\t\tif (size <= display || type === \"fade\") return;\n\n\t\tconst offset = vertical\n\t\t\t? `0, ${offsetPercent}%`\n\t\t\t: `${offsetPercent}%, 0`;\n\t\treturn `translate3d(${offset}, 0)`;\n\t}, [offsetPercent, vertical, display, size, type]);\n\n\tconst trackStyle = useMemo(() => {\n\t\tif (!vertical || !itemHeight) return;\n\n\t\treturn {\n\t\t\theight: itemHeight * display,\n\t\t};\n\t}, [vertical, itemHeight, display]);\n\n\tconst indicatorsLoop = useMemo(() => {\n\t\treturn Array.from({\n\t\t\tlength: Math.ceil((size - display) / scroll) + 1,\n\t\t});\n\t}, [loop, indicator]);\n\n\tconst clearTimer = () => {\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst swipeTo = (i: number) => {\n\t\tif (!state.swipable || i === state.current) return;\n\t\tstate.swipable = false;\n\t\tonBeforeSwipe?.(state.current);\n\n\t\tlet reset = false;\n\t\tlet next = i;\n\t\tconst lastDisplay = size - display;\n\n\t\tif (loop) {\n\t\t\tif (i > lastDisplay) {\n\t\t\t\treset = true;\n\t\t\t\ti = size;\n\t\t\t\tnext = 0;\n\t\t\t} else if (i < 0) {\n\t\t\t\treset = true;\n\t\t\t\ti = -display;\n\t\t\t\tnext = lastDisplay;\n\t\t\t}\n\t\t} else {\n\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\ti = next;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.swipable = true;\n\t\t}, duration + 32);\n\n\t\tif (type === \"fade\") {\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\treturn;\n\t\t}\n\n\t\tstate.current = i;\n\n\t\tif (!reset) {\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t}, duration + 12);\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.transition = \"none\";\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = transition;\n\t\t\t}, 60);\n\t\t}, duration + 20);\n\t};\n\tconst swipeNext = () => {\n\t\tswipeTo(reverse ? state.current - scroll : state.current + scroll);\n\t};\n\n\tconst swipePrev = () => {\n\t\tswipeTo(reverse ? state.current + scroll : state.current - scroll);\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tObject.assign(state, {\n\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\tdragging: true,\n\t\t\ttransition: \"none\",\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst offset =\n\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\toffsetPercent;\n\n\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t}, 0)`;\n\t};\n\n\tconst handleMouseUp = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\n\t\tif (e.changedTouches) {\n\t\t\te = e.changedTouches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst part =\n\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] / total;\n\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\tconst absOffset = Math.abs(offset);\n\n\t\tif (absOffset > dragOffset) {\n\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\tconst p = base + mod;\n\n\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\tswipeTo(to);\n\t\t}\n\n\t\tlistRef.current.style.transform = position || \"\";\n\n\t\tObject.assign(state, {\n\t\t\tdragging: false,\n\t\t\ttransition,\n\t\t});\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tswipeTo,\n\t\tswipeNext,\n\t\tswipePrev,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (!autoplay) return;\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t};\n\t}, [autoplay, interval]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-swiper\",\n\t\t\t\t{\n\t\t\t\t\t\"i-swiper-vertical\": vertical,\n\t\t\t\t\t\"i-swiper-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-swiper-track'\n\t\t\t\tstyle={trackStyle}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={listRef}\n\t\t\t\t\tclassName={classNames(\"i-swiper-list\", {\n\t\t\t\t\t\t\"i-swiper-fade\": type === \"fade\",\n\t\t\t\t\t})}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t[vertical ? \"height\" : \"width\"]: listSize,\n\t\t\t\t\t\ttransform: position,\n\t\t\t\t\t\ttransition: state.transition,\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t>\n\t\t\t\t\t{displayItems.map((item, i) => {\n\t\t\t\t\t\tconst { props: itemProps } = item;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\titemIndex={(i - extra + size) % size}\n\t\t\t\t\t\t\t\tactive={i - extra === state.current}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\tgap={gap}\n\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\titemHeight={itemHeight}\n\t\t\t\t\t\t\t\tvertical={vertical}\n\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t{...itemProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{arrow && size > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{(loop || state.current !== 0) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{(loop || state.current < size - display) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{indicator && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-swiper-indicators\", {\n\t\t\t\t\t\t\"i-swiper-indicators-fixed\": fixedIndicator,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{indicatorsLoop.map((_, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-swiper-indicator\", {\n\t\t\t\t\t\t\t\t\t\"i-indicator-active\":\n\t\t\t\t\t\t\t\t\t\ti ===\n\t\t\t\t\t\t\t\t\t\tMath[loop ? \"floor\" : \"ceil\"](\n\t\t\t\t\t\t\t\t\t\t\t((state.current + size) % size) /\n\t\t\t\t\t\t\t\t\t\t\t\tscroll\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => swipeTo(i * scroll)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderIndicator?.(i)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}) as CompositionSwiper;\n\nSwiper.Item = Item;\n\nexport default Swiper;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"swiper.js","names":[],"sources":["../../../../packages/components/swiper/swiper.tsx"],"sourcesContent":["import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport {\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { useMouseMove, useMouseUp, useReactive } from \"../../js/hooks\";\nimport { clamp } from \"../../js/utils\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { CompositionSwiper, ISwiper } from \"./type\";\n\nconst Swiper = ((props: ISwiper) => {\n\tconst {\n\t\tref,\n\t\ttype = \"normal\",\n\t\tinitial = 0,\n\t\tdisplay = 1,\n\t\tscroll = 1,\n\t\tloop = true,\n\t\tvertical,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} size='2em' />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} size='2em' />,\n\t\tduration = 600,\n\t\tinterval = 3000,\n\t\tautoplay,\n\t\tpauseOnHover,\n\t\tarrow = true,\n\t\treverse,\n\t\tdraggable,\n\t\tdragOffset = 40,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tindicator,\n\t\tfixedIndicator,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\n\t\tonItemClick,\n\t} = props;\n\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst transition = `all ${duration / 1000}s`;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\tswipable: true,\n\t\ttransition: type === \"fade\" ? \"none\" : transition,\n\t\tdragStart: 0,\n\t\tdragging: false,\n\t\tinitialized: false,\n\t});\n\n\tconst items = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type !== Item) return;\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\tconst [displayItems, extra, size, total, listSize] = useMemo(() => {\n\t\tconst extra =\n\t\t\ttype === \"normal\" && loop && items.length > display\n\t\t\t\t? display + 1\n\t\t\t\t: 0;\n\t\tlet list: any = [];\n\n\t\tif (extra <= 0) {\n\t\t\tlist = [...items];\n\t\t} else {\n\t\t\tconst head = items.slice(0, extra);\n\t\t\tconst tail = items.slice(-extra);\n\t\t\tlist = [...tail, ...items, ...head];\n\t\t}\n\n\t\tconst listSize = `${(list.length / display) * 100}%`;\n\n\t\treturn [list, extra, items.length, list.length, listSize];\n\t}, [display, loop, type, items]);\n\n\tconst offsetPercent = useMemo(\n\t\t() => (-100 * (state.current + extra)) / total,\n\t\t[state.current, total]\n\t);\n\n\tconst position = useMemo(() => {\n\t\tif (size <= display || type === \"fade\") return;\n\n\t\tconst offset = vertical\n\t\t\t? `0, ${offsetPercent}%`\n\t\t\t: `${offsetPercent}%, 0`;\n\t\treturn `translate3d(${offset}, 0)`;\n\t}, [offsetPercent, vertical, display, size, type]);\n\n\tconst trackStyle = useMemo(() => {\n\t\tif (!vertical || !itemHeight) return;\n\n\t\treturn {\n\t\t\theight: itemHeight * display,\n\t\t};\n\t}, [vertical, itemHeight, display]);\n\n\tconst indicatorsLoop = useMemo(() => {\n\t\treturn Array.from({\n\t\t\tlength: Math.ceil((size - display) / scroll) + 1,\n\t\t});\n\t}, [loop, indicator]);\n\n\tconst clearTimer = () => {\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst swipeTo = (i: number) => {\n\t\tif (!state.swipable || i === state.current) return;\n\t\tstate.swipable = false;\n\t\tonBeforeSwipe?.(state.current);\n\n\t\tlet reset = false;\n\t\tlet next = i;\n\t\tconst lastDisplay = size - display;\n\n\t\tif (loop) {\n\t\t\tif (i > lastDisplay) {\n\t\t\t\treset = true;\n\t\t\t\ti = size;\n\t\t\t\tnext = 0;\n\t\t\t} else if (i < 0) {\n\t\t\t\treset = true;\n\t\t\t\ti = -display;\n\t\t\t\tnext = lastDisplay;\n\t\t\t}\n\t\t} else {\n\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\ti = next;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.swipable = true;\n\t\t}, duration + 32);\n\n\t\tif (type === \"fade\") {\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\treturn;\n\t\t}\n\n\t\tstate.current = i;\n\n\t\tif (!reset) {\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t}, duration + 12);\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.transition = \"none\";\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = transition;\n\t\t\t}, 60);\n\t\t}, duration + 20);\n\t};\n\tconst swipeNext = () => {\n\t\tswipeTo(reverse ? state.current - scroll : state.current + scroll);\n\t};\n\n\tconst swipePrev = () => {\n\t\tswipeTo(reverse ? state.current + scroll : state.current - scroll);\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tObject.assign(state, {\n\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\tdragging: true,\n\t\t\ttransition: \"none\",\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst offset =\n\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\toffsetPercent;\n\n\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t}, 0)`;\n\t};\n\n\tconst handleMouseUp = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\n\t\tif (e.changedTouches) {\n\t\t\te = e.changedTouches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst part =\n\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] / total;\n\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\tconst absOffset = Math.abs(offset);\n\n\t\tif (absOffset > dragOffset) {\n\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\tconst p = base + mod;\n\n\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\tswipeTo(to);\n\t\t}\n\n\t\tlistRef.current.style.transform = position || \"\";\n\n\t\tObject.assign(state, {\n\t\t\tdragging: false,\n\t\t\ttransition,\n\t\t});\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tswipeTo,\n\t\tswipeNext,\n\t\tswipePrev,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (!autoplay) return;\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t};\n\t}, [autoplay, interval]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-swiper\",\n\t\t\t\t{\n\t\t\t\t\t\"i-swiper-vertical\": vertical,\n\t\t\t\t\t\"i-swiper-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-swiper-track'\n\t\t\t\tstyle={trackStyle}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={listRef}\n\t\t\t\t\tclassName={classNames(\"i-swiper-list\", {\n\t\t\t\t\t\t\"i-swiper-fade\": type === \"fade\",\n\t\t\t\t\t})}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t[vertical ? \"height\" : \"width\"]: listSize,\n\t\t\t\t\t\ttransform: position,\n\t\t\t\t\t\ttransition: state.transition,\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t>\n\t\t\t\t\t{displayItems.map((item, i) => {\n\t\t\t\t\t\tconst { props: itemProps } = item;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\titemIndex={(i - extra + size) % size}\n\t\t\t\t\t\t\t\tactive={i - extra === state.current}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\tgap={gap}\n\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\titemHeight={itemHeight}\n\t\t\t\t\t\t\t\tvertical={vertical}\n\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t{...itemProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{arrow && size > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{(loop || state.current !== 0) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{(loop || state.current < size - display) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{indicator && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-swiper-indicators\", {\n\t\t\t\t\t\t\"i-swiper-indicators-fixed\": fixedIndicator,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{indicatorsLoop.map((_, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-swiper-indicator\", {\n\t\t\t\t\t\t\t\t\t\"i-indicator-active\":\n\t\t\t\t\t\t\t\t\t\ti ===\n\t\t\t\t\t\t\t\t\t\tMath[loop ? \"floor\" : \"ceil\"](\n\t\t\t\t\t\t\t\t\t\t\t((state.current + size) % size) /\n\t\t\t\t\t\t\t\t\t\t\t\tscroll\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => swipeTo(i * scroll)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderIndicator?.(i)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}) as CompositionSwiper;\n\nSwiper.Item = Item;\n\nexport default Swiper;\n"],"mappings":""}
|
|
@@ -6,8 +6,8 @@ import popup_default from "../popup/index.js";
|
|
|
6
6
|
import Item from "./item.js";
|
|
7
7
|
import classNames from "classnames";
|
|
8
8
|
import { Children, useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
9
|
+
import { MoreHorizRound } from "@ricons/material";
|
|
9
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
-
import MoreHorizRound from "@ricons/material/es/MoreHorizRound.js";
|
|
11
11
|
//#region packages/components/tabs/tabs.tsx
|
|
12
12
|
const Tabs = ((props) => {
|
|
13
13
|
const { ref, active, tabs: items, type = "default", prepend, append, children, className, vertical, toggable, navsJustify = "start", bar = true, hideMore, barClass, renderMore = () => /* @__PURE__ */ jsx(button_default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","names":[],"sources":["../../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import MoreHorizRound from \"@ricons/material/es/MoreHorizRound.js\";\nimport classNames from \"classnames\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tReactNode,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { useIntersectionObserver, useSize } from \"../../js/hooks\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs } from \"./type\";\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\tnavsJustify = \"start\",\n\t\tbar = true,\n\t\thideMore,\n\t\tbarClass,\n\t\trenderMore = () => (\n\t\t\t<Button flat square size='small'>\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\n\t\t\t</Button>\n\t\t),\n\t\tonTabChange,\n\t\t...rest\n\t} = props;\n\n\tconst navRefs = useRef<HTMLElement[]>([]);\n\tconst barRef = useRef<HTMLSpanElement>(null);\n\tconst navsRef = useRef<HTMLDivElement>(null);\n\tconst contentsRef = useRef<Map<string, ReactNode>>(new Map());\n\tconst [activeKey, setActiveKey] = useState<string | undefined>(active);\n\tconst [prevActiveKey, setPrevActiveKey] = useState<string | undefined>(\n\t\tundefined,\n\t);\n\tconst [barStyle, setBarStyle] = useState<CSSProperties>({});\n\tconst [cachedTabs, setCachedTabs] = useState<string[]>([]);\n\tconst [overflow, setOverflow] = useState(false);\n\tconst [moreTabs, setMoreTabs] = useState<ITabItem[]>([]);\n\tconst [tabs, setTabs] = useState<ITabItem[]>([]);\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst size = useSize(navsRef);\n\n\tuseEffect(() => {\n\t\tcontentsRef.current.clear();\n\n\t\tif (!items) {\n\t\t\tif (!children) {\n\t\t\t\tsetTabs([]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetTabs(\n\t\t\t\t(Children.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: string;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst {\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tchildren: tabChildren,\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\tkeepDOM,\n\t\t\t\t\t\tclosable,\n\t\t\t\t\t} = nodeProps;\n\t\t\t\t\tconst tabKey = String(key ?? i);\n\t\t\t\t\tcontentsRef.current.set(tabKey, tabChildren ?? content);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkey: tabKey,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tkeepDOM,\n\t\t\t\t\t\tclosable,\n\t\t\t\t\t};\n\t\t\t\t}) as ITabItem[]) ?? [],\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetTabs(\n\t\t\titems.map((item, i) => {\n\t\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\n\t\t\t\t\tconst key = String(item);\n\t\t\t\t\treturn { key, title: item };\n\t\t\t\t}\n\t\t\t\tconst key = String(item.key ?? i);\n\t\t\t\tcontentsRef.current.set(key, item.content);\n\t\t\t\tconst { content, ...rest } = item;\n\t\t\t\treturn {\n\t\t\t\t\t...rest,\n\t\t\t\t\tkey,\n\t\t\t\t};\n\t\t\t}),\n\t\t);\n\t}, [children, items]);\n\n\tconst add = (tab: ITabItem) => {\n\t\tconst tkey = String(tab.key ?? tabs.length);\n\t\tconst i = tabs.findIndex((t) => t.key === tkey);\n\n\t\tif (i > -1) {\n\t\t\topen(tabs[i].key ?? `${i}`);\n\t\t\treturn;\n\t\t}\n\n\t\tcontentsRef.current.set(tkey, tab.content);\n\t\tconst { content, ...rest } = tab;\n\t\tsetTabs((ts) => [...ts, { ...rest, key: tkey }]);\n\t\topen(tkey);\n\t};\n\n\tconst close = (key: string) => {\n\t\tconst i = tabs.findIndex((t) => t.key === key);\n\n\t\tif (i < 0) return;\n\n\t\tcontentsRef.current.delete(key);\n\t\tconst nextTabs = [...tabs];\n\t\tnextTabs.splice(i, 1);\n\t\tsetTabs(nextTabs);\n\n\t\tif (activeKey !== key) return;\n\n\t\tconst next = nextTabs[i] || nextTabs[i - 1];\n\t\topen(prevActiveKey ?? next?.key ?? \"\");\n\t};\n\n\tconst open = (key: string) => {\n\t\tif (key === activeKey) {\n\t\t\tif (!toggable) return;\n\n\t\t\tonTabChange?.(undefined, key);\n\t\t\tsetActiveKey(undefined);\n\n\t\t\tsetBarStyle({\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tsetPrevActiveKey(activeKey);\n\t\tonTabChange?.(key, activeKey);\n\t\tsetActiveKey(key);\n\t};\n\n\tuseEffect(() => {\n\t\tif (!size || hideMore || !observe) return;\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n\t\tconst { width, height } = size;\n\n\t\tconst nextOverflow = scrollHeight > height || scrollWidth > width;\n\t\tsetOverflow(nextOverflow);\n\n\t\tif (!nextOverflow) return;\n\n\t\tnavRefs.current.map((nav, i) => {\n\t\t\tif (!nav) return;\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\n\t\t\t\tsetTabs((ts) => {\n\t\t\t\t\tif (!ts[i]) return ts;\n\t\t\t\t\tconst nextTabs = ts.map((t, idx) =>\n\t\t\t\t\t\tidx === i ? { ...t, intersecting: visible } : t,\n\t\t\t\t\t);\n\t\t\t\t\tsetMoreTabs(nextTabs.filter((tab) => !tab.intersecting));\n\t\t\t\t\treturn nextTabs;\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}, [size, hideMore, tabs.length, observe]);\n\n\tuseEffect(() => {\n\t\tif (!bar || type === \"pane\" || activeKey === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = tabs.findIndex((tab) => tab.key === activeKey);\n\n\t\tsetTimeout(() => {\n\t\t\tconst nav = navRefs.current[index];\n\n\t\t\tif (!nav) return;\n\n\t\t\tif (tabs[index]?.keepDOM && activeKey) {\n\t\t\t\tsetCachedTabs((keys) => {\n\t\t\t\t\tif (keys.includes(activeKey)) return keys;\n\t\t\t\t\treturn [activeKey, ...keys];\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n\t\t\tconst isLine = type === \"line\";\n\n\t\t\tsetBarStyle({\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n\t\t\t});\n\t\t}, 16);\n\t}, [activeKey, bar, size, tabs, type, vertical]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || activeKey === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore || !unobserve) return;\n\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [tabs.length, hideMore, unobserve]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\n\t\tconst handleMouseWheel = (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\tif (vertical) return;\n\n\t\t\tnavsRef.current?.scrollBy({\n\t\t\t\tleft: e.deltaY + e.deltaX,\n\t\t\t});\n\t\t};\n\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = `${i}`, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": activeKey === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && overflow && moreTabs.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{moreTabs.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = `${i}`, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = activeKey === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(moreTabs)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{tabs.map((tab, i) => {\n\t\t\t\t\tconst key = tab.key ?? `${i}`;\n\t\t\t\t\tconst content = contentsRef.current.get(key);\n\t\t\t\t\tconst isActive = activeKey === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs.js","names":[],"sources":["../../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import { MoreHorizRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tReactNode,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { useIntersectionObserver, useSize } from \"../../js/hooks\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs } from \"./type\";\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\tnavsJustify = \"start\",\n\t\tbar = true,\n\t\thideMore,\n\t\tbarClass,\n\t\trenderMore = () => (\n\t\t\t<Button flat square size='small'>\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\n\t\t\t</Button>\n\t\t),\n\t\tonTabChange,\n\t\t...rest\n\t} = props;\n\n\tconst navRefs = useRef<HTMLElement[]>([]);\n\tconst barRef = useRef<HTMLSpanElement>(null);\n\tconst navsRef = useRef<HTMLDivElement>(null);\n\tconst contentsRef = useRef<Map<string, ReactNode>>(new Map());\n\tconst [activeKey, setActiveKey] = useState<string | undefined>(active);\n\tconst [prevActiveKey, setPrevActiveKey] = useState<string | undefined>(\n\t\tundefined,\n\t);\n\tconst [barStyle, setBarStyle] = useState<CSSProperties>({});\n\tconst [cachedTabs, setCachedTabs] = useState<string[]>([]);\n\tconst [overflow, setOverflow] = useState(false);\n\tconst [moreTabs, setMoreTabs] = useState<ITabItem[]>([]);\n\tconst [tabs, setTabs] = useState<ITabItem[]>([]);\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst size = useSize(navsRef);\n\n\tuseEffect(() => {\n\t\tcontentsRef.current.clear();\n\n\t\tif (!items) {\n\t\t\tif (!children) {\n\t\t\t\tsetTabs([]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetTabs(\n\t\t\t\t(Children.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: string;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst {\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tchildren: tabChildren,\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\tkeepDOM,\n\t\t\t\t\t\tclosable,\n\t\t\t\t\t} = nodeProps;\n\t\t\t\t\tconst tabKey = String(key ?? i);\n\t\t\t\t\tcontentsRef.current.set(tabKey, tabChildren ?? content);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkey: tabKey,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tkeepDOM,\n\t\t\t\t\t\tclosable,\n\t\t\t\t\t};\n\t\t\t\t}) as ITabItem[]) ?? [],\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetTabs(\n\t\t\titems.map((item, i) => {\n\t\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\n\t\t\t\t\tconst key = String(item);\n\t\t\t\t\treturn { key, title: item };\n\t\t\t\t}\n\t\t\t\tconst key = String(item.key ?? i);\n\t\t\t\tcontentsRef.current.set(key, item.content);\n\t\t\t\tconst { content, ...rest } = item;\n\t\t\t\treturn {\n\t\t\t\t\t...rest,\n\t\t\t\t\tkey,\n\t\t\t\t};\n\t\t\t}),\n\t\t);\n\t}, [children, items]);\n\n\tconst add = (tab: ITabItem) => {\n\t\tconst tkey = String(tab.key ?? tabs.length);\n\t\tconst i = tabs.findIndex((t) => t.key === tkey);\n\n\t\tif (i > -1) {\n\t\t\topen(tabs[i].key ?? `${i}`);\n\t\t\treturn;\n\t\t}\n\n\t\tcontentsRef.current.set(tkey, tab.content);\n\t\tconst { content, ...rest } = tab;\n\t\tsetTabs((ts) => [...ts, { ...rest, key: tkey }]);\n\t\topen(tkey);\n\t};\n\n\tconst close = (key: string) => {\n\t\tconst i = tabs.findIndex((t) => t.key === key);\n\n\t\tif (i < 0) return;\n\n\t\tcontentsRef.current.delete(key);\n\t\tconst nextTabs = [...tabs];\n\t\tnextTabs.splice(i, 1);\n\t\tsetTabs(nextTabs);\n\n\t\tif (activeKey !== key) return;\n\n\t\tconst next = nextTabs[i] || nextTabs[i - 1];\n\t\topen(prevActiveKey ?? next?.key ?? \"\");\n\t};\n\n\tconst open = (key: string) => {\n\t\tif (key === activeKey) {\n\t\t\tif (!toggable) return;\n\n\t\t\tonTabChange?.(undefined, key);\n\t\t\tsetActiveKey(undefined);\n\n\t\t\tsetBarStyle({\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tsetPrevActiveKey(activeKey);\n\t\tonTabChange?.(key, activeKey);\n\t\tsetActiveKey(key);\n\t};\n\n\tuseEffect(() => {\n\t\tif (!size || hideMore || !observe) return;\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n\t\tconst { width, height } = size;\n\n\t\tconst nextOverflow = scrollHeight > height || scrollWidth > width;\n\t\tsetOverflow(nextOverflow);\n\n\t\tif (!nextOverflow) return;\n\n\t\tnavRefs.current.map((nav, i) => {\n\t\t\tif (!nav) return;\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\n\t\t\t\tsetTabs((ts) => {\n\t\t\t\t\tif (!ts[i]) return ts;\n\t\t\t\t\tconst nextTabs = ts.map((t, idx) =>\n\t\t\t\t\t\tidx === i ? { ...t, intersecting: visible } : t,\n\t\t\t\t\t);\n\t\t\t\t\tsetMoreTabs(nextTabs.filter((tab) => !tab.intersecting));\n\t\t\t\t\treturn nextTabs;\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}, [size, hideMore, tabs.length, observe]);\n\n\tuseEffect(() => {\n\t\tif (!bar || type === \"pane\" || activeKey === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = tabs.findIndex((tab) => tab.key === activeKey);\n\n\t\tsetTimeout(() => {\n\t\t\tconst nav = navRefs.current[index];\n\n\t\t\tif (!nav) return;\n\n\t\t\tif (tabs[index]?.keepDOM && activeKey) {\n\t\t\t\tsetCachedTabs((keys) => {\n\t\t\t\t\tif (keys.includes(activeKey)) return keys;\n\t\t\t\t\treturn [activeKey, ...keys];\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n\t\t\tconst isLine = type === \"line\";\n\n\t\t\tsetBarStyle({\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n\t\t\t});\n\t\t}, 16);\n\t}, [activeKey, bar, size, tabs, type, vertical]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || activeKey === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore || !unobserve) return;\n\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [tabs.length, hideMore, unobserve]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\n\t\tconst handleMouseWheel = (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\tif (vertical) return;\n\n\t\t\tnavsRef.current?.scrollBy({\n\t\t\t\tleft: e.deltaY + e.deltaX,\n\t\t\t});\n\t\t};\n\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = `${i}`, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": activeKey === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && overflow && moreTabs.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{moreTabs.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = `${i}`, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = activeKey === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(moreTabs)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{tabs.map((tab, i) => {\n\t\t\t\t\tconst key = tab.key ?? `${i}`;\n\t\t\t\t\tconst content = contentsRef.current.get(key);\n\t\t\t\t\tconst isActive = activeKey === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.js","names":[],"sources":["../../../../packages/components/tag/tag.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { ITag } from \"./type\";\n\nconst Tag = (props: ITag) => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\n\t\thoverShowClose,\n\t\tclassName,\n\t\tchildren,\n\t\tonClose,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<span\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tag\",\n\t\t\t\t{\n\t\t\t\t\t\"i-tag-outline\": outline,\n\t\t\t\t\t\"i-tag-clickable\": onClick,\n\t\t\t\t\t[`i-tag-${size}`]: size !== \"normal\",\n\t\t\t\t\tround,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={onClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{dot && <span className={classNames(\"i-tag-dot\", dotClass)}></span>}\n\n\t\t\t{children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName={classNames(\"i-tag-close\", {\n\t\t\t\t\t\t\"i-tag-hover-close\": hoverShowClose,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={onClose}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\nexport default Tag;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"tag.js","names":[],"sources":["../../../../packages/components/tag/tag.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { ITag } from \"./type\";\n\nconst Tag = (props: ITag) => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\n\t\thoverShowClose,\n\t\tclassName,\n\t\tchildren,\n\t\tonClose,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<span\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tag\",\n\t\t\t\t{\n\t\t\t\t\t\"i-tag-outline\": outline,\n\t\t\t\t\t\"i-tag-clickable\": onClick,\n\t\t\t\t\t[`i-tag-${size}`]: size !== \"normal\",\n\t\t\t\t\tround,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={onClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{dot && <span className={classNames(\"i-tag-dot\", dotClass)}></span>}\n\n\t\t\t{children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName={classNames(\"i-tag-close\", {\n\t\t\t\t\t\t\"i-tag-hover-close\": hoverShowClose,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={onClose}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\nexport default Tag;\n"],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Text from "./text.js";
|
|
2
2
|
import { Fragment, useMemo } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
import { findAll } from "highlight-words-core";
|
|
4
|
+
import { findAll } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/highlight-words-core@1.2.3/node_modules/highlight-words-core/dist/index.js";
|
|
5
5
|
//#region packages/components/text/highlight.tsx
|
|
6
6
|
function HighLight(props) {
|
|
7
7
|
const { keyword, text, escape, caseSensitive, renderWord = (word) => /* @__PURE__ */ jsx("mark", { children: word }), ...restProps } = props;
|