@ioca/react 1.4.78 → 1.4.79
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.cjs +23 -0
- package/lib/cjs/components/affix/affix.cjs +66 -0
- package/lib/cjs/components/affix/affix.cjs.map +1 -0
- package/lib/cjs/components/affix/index.cjs +6 -0
- package/lib/cjs/components/affix/index.cjs.map +1 -0
- package/lib/cjs/components/affix/totop.cjs +25 -0
- package/lib/cjs/components/affix/totop.cjs.map +1 -0
- package/lib/cjs/components/badge/badge.cjs +24 -0
- package/lib/cjs/components/badge/badge.cjs.map +1 -0
- package/lib/cjs/components/badge/index.cjs +6 -0
- package/lib/cjs/components/badge/index.cjs.map +1 -0
- package/lib/cjs/components/button/button.cjs +64 -0
- package/lib/cjs/components/button/button.cjs.map +1 -0
- package/lib/cjs/components/button/confirm.cjs +60 -0
- package/lib/cjs/components/button/confirm.cjs.map +1 -0
- package/lib/cjs/components/button/group.cjs +26 -0
- package/lib/cjs/components/button/group.cjs.map +1 -0
- package/lib/cjs/components/button/index.cjs +6 -0
- package/lib/cjs/components/button/index.cjs.map +1 -0
- package/lib/cjs/components/button/toggle.cjs +46 -0
- package/lib/cjs/components/button/toggle.cjs.map +1 -0
- package/lib/cjs/components/card/card.cjs +33 -0
- package/lib/cjs/components/card/card.cjs.map +1 -0
- package/lib/cjs/components/card/index.cjs +6 -0
- package/lib/cjs/components/card/index.cjs.map +1 -0
- package/lib/cjs/components/checkbox/checkbox.cjs +66 -0
- package/lib/cjs/components/checkbox/checkbox.cjs.map +1 -0
- package/lib/cjs/components/checkbox/index.cjs +6 -0
- package/lib/cjs/components/checkbox/index.cjs.map +1 -0
- package/lib/cjs/components/checkbox/item.cjs +59 -0
- package/lib/cjs/components/checkbox/item.cjs.map +1 -0
- package/lib/cjs/components/collapse/collapse.cjs +84 -0
- package/lib/cjs/components/collapse/collapse.cjs.map +1 -0
- package/lib/cjs/components/collapse/index.cjs +6 -0
- package/lib/cjs/components/collapse/index.cjs.map +1 -0
- package/lib/cjs/components/collapse/item.cjs +10 -0
- package/lib/cjs/components/collapse/item.cjs.map +1 -0
- package/lib/cjs/components/datagrid/cell.cjs +39 -0
- package/lib/cjs/components/datagrid/cell.cjs.map +1 -0
- package/lib/cjs/components/datagrid/datagrid.cjs +140 -0
- package/lib/cjs/components/datagrid/datagrid.cjs.map +1 -0
- package/lib/cjs/components/datagrid/index.cjs +6 -0
- package/lib/cjs/components/datagrid/index.cjs.map +1 -0
- package/lib/cjs/components/datagrid/resize.cjs +42 -0
- package/lib/cjs/components/datagrid/resize.cjs.map +1 -0
- package/lib/cjs/components/datagrid/row.cjs +68 -0
- package/lib/cjs/components/datagrid/row.cjs.map +1 -0
- package/lib/cjs/components/datagrid/sorter.cjs +28 -0
- package/lib/cjs/components/datagrid/sorter.cjs.map +1 -0
- package/lib/cjs/components/description/description.cjs +43 -0
- package/lib/cjs/components/description/description.cjs.map +1 -0
- package/lib/cjs/components/description/index.cjs +6 -0
- package/lib/cjs/components/description/index.cjs.map +1 -0
- package/lib/cjs/components/drawer/drawer.cjs +84 -0
- package/lib/cjs/components/drawer/drawer.cjs.map +1 -0
- package/lib/cjs/components/drawer/index.cjs +6 -0
- package/lib/cjs/components/drawer/index.cjs.map +1 -0
- package/lib/cjs/components/dropdown/dropdown.cjs +38 -0
- package/lib/cjs/components/dropdown/dropdown.cjs.map +1 -0
- package/lib/cjs/components/dropdown/index.cjs +6 -0
- package/lib/cjs/components/dropdown/index.cjs.map +1 -0
- package/lib/cjs/components/dropdown/item.cjs +36 -0
- package/lib/cjs/components/dropdown/item.cjs.map +1 -0
- package/lib/cjs/components/editor/controls.cjs +89 -0
- package/lib/cjs/components/editor/controls.cjs.map +1 -0
- package/lib/cjs/components/editor/editor.cjs +91 -0
- package/lib/cjs/components/editor/editor.cjs.map +1 -0
- package/lib/cjs/components/editor/index.cjs +6 -0
- package/lib/cjs/components/editor/index.cjs.map +1 -0
- package/lib/cjs/components/flex/flex.cjs +31 -0
- package/lib/cjs/components/flex/flex.cjs.map +1 -0
- package/lib/cjs/components/flex/index.cjs +6 -0
- package/lib/cjs/components/flex/index.cjs.map +1 -0
- package/lib/cjs/components/form/context.cjs +7 -0
- package/lib/cjs/components/form/context.cjs.map +1 -0
- package/lib/cjs/components/form/field.cjs +71 -0
- package/lib/cjs/components/form/field.cjs.map +1 -0
- package/lib/cjs/components/form/form.cjs +64 -0
- package/lib/cjs/components/form/form.cjs.map +1 -0
- package/lib/cjs/components/form/index.cjs +6 -0
- package/lib/cjs/components/form/index.cjs.map +1 -0
- package/lib/cjs/components/form/useConfig.cjs +45 -0
- package/lib/cjs/components/form/useConfig.cjs.map +1 -0
- package/lib/cjs/components/form/useForm.cjs +123 -0
- package/lib/cjs/components/form/useForm.cjs.map +1 -0
- package/lib/cjs/components/icon/icon.cjs +24 -0
- package/lib/cjs/components/icon/icon.cjs.map +1 -0
- package/lib/cjs/components/icon/index.cjs +6 -0
- package/lib/cjs/components/icon/index.cjs.map +1 -0
- package/lib/cjs/components/image/image.cjs +86 -0
- package/lib/cjs/components/image/image.cjs.map +1 -0
- package/lib/cjs/components/image/index.cjs +6 -0
- package/lib/cjs/components/image/index.cjs.map +1 -0
- package/lib/cjs/components/image/list.cjs +49 -0
- package/lib/cjs/components/image/list.cjs.map +1 -0
- package/lib/cjs/components/input/container.cjs +30 -0
- package/lib/cjs/components/input/container.cjs.map +1 -0
- package/lib/cjs/components/input/index.cjs +6 -0
- package/lib/cjs/components/input/index.cjs.map +1 -0
- package/lib/cjs/components/input/input.cjs +113 -0
- package/lib/cjs/components/input/input.cjs.map +1 -0
- package/lib/cjs/components/input/number.cjs +138 -0
- package/lib/cjs/components/input/number.cjs.map +1 -0
- package/lib/cjs/components/input/range.cjs +134 -0
- package/lib/cjs/components/input/range.cjs.map +1 -0
- package/lib/cjs/components/input/textarea.cjs +61 -0
- package/lib/cjs/components/input/textarea.cjs.map +1 -0
- package/lib/cjs/components/list/index.cjs +6 -0
- package/lib/cjs/components/list/index.cjs.map +1 -0
- package/lib/cjs/components/list/item.cjs +30 -0
- package/lib/cjs/components/list/item.cjs.map +1 -0
- package/lib/cjs/components/list/list.cjs +30 -0
- package/lib/cjs/components/list/list.cjs.map +1 -0
- package/lib/cjs/components/loading/index.cjs +6 -0
- package/lib/cjs/components/loading/index.cjs.map +1 -0
- package/lib/cjs/components/loading/loading.cjs +39 -0
- package/lib/cjs/components/loading/loading.cjs.map +1 -0
- package/lib/cjs/components/message/index.cjs +6 -0
- package/lib/cjs/components/message/index.cjs.map +1 -0
- package/lib/cjs/components/message/message.cjs +197 -0
- package/lib/cjs/components/message/message.cjs.map +1 -0
- package/lib/cjs/components/modal/content.cjs +57 -0
- package/lib/cjs/components/modal/content.cjs.map +1 -0
- package/lib/cjs/components/modal/context.cjs +7 -0
- package/lib/cjs/components/modal/context.cjs.map +1 -0
- package/lib/cjs/components/modal/hookModal.cjs +28 -0
- package/lib/cjs/components/modal/hookModal.cjs.map +1 -0
- package/lib/cjs/components/modal/index.cjs +6 -0
- package/lib/cjs/components/modal/index.cjs.map +1 -0
- package/lib/cjs/components/modal/modal.cjs +117 -0
- package/lib/cjs/components/modal/modal.cjs.map +1 -0
- package/lib/cjs/components/modal/useModal.cjs +39 -0
- package/lib/cjs/components/modal/useModal.cjs.map +1 -0
- package/lib/cjs/components/pagination/index.cjs +6 -0
- package/lib/cjs/components/pagination/index.cjs.map +1 -0
- package/lib/cjs/components/pagination/page.cjs +31 -0
- package/lib/cjs/components/pagination/page.cjs.map +1 -0
- package/lib/cjs/components/pagination/pagination.cjs +86 -0
- package/lib/cjs/components/pagination/pagination.cjs.map +1 -0
- package/lib/cjs/components/picker/colors/footer.cjs +64 -0
- package/lib/cjs/components/picker/colors/footer.cjs.map +1 -0
- package/lib/cjs/components/picker/colors/handle.cjs +25 -0
- package/lib/cjs/components/picker/colors/handle.cjs.map +1 -0
- package/lib/cjs/components/picker/colors/index.cjs +81 -0
- package/lib/cjs/components/picker/colors/index.cjs.map +1 -0
- package/lib/cjs/components/picker/dates/dates.cjs +68 -0
- package/lib/cjs/components/picker/dates/dates.cjs.map +1 -0
- package/lib/cjs/components/picker/dates/index.cjs +97 -0
- package/lib/cjs/components/picker/dates/index.cjs.map +1 -0
- package/lib/cjs/components/picker/dates/panel.cjs +151 -0
- package/lib/cjs/components/picker/dates/panel.cjs.map +1 -0
- package/lib/cjs/components/picker/time/index.cjs +73 -0
- package/lib/cjs/components/picker/time/index.cjs.map +1 -0
- package/lib/cjs/components/picker/time/item.cjs +20 -0
- package/lib/cjs/components/picker/time/item.cjs.map +1 -0
- package/lib/cjs/components/picker/time/panel.cjs +144 -0
- package/lib/cjs/components/picker/time/panel.cjs.map +1 -0
- package/lib/cjs/components/popconfirm/index.cjs +6 -0
- package/lib/cjs/components/popconfirm/index.cjs.map +1 -0
- package/lib/cjs/components/popconfirm/popconfirm.cjs +86 -0
- package/lib/cjs/components/popconfirm/popconfirm.cjs.map +1 -0
- package/lib/cjs/components/popup/content.cjs +56 -0
- package/lib/cjs/components/popup/content.cjs.map +1 -0
- package/lib/cjs/components/popup/index.cjs +6 -0
- package/lib/cjs/components/popup/index.cjs.map +1 -0
- package/lib/cjs/components/popup/popup.cjs +425 -0
- package/lib/cjs/components/popup/popup.cjs.map +1 -0
- package/lib/cjs/components/progress/circle.cjs +45 -0
- package/lib/cjs/components/progress/circle.cjs.map +1 -0
- package/lib/cjs/components/progress/index.cjs +6 -0
- package/lib/cjs/components/progress/index.cjs.map +1 -0
- package/lib/cjs/components/progress/line.cjs +27 -0
- package/lib/cjs/components/progress/line.cjs.map +1 -0
- package/lib/cjs/components/progress/progress.cjs +100 -0
- package/lib/cjs/components/progress/progress.cjs.map +1 -0
- package/lib/cjs/components/radio/index.cjs +6 -0
- package/lib/cjs/components/radio/index.cjs.map +1 -0
- package/lib/cjs/components/radio/item.cjs +34 -0
- package/lib/cjs/components/radio/item.cjs.map +1 -0
- package/lib/cjs/components/radio/radio.cjs +62 -0
- package/lib/cjs/components/radio/radio.cjs.map +1 -0
- package/lib/cjs/components/resizable/index.cjs +6 -0
- package/lib/cjs/components/resizable/index.cjs.map +1 -0
- package/lib/cjs/components/resizable/resizable.cjs +81 -0
- package/lib/cjs/components/resizable/resizable.cjs.map +1 -0
- package/lib/cjs/components/river/index.cjs +6 -0
- package/lib/cjs/components/river/index.cjs.map +1 -0
- package/lib/cjs/components/river/river.cjs +116 -0
- package/lib/cjs/components/river/river.cjs.map +1 -0
- package/lib/cjs/components/select/index.cjs +6 -0
- package/lib/cjs/components/select/index.cjs.map +1 -0
- package/lib/cjs/components/select/options.cjs +76 -0
- package/lib/cjs/components/select/options.cjs.map +1 -0
- package/lib/cjs/components/select/select.cjs +155 -0
- package/lib/cjs/components/select/select.cjs.map +1 -0
- package/lib/cjs/components/step/divider.cjs +10 -0
- package/lib/cjs/components/step/divider.cjs.map +1 -0
- package/lib/cjs/components/step/index.cjs +6 -0
- package/lib/cjs/components/step/index.cjs.map +1 -0
- package/lib/cjs/components/step/item.cjs +60 -0
- package/lib/cjs/components/step/item.cjs.map +1 -0
- package/lib/cjs/components/step/step.cjs +42 -0
- package/lib/cjs/components/step/step.cjs.map +1 -0
- package/lib/cjs/components/swiper/index.cjs +6 -0
- package/lib/cjs/components/swiper/index.cjs.map +1 -0
- package/lib/cjs/components/swiper/item.cjs +39 -0
- package/lib/cjs/components/swiper/item.cjs.map +1 -0
- package/lib/cjs/components/swiper/swiper.cjs +262 -0
- package/lib/cjs/components/swiper/swiper.cjs.map +1 -0
- package/lib/cjs/components/tabs/index.cjs +6 -0
- package/lib/cjs/components/tabs/index.cjs.map +1 -0
- package/lib/cjs/components/tabs/item.cjs +10 -0
- package/lib/cjs/components/tabs/item.cjs.map +1 -0
- package/lib/cjs/components/tabs/tabs.cjs +272 -0
- package/lib/cjs/components/tabs/tabs.cjs.map +1 -0
- package/lib/cjs/components/tag/index.cjs +6 -0
- package/lib/cjs/components/tag/index.cjs.map +1 -0
- package/lib/cjs/components/tag/tag.cjs +32 -0
- package/lib/cjs/components/tag/tag.cjs.map +1 -0
- package/lib/cjs/components/text/highlight.cjs +35 -0
- package/lib/cjs/components/text/highlight.cjs.map +1 -0
- package/lib/cjs/components/text/index.cjs +6 -0
- package/lib/cjs/components/text/index.cjs.map +1 -0
- package/lib/cjs/components/text/number.cjs +32 -0
- package/lib/cjs/components/text/number.cjs.map +1 -0
- package/lib/cjs/components/text/text.cjs +39 -0
- package/lib/cjs/components/text/text.cjs.map +1 -0
- package/lib/cjs/components/text/time.cjs +24 -0
- package/lib/cjs/components/text/time.cjs.map +1 -0
- package/lib/cjs/components/tree/index.cjs +6 -0
- package/lib/cjs/components/tree/index.cjs.map +1 -0
- package/lib/cjs/components/tree/item.cjs +136 -0
- package/lib/cjs/components/tree/item.cjs.map +1 -0
- package/lib/cjs/components/tree/tree.cjs +127 -0
- package/lib/cjs/components/tree/tree.cjs.map +1 -0
- package/lib/cjs/components/upload/index.cjs +6 -0
- package/lib/cjs/components/upload/index.cjs.map +1 -0
- package/lib/cjs/components/upload/renderFile.cjs +99 -0
- package/lib/cjs/components/upload/renderFile.cjs.map +1 -0
- package/lib/cjs/components/upload/upload.cjs +165 -0
- package/lib/cjs/components/upload/upload.cjs.map +1 -0
- package/lib/cjs/components/utils/empty/index.cjs +17 -0
- package/lib/cjs/components/utils/empty/index.cjs.map +1 -0
- package/lib/cjs/components/utils/helpericon/helpericon.cjs +24 -0
- package/lib/cjs/components/utils/helpericon/helpericon.cjs.map +1 -0
- package/lib/cjs/components/utils/helpericon/index.cjs +6 -0
- package/lib/cjs/components/utils/helpericon/index.cjs.map +1 -0
- package/lib/cjs/components/video/index.cjs +6 -0
- package/lib/cjs/components/video/index.cjs.map +1 -0
- package/lib/cjs/components/video/video.cjs +237 -0
- package/lib/cjs/components/video/video.cjs.map +1 -0
- package/lib/cjs/index.cjs +83 -0
- package/lib/cjs/js/hooks.cjs +259 -0
- package/lib/cjs/js/hooks.cjs.map +1 -0
- package/lib/cjs/js/usePreview/content.cjs +197 -0
- package/lib/cjs/js/usePreview/content.cjs.map +1 -0
- package/lib/cjs/js/usePreview/index.cjs +39 -0
- package/lib/cjs/js/usePreview/index.cjs.map +1 -0
- package/lib/cjs/js/usePreview/renderFile.cjs +28 -0
- package/lib/cjs/js/usePreview/renderFile.cjs.map +1 -0
- package/lib/cjs/js/usePreview/type.cjs +15 -0
- package/lib/cjs/js/usePreview/type.cjs.map +1 -0
- package/lib/cjs/js/useRipple/index.cjs +45 -0
- package/lib/cjs/js/useRipple/index.cjs.map +1 -0
- package/lib/cjs/js/useTheme/index.cjs +30 -0
- package/lib/cjs/js/useTheme/index.cjs.map +1 -0
- package/lib/cjs/js/utils.cjs +284 -0
- package/lib/cjs/js/utils.cjs.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 +6 -3
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
require("react");
|
|
3
|
+
let _Users_iann_codes_ioca_react_node_modules__pnpm_react_dom_19_2_4_react_19_2_4_node_modules_react_dom_client_js = require("/Users/iann/codes/ioca-react/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.js");
|
|
4
|
+
//#region packages/js/utils.ts
|
|
5
|
+
function getPosition($source, $popup, options = {}) {
|
|
6
|
+
const { refWindow, gap = 0, offset = 0, position = "top", align } = options;
|
|
7
|
+
if (!$source || !$popup) return [
|
|
8
|
+
0,
|
|
9
|
+
0,
|
|
10
|
+
{
|
|
11
|
+
arrowX: 0,
|
|
12
|
+
arrowY: 0,
|
|
13
|
+
arrowPos: "bottom"
|
|
14
|
+
}
|
|
15
|
+
];
|
|
16
|
+
const rectT = $source.getBoundingClientRect();
|
|
17
|
+
const rectC = $popup.getBoundingClientRect();
|
|
18
|
+
let w = window.innerWidth;
|
|
19
|
+
let h = window.innerHeight;
|
|
20
|
+
let { left: tl, top: tt, right: tr, bottom: tb, width: tw, height: th } = rectT;
|
|
21
|
+
const { height: ch, width: cw } = rectC;
|
|
22
|
+
if (!refWindow) {
|
|
23
|
+
const rectPa = $source.offsetParent?.getBoundingClientRect();
|
|
24
|
+
w = rectPa?.width || w;
|
|
25
|
+
h = rectPa?.height || h;
|
|
26
|
+
tl = $source.offsetLeft;
|
|
27
|
+
tt = $source.offsetTop;
|
|
28
|
+
tr = tl + rectT.width;
|
|
29
|
+
tb = tt + rectT.height;
|
|
30
|
+
}
|
|
31
|
+
let y = 0;
|
|
32
|
+
let x = 0;
|
|
33
|
+
let arrowX = 0;
|
|
34
|
+
let arrowY = 0;
|
|
35
|
+
let arrowPos = "bottom";
|
|
36
|
+
switch (position) {
|
|
37
|
+
case "left":
|
|
38
|
+
case "right":
|
|
39
|
+
y = th !== ch ? computePosition({
|
|
40
|
+
containerSize: h,
|
|
41
|
+
targetSize: th,
|
|
42
|
+
targetOffset: tt,
|
|
43
|
+
contentSize: ch,
|
|
44
|
+
gap,
|
|
45
|
+
align
|
|
46
|
+
}) : tt;
|
|
47
|
+
arrowY = y < tt ? tt - y + th / 2 : th / 2;
|
|
48
|
+
const xl = tl - offset - cw;
|
|
49
|
+
const xr = tr + offset + cw;
|
|
50
|
+
if (position === "left") {
|
|
51
|
+
const R = xl < 0 && xr <= w;
|
|
52
|
+
x = R ? tr + offset : xl;
|
|
53
|
+
arrowX = R ? 0 : cw;
|
|
54
|
+
arrowPos = R ? "left" : "right";
|
|
55
|
+
} else {
|
|
56
|
+
const R = w > xr || xl < 0;
|
|
57
|
+
x = R ? tr + offset : xl;
|
|
58
|
+
arrowX = R ? 0 : cw;
|
|
59
|
+
arrowPos = R ? "left" : "right";
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
case "top":
|
|
63
|
+
case "bottom":
|
|
64
|
+
x = tw !== cw ? computePosition({
|
|
65
|
+
containerSize: w,
|
|
66
|
+
targetOffset: tl,
|
|
67
|
+
targetSize: tw,
|
|
68
|
+
contentSize: cw,
|
|
69
|
+
gap,
|
|
70
|
+
align
|
|
71
|
+
}) : tl;
|
|
72
|
+
arrowX = x > tl ? cw / 2 : tl - x + tw / 2;
|
|
73
|
+
const yt = tt - offset - ch;
|
|
74
|
+
const yb = tb + offset + ch;
|
|
75
|
+
if (position === "top") {
|
|
76
|
+
const T = yt < 0 && yb <= h;
|
|
77
|
+
y = T ? tb + offset : yt;
|
|
78
|
+
arrowY = T ? 0 : ch;
|
|
79
|
+
arrowPos = T ? "top" : "bottom";
|
|
80
|
+
} else {
|
|
81
|
+
const B = h > yb || yt < 0;
|
|
82
|
+
y = B ? tb + offset : yt;
|
|
83
|
+
arrowY = B ? 0 : ch;
|
|
84
|
+
arrowPos = B ? "top" : "bottom";
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
default: break;
|
|
88
|
+
}
|
|
89
|
+
return [
|
|
90
|
+
x,
|
|
91
|
+
y,
|
|
92
|
+
{
|
|
93
|
+
arrowX,
|
|
94
|
+
arrowY,
|
|
95
|
+
arrowPos
|
|
96
|
+
}
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
function getPointPosition(e, content) {
|
|
100
|
+
const { width: w, height: h } = content.getBoundingClientRect();
|
|
101
|
+
const parent = content.offsetParent;
|
|
102
|
+
let pw, ph, pl = 0, pt = 0;
|
|
103
|
+
if (parent) {
|
|
104
|
+
const { width: ow, height: oh, left: ol, top: ot } = parent.getBoundingClientRect();
|
|
105
|
+
const st = parent.scrollTop ?? 0;
|
|
106
|
+
pw = ow;
|
|
107
|
+
ph = oh;
|
|
108
|
+
pt = ot - st;
|
|
109
|
+
pl = ol;
|
|
110
|
+
} else {
|
|
111
|
+
pw = window.innerWidth;
|
|
112
|
+
ph = window.innerHeight;
|
|
113
|
+
}
|
|
114
|
+
const x = e.pageX - pl;
|
|
115
|
+
const y = e.pageY - pt;
|
|
116
|
+
return [x + w >= pw ? x - w > 0 ? x - w : x : x, y + h >= ph ? y - h > 0 ? y - h : y : y];
|
|
117
|
+
}
|
|
118
|
+
function computePosition({ containerSize, targetSize, targetOffset, contentSize, gap, align = "center" }) {
|
|
119
|
+
const centerPoint = targetOffset + targetSize / 2;
|
|
120
|
+
switch (align) {
|
|
121
|
+
case "start": return targetOffset + contentSize > containerSize ? containerSize - contentSize - gap : targetOffset;
|
|
122
|
+
case "center":
|
|
123
|
+
if (targetSize >= contentSize) return centerPoint - contentSize / 2;
|
|
124
|
+
if (centerPoint + contentSize / 2 + gap > containerSize) return targetOffset + targetSize - contentSize;
|
|
125
|
+
if (centerPoint - contentSize / 2 - gap < 0) return gap;
|
|
126
|
+
return centerPoint - contentSize / 2;
|
|
127
|
+
case "end":
|
|
128
|
+
const result = targetOffset + targetSize - contentSize;
|
|
129
|
+
return result > 0 ? result : gap;
|
|
130
|
+
default: return centerPoint - contentSize / 2;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function formatOption(options) {
|
|
134
|
+
return options.map((option) => ["string", "number"].includes(typeof option) ? {
|
|
135
|
+
label: option,
|
|
136
|
+
value: option
|
|
137
|
+
} : option);
|
|
138
|
+
}
|
|
139
|
+
function animate(from, to, duration = 1e3, callback, easing = (t) => 1 - Math.pow(1 - t, 4)) {
|
|
140
|
+
const start = performance.now();
|
|
141
|
+
const diff = to - from;
|
|
142
|
+
let raf = requestAnimationFrame(loop);
|
|
143
|
+
function loop() {
|
|
144
|
+
raf = requestAnimationFrame(loop);
|
|
145
|
+
let percent = (performance.now() - start) / duration;
|
|
146
|
+
if (percent >= 1) {
|
|
147
|
+
percent = 1;
|
|
148
|
+
cancelAnimationFrame(raf);
|
|
149
|
+
}
|
|
150
|
+
const pass = diff * easing(percent);
|
|
151
|
+
callback?.(pass);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function formatNumber(value, options = {}) {
|
|
155
|
+
const { precision, thousand } = options;
|
|
156
|
+
const result = value.toFixed(precision);
|
|
157
|
+
if (!thousand) return result;
|
|
158
|
+
const points = result.split(".");
|
|
159
|
+
const integer = points[0].replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, `$&${thousand}`);
|
|
160
|
+
if (points.length === 1) return integer;
|
|
161
|
+
return `${integer}.${points[1]}`;
|
|
162
|
+
}
|
|
163
|
+
function renderNode(node, container = document.body) {
|
|
164
|
+
const div = document.createElement("div");
|
|
165
|
+
container.append(div);
|
|
166
|
+
const root = (0, _Users_iann_codes_ioca_react_node_modules__pnpm_react_dom_19_2_4_react_19_2_4_node_modules_react_dom_client_js.createRoot)(div);
|
|
167
|
+
const sto = setTimeout(() => {
|
|
168
|
+
root?.render(node);
|
|
169
|
+
}, 0);
|
|
170
|
+
return () => {
|
|
171
|
+
div?.remove();
|
|
172
|
+
root?.unmount();
|
|
173
|
+
sto && clearTimeout(sto);
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function getSuffixByUrl(url) {
|
|
177
|
+
return url.match(/\.([^\./\?]+)($|\?)/)?.[1];
|
|
178
|
+
}
|
|
179
|
+
function getFileType(suffix, type) {
|
|
180
|
+
switch (true) {
|
|
181
|
+
case [
|
|
182
|
+
"jpg",
|
|
183
|
+
"jpeg",
|
|
184
|
+
"png",
|
|
185
|
+
"webp",
|
|
186
|
+
"svg",
|
|
187
|
+
"avif",
|
|
188
|
+
"heif",
|
|
189
|
+
"heic",
|
|
190
|
+
"apng",
|
|
191
|
+
"bmp",
|
|
192
|
+
"ico"
|
|
193
|
+
].includes(suffix) || type?.startsWith("image/"): return "IMAGE";
|
|
194
|
+
case [
|
|
195
|
+
"mp4",
|
|
196
|
+
"avi",
|
|
197
|
+
"webm",
|
|
198
|
+
"ogv",
|
|
199
|
+
"mov",
|
|
200
|
+
"mkv",
|
|
201
|
+
"mpd",
|
|
202
|
+
"m3u8"
|
|
203
|
+
].includes(suffix) || type?.startsWith("video/"): return "VIDEO";
|
|
204
|
+
default: return "UNKNOWN";
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function fullScreen(el) {
|
|
208
|
+
el.requestFullscreen?.();
|
|
209
|
+
}
|
|
210
|
+
function exitFullScreen() {
|
|
211
|
+
document.exitFullscreen?.();
|
|
212
|
+
}
|
|
213
|
+
function formatTime(time, options) {
|
|
214
|
+
const result = [];
|
|
215
|
+
const { zero = true, units = [
|
|
216
|
+
"",
|
|
217
|
+
":",
|
|
218
|
+
":"
|
|
219
|
+
] } = options || {};
|
|
220
|
+
const l = units.length;
|
|
221
|
+
let i = 0;
|
|
222
|
+
while (i < l) {
|
|
223
|
+
if (time <= 0 && i > 1) break;
|
|
224
|
+
const n = Math.round(time % 60);
|
|
225
|
+
time = Math.floor(time / 60);
|
|
226
|
+
result.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);
|
|
227
|
+
}
|
|
228
|
+
return result.join("");
|
|
229
|
+
}
|
|
230
|
+
function getNextSorter(prevSortBy, prevSortType, sortBy) {
|
|
231
|
+
const types = ["desc", "asc"];
|
|
232
|
+
if (prevSortBy === sortBy) {
|
|
233
|
+
const type = types[types.findIndex((t) => t === prevSortType) + 1] || "";
|
|
234
|
+
return [type === "" ? "" : sortBy, type];
|
|
235
|
+
}
|
|
236
|
+
return [sortBy, "desc"];
|
|
237
|
+
}
|
|
238
|
+
function formatBytes(bytes, decimals = 2) {
|
|
239
|
+
if (!+bytes) return "0 Bytes";
|
|
240
|
+
const k = 1024;
|
|
241
|
+
const dm = decimals < 0 ? 0 : decimals;
|
|
242
|
+
const sizes = [
|
|
243
|
+
"B",
|
|
244
|
+
"KB",
|
|
245
|
+
"MB",
|
|
246
|
+
"GB",
|
|
247
|
+
"TB",
|
|
248
|
+
"PB",
|
|
249
|
+
"EB",
|
|
250
|
+
"ZB",
|
|
251
|
+
"YB"
|
|
252
|
+
];
|
|
253
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
254
|
+
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
|
|
255
|
+
}
|
|
256
|
+
function clamp(value, min, max) {
|
|
257
|
+
return value < min ? min : value > max ? max : value;
|
|
258
|
+
}
|
|
259
|
+
const arrayMove = (array, fromIndex, toIndex) => {
|
|
260
|
+
if (toIndex >= array.length) {
|
|
261
|
+
let k = toIndex - array.length + 1;
|
|
262
|
+
while (k--) array.push(void 0);
|
|
263
|
+
}
|
|
264
|
+
array.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);
|
|
265
|
+
return array;
|
|
266
|
+
};
|
|
267
|
+
//#endregion
|
|
268
|
+
exports.animate = animate;
|
|
269
|
+
exports.arrayMove = arrayMove;
|
|
270
|
+
exports.clamp = clamp;
|
|
271
|
+
exports.exitFullScreen = exitFullScreen;
|
|
272
|
+
exports.formatBytes = formatBytes;
|
|
273
|
+
exports.formatNumber = formatNumber;
|
|
274
|
+
exports.formatOption = formatOption;
|
|
275
|
+
exports.formatTime = formatTime;
|
|
276
|
+
exports.fullScreen = fullScreen;
|
|
277
|
+
exports.getFileType = getFileType;
|
|
278
|
+
exports.getNextSorter = getNextSorter;
|
|
279
|
+
exports.getPointPosition = getPointPosition;
|
|
280
|
+
exports.getPosition = getPosition;
|
|
281
|
+
exports.getSuffixByUrl = getSuffixByUrl;
|
|
282
|
+
exports.renderNode = renderNode;
|
|
283
|
+
|
|
284
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs","names":[],"sources":["../../../packages/js/utils.ts"],"sourcesContent":["import type { MouseEvent } from \"react\";\nimport { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { Root, createRoot } from \"react-dom/client\";\nimport type { TOption, TOptions, TRelativeOptions } from \"../type\";\n\ntype TComputePosition = {\n\tcontainerSize: number;\n\ttargetSize: number;\n\ttargetOffset: number;\n\tcontentSize: number;\n\tgap: number;\n\talign?: \"start\" | \"center\" | \"end\";\n};\n\nexport function getPosition(\n\t$source?: HTMLElement | null,\n\t$popup?: HTMLElement | null,\n\toptions: TRelativeOptions = {}\n): [\n\tx: number,\n\ty: number,\n\tz: {\n\t\tarrowX: number;\n\t\tarrowY: number;\n\t\tarrowPos: string;\n\t}\n] {\n\tconst { refWindow, gap = 0, offset = 0, position = \"top\", align } = options;\n\n\tif (!$source || !$popup)\n\t\treturn [\n\t\t\t0,\n\t\t\t0,\n\t\t\t{\n\t\t\t\tarrowX: 0,\n\t\t\t\tarrowY: 0,\n\t\t\t\tarrowPos: \"bottom\",\n\t\t\t},\n\t\t];\n\n\tconst rectT = $source.getBoundingClientRect();\n\tconst rectC = $popup.getBoundingClientRect();\n\n\tlet w = window.innerWidth;\n\tlet h = window.innerHeight;\n\tlet {\n\t\tleft: tl,\n\t\ttop: tt,\n\t\tright: tr,\n\t\tbottom: tb,\n\t\twidth: tw,\n\t\theight: th,\n\t} = rectT;\n\tconst { height: ch, width: cw } = rectC;\n\n\tif (!refWindow) {\n\t\tconst rectPa = $source.offsetParent?.getBoundingClientRect();\n\n\t\tw = rectPa?.width || w;\n\t\th = rectPa?.height || h;\n\t\ttl = $source.offsetLeft;\n\t\ttt = $source.offsetTop;\n\t\ttr = tl + rectT.width;\n\t\ttb = tt + rectT.height;\n\t}\n\n\tlet y = 0;\n\tlet x = 0;\n\tlet arrowX = 0;\n\tlet arrowY = 0;\n\tlet arrowPos = \"bottom\";\n\n\tswitch (position) {\n\t\tcase \"left\":\n\t\tcase \"right\":\n\t\t\ty =\n\t\t\t\tth !== ch\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: h,\n\t\t\t\t\t\t\ttargetSize: th,\n\t\t\t\t\t\t\ttargetOffset: tt,\n\t\t\t\t\t\t\tcontentSize: ch,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tt;\n\t\t\tarrowY = y < tt ? tt - y + th / 2 : th / 2;\n\n\t\t\tconst xl = tl - offset - cw;\n\t\t\tconst xr = tr + offset + cw;\n\n\t\t\tif (position === \"left\") {\n\t\t\t\tconst R = xl < 0 && xr <= w;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tconst R = w > xr || xl < 0;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\tcase \"bottom\":\n\t\t\tx =\n\t\t\t\ttw !== cw\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: w,\n\t\t\t\t\t\t\ttargetOffset: tl,\n\t\t\t\t\t\t\ttargetSize: tw,\n\t\t\t\t\t\t\tcontentSize: cw,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tl;\n\t\t\tarrowX = x > tl ? cw / 2 : tl - x + tw / 2;\n\n\t\t\tconst yt = tt - offset - ch;\n\t\t\tconst yb = tb + offset + ch;\n\t\t\tif (position === \"top\") {\n\t\t\t\tconst T = yt < 0 && yb <= h;\n\t\t\t\ty = T ? tb + offset : yt;\n\t\t\t\tarrowY = T ? 0 : ch;\n\t\t\t\tarrowPos = T ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\tconst B = h > yb || yt < 0;\n\t\t\t\ty = B ? tb + offset : yt;\n\t\t\t\tarrowY = B ? 0 : ch;\n\t\t\t\tarrowPos = B ? \"top\" : \"bottom\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn [\n\t\tx,\n\t\ty,\n\t\t{\n\t\t\tarrowX,\n\t\t\tarrowY,\n\t\t\tarrowPos,\n\t\t},\n\t];\n}\n\nexport function getPointPosition(e: MouseEvent, content: HTMLElement) {\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst parent = content.offsetParent;\n\tlet pw,\n\t\tph,\n\t\tpl = 0,\n\t\tpt = 0;\n\n\tif (parent) {\n\t\tconst {\n\t\t\twidth: ow,\n\t\t\theight: oh,\n\t\t\tleft: ol,\n\t\t\ttop: ot,\n\t\t} = parent.getBoundingClientRect();\n\t\tconst st = parent.scrollTop ?? 0;\n\n\t\tpw = ow;\n\t\tph = oh;\n\t\tpt = ot - st;\n\t\tpl = ol;\n\t} else {\n\t\tpw = window.innerWidth;\n\t\tph = window.innerHeight;\n\t}\n\tconst x = e.pageX - pl;\n\tconst y = e.pageY - pt;\n\n\tconst left = x + w >= pw ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= ph ? (y - h > 0 ? y - h : y) : y;\n\n\treturn [left, top];\n}\n\nfunction computePosition({\n\tcontainerSize,\n\ttargetSize,\n\ttargetOffset,\n\tcontentSize,\n\tgap,\n\talign = \"center\",\n}: TComputePosition) {\n\tconst centerPoint = targetOffset + targetSize / 2;\n\n\tswitch (align) {\n\t\tcase \"start\":\n\t\t\treturn targetOffset + contentSize > containerSize\n\t\t\t\t? containerSize - contentSize - gap\n\t\t\t\t: targetOffset;\n\t\tcase \"center\":\n\t\t\tif (targetSize >= contentSize) {\n\t\t\t\treturn centerPoint - contentSize / 2;\n\t\t\t}\n\n\t\t\tif (centerPoint + contentSize / 2 + gap > containerSize) {\n\t\t\t\treturn targetOffset + targetSize - contentSize;\n\t\t\t}\n\n\t\t\tif (centerPoint - contentSize / 2 - gap < 0) {\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\treturn centerPoint - contentSize / 2;\n\t\tcase \"end\":\n\t\t\tconst result = targetOffset + targetSize - contentSize;\n\t\t\treturn result > 0 ? result : gap;\n\t\tdefault:\n\t\t\treturn centerPoint - contentSize / 2;\n\t}\n}\n\nexport function formatOption(options: TOptions): TOption[] {\n\treturn options.map((option) =>\n\t\t[\"string\", \"number\"].includes(typeof option)\n\t\t\t? { label: option, value: option }\n\t\t\t: option\n\t) as TOption[];\n}\n\nexport function animate(\n\tfrom: number,\n\tto: number,\n\tduration: number = 1000,\n\tcallback?: (v: number) => void,\n\teasing: (t: number) => number = (t) => 1 - Math.pow(1 - t, 4)\n) {\n\tconst start = performance.now();\n\tconst diff = to - from;\n\tlet raf = requestAnimationFrame(loop);\n\n\tfunction loop() {\n\t\traf = requestAnimationFrame(loop);\n\n\t\tconst past = performance.now() - start;\n\t\tlet percent = past / duration;\n\n\t\tif (percent >= 1) {\n\t\t\tpercent = 1;\n\t\t\tcancelAnimationFrame(raf);\n\t\t}\n\n\t\tconst pass = diff * easing(percent);\n\t\tcallback?.(pass);\n\t}\n}\n\nexport function formatNumber(\n\tvalue: number,\n\toptions: {\n\t\tprecision?: number;\n\t\tthousand?: string;\n\t} = {}\n) {\n\tconst { precision, thousand } = options;\n\n\tconst result = value.toFixed(precision);\n\n\tif (!thousand) return result;\n\n\tconst points = result.split(\".\");\n\tconst integer = points[0].replace(\n\t\t/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g,\n\t\t`$&${thousand}`\n\t);\n\n\tif (points.length === 1) return integer;\n\n\treturn `${integer}.${points[1]}`;\n}\n\nexport function renderNode(node: ReactNode, container = document.body) {\n\tconst div: HTMLDivElement | null = document.createElement(\"div\");\n\tcontainer.append(div);\n\n\tconst root: Root | null = createRoot(div);\n\tconst sto = setTimeout(() => {\n\t\troot?.render(node);\n\t}, 0);\n\n\treturn () => {\n\t\tdiv?.remove();\n\t\troot?.unmount();\n\t\tsto && clearTimeout(sto);\n\t};\n}\n\nexport function getSuffixByUrl(url: string) {\n\treturn url.match(/\\.([^\\./\\?]+)($|\\?)/)?.[1];\n}\n\nexport function getFileType(suffix: string, type?: string) {\n\tswitch (true) {\n\t\tcase [\n\t\t\t\"jpg\",\n\t\t\t\"jpeg\",\n\t\t\t\"png\",\n\t\t\t\"webp\",\n\t\t\t\"svg\",\n\t\t\t\"avif\",\n\t\t\t\"heif\",\n\t\t\t\"heic\",\n\t\t\t\"apng\",\n\t\t\t\"bmp\",\n\t\t\t\"ico\",\n\t\t].includes(suffix) || type?.startsWith(\"image/\"):\n\t\t\treturn \"IMAGE\";\n\t\tcase [\n\t\t\t\"mp4\",\n\t\t\t\"avi\",\n\t\t\t\"webm\",\n\t\t\t\"ogv\",\n\t\t\t\"mov\",\n\t\t\t\"mkv\",\n\t\t\t\"mpd\",\n\t\t\t\"m3u8\",\n\t\t].includes(suffix) || type?.startsWith(\"video/\"):\n\t\t\treturn \"VIDEO\";\n\t\tdefault:\n\t\t\treturn \"UNKNOWN\";\n\t}\n}\n\nexport function fullScreen(el: HTMLElement) {\n\tel.requestFullscreen?.();\n}\n\nexport function exitFullScreen() {\n\tdocument.exitFullscreen?.();\n}\n\nexport function formatTime(\n\ttime: number,\n\toptions?: {\n\t\tzero?: boolean;\n\t\tunits?: string[];\n\t}\n) {\n\tconst result: string[] = [];\n\tconst { zero = true, units = [\"\", \":\", \":\"] } = options || {};\n\n\tconst l = units.length;\n\tlet i = 0;\n\n\twhile (i < l) {\n\t\tif (time <= 0 && i > 1) break;\n\n\t\tconst n = Math.round(time % 60);\n\n\t\ttime = Math.floor(time / 60);\n\n\t\tresult.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);\n\t}\n\n\treturn result.join(\"\");\n}\n\nexport function getNextSorter(\n\tprevSortBy: string,\n\tprevSortType: string,\n\tsortBy: string\n): [sortBy: string, sortType: string] {\n\tconst types = [\"desc\", \"asc\"];\n\n\tif (prevSortBy === sortBy) {\n\t\tconst i = types.findIndex((t) => t === prevSortType) + 1;\n\t\tconst type = types[i] || \"\";\n\t\tconst by = type === \"\" ? \"\" : sortBy;\n\n\t\treturn [by, type];\n\t}\n\n\treturn [sortBy, \"desc\"];\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n\tif (!+bytes) return \"0 Bytes\";\n\n\tconst k = 1024;\n\tconst dm = decimals < 0 ? 0 : decimals;\n\tconst sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n\treturn value < min ? min : value > max ? max : value;\n}\n\nexport const arrayMove = (array, fromIndex: number, toIndex: number) => {\n\tif (toIndex >= array.length) {\n\t\tlet k = toIndex - array.length + 1;\n\t\twhile (k--) {\n\t\t\tarray.push(undefined);\n\t\t}\n\t}\n\tarray.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);\n\treturn array;\n};\n\ntype ReactiveObject<T> = T & { __isReactive?: boolean };\n\nexport function useReactive<T extends object>(\n\tinitialState: T\n): ReactiveObject<T> {\n\tconst [, setState] = useState<number>(0);\n\tconst reactiveState = useRef<ReactiveObject<T>>(initialState);\n\n\tuseEffect(() => {\n\t\tif (!reactiveState.current.__isReactive) {\n\t\t\treactiveState.current = createReactiveObject(\n\t\t\t\treactiveState.current,\n\t\t\t\tsetState\n\t\t\t);\n\t\t}\n\t}, []);\n\n\treturn reactiveState.current;\n}\n\nfunction createReactiveObject<T extends object>(\n\ttarget: T,\n\tsetState: React.Dispatch<React.SetStateAction<number>>\n): ReactiveObject<T> {\n\treturn new Proxy(target, {\n\t\tget(obj, prop) {\n\t\t\tif (prop === \"__isReactive\") return true;\n\t\t\treturn Reflect.get(obj, prop);\n\t\t},\n\t\tset(obj, prop, value) {\n\t\t\tconst result = Reflect.set(obj, prop, value);\n\t\t\tsetState((prev) => prev + 1); // Trigger re-render\n\t\t\treturn result;\n\t\t},\n\t}) as ReactiveObject<T>;\n}\n\nexport default useReactive;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ToTop from "./totop.js";
|
|
2
2
|
import classNames from "classnames";
|
|
3
|
-
import { debounce } from "radash";
|
|
3
|
+
import { debounce } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
|
|
4
4
|
import { Children, cloneElement, useEffect, useMemo, useState } from "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region packages/components/affix/affix.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affix.js","names":[],"sources":["../../../../packages/components/affix/affix.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => {\n\t\t\tif (typeof document === \"undefined\") return null;\n\t\t\treturn document.body;\n\t\t},\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"affix.js","names":[],"sources":["../../../../packages/components/affix/affix.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => {\n\t\t\tif (typeof document === \"undefined\") return null;\n\t\t\treturn document.body;\n\t\t},\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n"],"mappings":";;;;;;;CAcA,MAAM,EACL,WAAM,SACL,MACA,KACA,OACA,QACA,QACA,OACA,WACA,UACA,qBAAQ;AACR,MAAA,OAAY,aAAS,YAAA,QAAA;AACpB,SAAI,SAAO;OAEX;;;AAKF,SAAM,SAAA,IAAe,WAAW,SAAK;AACpC,OAAA,KAAO,SAAY,OAAC;IACnB,MAAI,EAAK,YAAS,KAAO;;KAGxB,KAAM,KAAC;KACN,GAAG,KAAE;KACL,UAAQ,MAAK;MACb,MAAO,YAAM,cAAe;;AAG3B,iBAAW,SAAC;OACZ,KAAA;OACC,MAAM;OACN,UAAO;OACP,CAAA;;KAEF,CAAC;;;IAIH;IACC,CAAA,UAAA,aAAA,CAAA;;EAGH,MAAA,YAAgB,cAAA;AACf,MAAA,CAAK,UAAU,CAAC,UAAE;;GAGlB,MAAM,MAAA,UAAW;;IAGhB;;AAGD,YAAU,iBAAA,UAAA,SAAA;;AAGV,aAAW,oBAAE,UAAA,SAAA;;IAEZ,CAAA,QAAA,aAAA,CAAA;QAGF,oBAAA,OAAA;EACE,WAAA,WAAA,WAAA,WAAA,EACA,kBAAW,QACV,CAAC;EACF,OAAE;GACF,GAAA;GACC;GACA;GACA;GACA;GACA;GACA;YAEF;EACE,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import button_default from "../button/index.js";
|
|
2
2
|
import icon_default from "../icon/index.js";
|
|
3
3
|
import classNames from "classnames";
|
|
4
|
-
import SkipPreviousRound from "@ricons/material
|
|
4
|
+
import { SkipPreviousRound } from "@ricons/material";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region packages/components/affix/totop.tsx
|
|
7
7
|
function ToTop(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"totop.js","names":["Button","Icon"],"sources":["../../../../packages/components/affix/totop.tsx"],"sourcesContent":["import SkipPreviousRound from \"@ricons/material
|
|
1
|
+
{"version":3,"file":"totop.js","names":["Button","Icon"],"sources":["../../../../packages/components/affix/totop.tsx"],"sourcesContent":["import { SkipPreviousRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport { IAffix } from \"./type\";\n\nfunction ToTop(props: IAffix) {\n\tconst { style, className, onClick } = props;\n\n\treturn (\n\t\t<Button\n\t\t\tsquare\n\t\t\tclassName={classNames(\"i-affix-totop\", className)}\n\t\t\tstyle={{ ...style }}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Icon icon={<SkipPreviousRound />} rotate={90} />\n\t\t</Button>\n\t);\n}\n\nexport default ToTop;\n"],"mappings":";;;;;;AAMA,SAAS,MAAM,OAAe;CAC7B,MAAM,EAAE,OAAO,WAAW,YAAY;AAEtC,QACC,oBAACA,gBAAD;EACC,QAAA;EACA,WAAW,WAAW,iBAAiB,UAAU;EACjD,OAAO,EAAE,GAAG,OAAO;EACV;YAET,oBAACC,cAAD;GAAM,MAAM,oBAAC,mBAAD,EAAqB,CAAA;GAAE,QAAQ;GAAM,CAAA;EACzC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","names":[],"sources":["../../../../packages/components/badge/badge.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"badge.js","names":[],"sources":["../../../../packages/components/badge/badge.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n"],"mappings":";;;;CAIA,MAAM,EACL,SACC,cACA,KACA,SACA,OACA,UACA,OACA,WACA,aACA;QAGD,qBAAA,OAAA;EACE;EACA,WAAO,WAAK,WAAA,EAAA,SAAA,OAAA,EAAA,UAAA;YAFd,CAIC,UAAA,oBAAA,OAAA;GAGE,WAAA,WAAA,mBAAA,cAAA;IACA,eAAW;IACV,kBAAkB;IAClB,CAAC;GACF,OAAE,EAAA,UAAA,SAAA;aAEH;GACE,CAAA,CACG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","names":[],"sources":["../../../../packages/components/button/button.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport useRipple from \"../../js/useRipple\";\nimport Loading from \"../loading\";\nimport Confirm from \"./confirm\";\nimport Group from \"./group\";\nimport \"./index.css\";\nimport Toggle from \"./toggle\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tonClick?.(e);\n\t};\n\n\tif (!children) return <></>;\n\n\tconst childNodes = [\n\t\tloading && <Loading key='loading' />,\n\t\tcreateElement(\n\t\t\t\"span\",\n\t\t\t{ key: \"content\", className: \"i-btn-content\" },\n\t\t\tchildren,\n\t\t),\n\t];\n\n\tconst attrs = {\n\t\tclassName: formatClass(props),\n\t\t[\"data-ripple\"]:\n\t\t\tripple && !loading && !restProps.disabled ? \"\" : undefined,\n\t\tonClick: handleClick,\n\t};\n\n\tuseEffect(() => {\n\t\tripple && useRipple();\n\t}, [ripple]);\n\n\tif (typeof As === \"string\") {\n\t\treturn createElement(\n\t\t\tAs,\n\t\t\t{\n\t\t\t\tref,\n\t\t\t\thref,\n\t\t\t\t...attrs,\n\t\t\t\t...restProps,\n\t\t\t},\n\t\t\tchildNodes,\n\t\t);\n\t}\n\n\treturn createElement(\n\t\tAs,\n\t\t{\n\t\t\tto: href || \"\",\n\t\t\t...attrs,\n\t\t\t...restProps,\n\t\t},\n\t\tchildNodes,\n\t);\n};\n\nButton.Toggle = Toggle;\nButton.Confirm = Confirm;\nButton.Group = Group;\n\nexport default Button as CompositionButton;\n"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"button.js","names":[],"sources":["../../../../packages/components/button/button.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport useRipple from \"../../js/useRipple\";\nimport Loading from \"../loading\";\nimport Confirm from \"./confirm\";\nimport Group from \"./group\";\nimport \"./index.css\";\nimport Toggle from \"./toggle\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tonClick?.(e);\n\t};\n\n\tif (!children) return <></>;\n\n\tconst childNodes = [\n\t\tloading && <Loading key='loading' />,\n\t\tcreateElement(\n\t\t\t\"span\",\n\t\t\t{ key: \"content\", className: \"i-btn-content\" },\n\t\t\tchildren,\n\t\t),\n\t];\n\n\tconst attrs = {\n\t\tclassName: formatClass(props),\n\t\t[\"data-ripple\"]:\n\t\t\tripple && !loading && !restProps.disabled ? \"\" : undefined,\n\t\tonClick: handleClick,\n\t};\n\n\tuseEffect(() => {\n\t\tripple && useRipple();\n\t}, [ripple]);\n\n\tif (typeof As === \"string\") {\n\t\treturn createElement(\n\t\t\tAs,\n\t\t\t{\n\t\t\t\tref,\n\t\t\t\thref,\n\t\t\t\t...attrs,\n\t\t\t\t...restProps,\n\t\t\t},\n\t\t\tchildNodes,\n\t\t);\n\t}\n\n\treturn createElement(\n\t\tAs,\n\t\t{\n\t\t\tto: href || \"\",\n\t\t\t...attrs,\n\t\t\t...restProps,\n\t\t},\n\t\tchildNodes,\n\t);\n};\n\nButton.Toggle = Toggle;\nButton.Confirm = Confirm;\nButton.Group = Group;\n\nexport default Button as CompositionButton;\n"],"mappings":";;;;;;;;;uBAUA,SACC,MACA,SACA,UACA,OAAA,UACA,OACA,OACA,QACA,WACA,gBAEA,WAAW,SAAC,WAAA;CACZ,iBAAkB;CACjB,cAAc;CACd,eAAc;CACd,iBAAe;CACf,gBAAgB;CAChB,mBAAgB;EACf,SAAM,SAAY,SAAS;CAC5B;CACA;CACA,CAAA;;CAGF,MAAM,EACL,IAAK,KAAC,KACL,KACA,UACA,WACA,SACA,MACA,SACA,QACA,WACA,MACA,OACA,MACA,SAAI,MACJ,SACA,GAAA,cACG;;AAGJ,MAAK,WAAC,UAAkB,UAAW;AAClC,KAAG,iBAAY;AACd,KAAE,gBAAgB;AAClB;;;;;qBASF,WAAM,oBAAA,iBAAA,EAAa,EAAA,UAAA,EAClB,cACA,QACC;EAAC,KAAK;EAAA,WAAA;EAAA,EACN,SACA,CACD;;EAGD,WAAY,YAAE,MAAA;GACb,gBACC,UAAM,CAAA,WAAQ,CAAA,UAAA,WAAA,KAAA,KAAA;EACf,SAAS;EACT;;AAGD,YAAW,WAAK;IACf,CAAA,OAAU,CAAA;4BAGX,QAAI,cACH,IACC;EACA;EACC;EACA,GAAA;EACA,GAAG;EACH,EACD,WACA;sBAIF,IACC;EACA,IAAA,QAAA;EACC,GAAG;EACH,GAAG;EACH,EACD,WACA;;;AAIF,OAAO,UAAS;AAChB,OAAO,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","names":[],"sources":["../../../../packages/components/card/card.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst {\n\t\thideShadow,\n\t\tborder,\n\t\tclassName,\n\t\tchildren,\n\t\theader,\n\t\tfooter,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"card.js","names":[],"sources":["../../../../packages/components/card/card.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst {\n\t\thideShadow,\n\t\tborder,\n\t\tclassName,\n\t\tchildren,\n\t\theader,\n\t\tfooter,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n"],"mappings":";;;;CAIA,MAAM,EACL,YACC,QACA,WACA,UACA,QACA,QACA,GAAA,cACG;QAGJ,qBAAA,OAAA;EACE,WAAA,WAAA,UAAA,WAAA;GACA,QAAS,CAAC;GACT,mBAAmB;GACnB,CAAC;EACF,GAAE;YALJ;GAOC,UAAA,oBAAA,OAAA;IAAA,WAAA;cAAA;IAAA,CAAA;;;;;;;;;GAKE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","names":[],"sources":["../../../../packages/components/checkbox/checkbox.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 CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst [selectedValues, setSelectedValues] = useState<any>(value);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...selectedValues];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tsetSelectedValues(group);\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tsetSelectedValues(value);\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\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-checkbox-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-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-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\treturn (\n\t\t\t\t\t\t<CheckboxItem\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={selectedValues.includes(option.value)}\n\t\t\t\t\t\t\toptionValue={option.value}\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={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\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</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"checkbox.js","names":[],"sources":["../../../../packages/components/checkbox/checkbox.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 CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst [selectedValues, setSelectedValues] = useState<any>(value);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...selectedValues];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tsetSelectedValues(group);\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tsetSelectedValues(value);\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\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-checkbox-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-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-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\treturn (\n\t\t\t\t\t\t<CheckboxItem\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={selectedValues.includes(option.value)}\n\t\t\t\t\t\t\toptionValue={option.value}\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={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\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</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n"],"mappings":";;;;;;AAMA,SAAO,SAAO,OAAoB;SAElC,OACC,MACC,UAAK,EAAA,EACL,QAAI,IACJ,OAAO,WACP,eAAU,MACV,aACA,UACA,SAAA,UACA,SACA,UACA,WACA,YACA,UACA,GAAA,cACA;CAED,MAAI,CAAA,gBAAK,qBAAA,SAAA,MAAA;CAET,MAAM,mBAAiB,cAAA,aAA6B,QAAM,EAAA,CAAK,QAAC,CAAA;CAEhE,MAAM,gBAAgB,SAAG,KAAW,MAAG;;EAEvC,MAAM,IAAA,MAAA,WAAgB,SAAe,SAAK,IAAA,MAAA;AAEzC,MAAA,WAAe,IAAC,EAAA,OAAA,KAAA,IAAA,MAAA;WAEL,CAAC,WAAU,IAAA,GACrB,OAAM,OAAK,GAAI,EAAA;AAGhB,oBAAA,MAAA;;;AAID,iBAAC;;IAED,CAAA,MAAU,CAAC;AAEX,QAAA,qBAAA,OAAA;EAEA,WAAO,WACL,4BACA;IACG,cAAY,WAAY,WAAA;GAC1B,kBAAA;GACC,EAED,UAAA;EAED,GAAC;aAEA,SACF,qBAAA,QAAA;GAAA,WAAA;aAAA;IACE,YAAS,oBAAA,QAAA;KAAA,WAAA;eAAA;KAAA,CAAA;IACR;IAEC,WAAK,oBAAA,KAAA;KAAA,WAAA;eAAA;KAAA,CAAA;;MAIR,oBAAC,OAAD;;IAEC,mBAAA,CAAA;IACA,6BAAyB,SAAS;IACjC,CAAC;aAED,iBAAC,KAAA,WAAA;AACH,WACE,oBAAA,cAAA;KAEE;KACA,OAAK,eAAgB,SAAM,OAAA,MAAA;KAC3B,aAAU,OAAA;KACJ;KACN,UAAA,YAAoB,OAAK;KACzB,WAAU,SAAA,MACV,aAAU,SAAY,QAAO,EAAA;eAG7B,cAAA,OAAA;KACD,EAXM,OAAA,MAWN;KAEA;GACA,CAAA,CACA;;;AAIN,SAAA,OAAA"}
|
|
@@ -2,9 +2,8 @@ import helpericon_default from "../utils/helpericon/index.js";
|
|
|
2
2
|
import Item from "./item.js";
|
|
3
3
|
import classNames from "classnames";
|
|
4
4
|
import { Children, useMemo, useState } from "react";
|
|
5
|
+
import { MinusRound, PlusRound } from "@ricons/material";
|
|
5
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
import MinusRound from "@ricons/material/es/MinusRound.js";
|
|
7
|
-
import PlusRound from "@ricons/material/es/PlusRound.js";
|
|
8
7
|
//#region packages/components/collapse/collapse.tsx
|
|
9
8
|
const Collapse = (props) => {
|
|
10
9
|
const { active, items, multiple, border, headerClickable, className, children, renderToggle = (active) => active ? /* @__PURE__ */ jsx(MinusRound, {}) : /* @__PURE__ */ jsx(PlusRound, {}), onCollapse, ...restProps } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapse.js","names":[],"sources":["../../../../packages/components/collapse/collapse.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"collapse.js","names":[],"sources":["../../../../packages/components/collapse/collapse.tsx"],"sourcesContent":["import { MinusRound, PlusRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { Children, useMemo, useState } from \"react\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { ICollapse, ICollapseItem, TKey } from \"./type\";\n\nconst Collapse = (props: ICollapse) => {\n\tconst {\n\t\tactive,\n\t\titems,\n\t\tmultiple,\n\t\tborder,\n\t\theaderClickable,\n\t\tclassName,\n\t\tchildren,\n\t\trenderToggle = (active: boolean) =>\n\t\t\tactive ? <MinusRound /> : <PlusRound />,\n\t\tonCollapse,\n\t\t...restProps\n\t} = props;\n\n\tconst [activeKey, setActiveKey] = useState(active);\n\n\tconst collapses = useMemo(() => {\n\t\tif (!items) {\n\t\t\tif (!children) return [];\n\n\t\t\treturn (\n\t\t\t\tChildren.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: TKey;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst { title, children, content, disabled, ...restProps } =\n\t\t\t\t\t\tnodeProps;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...restProps,\n\t\t\t\t\t\tkey: key || i,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tcontent: children || content,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t};\n\t\t\t\t}) || []\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t}, [children]);\n\n\tconst handleHeaderClick = (item: ICollapseItem) => {\n\t\tif (!headerClickable) return;\n\n\t\thandleToggle(item);\n\t};\n\n\tconst handleToggle = (item: ICollapseItem, e?) => {\n\t\tconst { key, disabled } = item;\n\t\te?.stopPropagation();\n\t\tif (disabled) return;\n\n\t\tif (!multiple) {\n\t\t\tconst nextActive = activeKey === key ? undefined : key;\n\t\t\tsetActiveKey(nextActive);\n\t\t\tonCollapse?.(key as TKey, nextActive !== undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tconst group = Array.isArray(activeKey) ? [...activeKey] : [];\n\n\t\tconst i = group.findIndex((k) => k === key);\n\n\t\tif (i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t} else {\n\t\t\tkey !== undefined && group.push(key);\n\t\t}\n\t\tsetActiveKey(group as any);\n\t\tonCollapse?.(key as TKey, i < 0);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-collapse\",\n\t\t\t\t{\n\t\t\t\t\t\"i-collapse-bordered\": border,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{collapses.map((item) => {\n\t\t\t\tconst {\n\t\t\t\t\tkey,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps\n\t\t\t\t} = item;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? ((activeKey as TKey[]) || []).includes(key)\n\t\t\t\t\t: activeKey === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tclassName={classNames(\"i-collapse-item\", className, {\n\t\t\t\t\t\t\t\"i-collapse-active\": isActive,\n\t\t\t\t\t\t\t\"i-collapse-disabled\": disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='i-collapse-header'\n\t\t\t\t\t\t\tonClick={() => handleHeaderClick(item)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\tclassName='i-collapse-toggle'\n\t\t\t\t\t\t\t\ticon={renderToggle(isActive)}\n\t\t\t\t\t\t\t\tonClick={(e) => handleToggle(item, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className='i-collapse-content'>{content}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCollapse.Item = Item;\n\nexport default Collapse;\n"],"mappings":";;;;;;;;CAQA,MAAM,EACL,QACC,OACA,UACA,QACA,iBACA,WACA,UACA,gBAAQ,WACR,SAAA,oBAAA,YAAA,EAAwB,CAAA,GAAA,oBAAA,WAAA,EAAU,CAAA,EAClC,YACA,GAAA,cACG;;;AAKJ,MAAK,CAAC,OAAA;AACL,OAAK,CAAA,SAAO,QAAA,EAAA;UAGX,SAAO,IAAA,WAAA,MAAA,MAAA;IACN,MAAA,EAAS,KAAI,OAAQ,cAAc;IAIlC,MAAC,EAAA,OAAA,UAAA,SAAA,UAAA,GAAA,cACD;;KAGA,GAAA;KACC,KAAG,OAAS;KACZ;KACA,SAAK,YAAA;KACL;KACA;KACA,IAAA,EAAA;;;IAKJ,CAAA,SAAY,CAAA;;AAGb,MAAK,CAAC,gBAAiB;;;;EAMvB,MAAM,EAAA,KAAA,aAAqB;AAC1B,KAAA,iBAAa;AACb,MAAG,SAAA;;GAGH,MAAK,aAAU,cAAA,MAAA,KAAA,IAAA;AACd,gBAAM,WAAa;AACnB,gBAAa,KAAW,eAAA,KAAA,EAAA;AACxB;;;;aAQD,OAAO,OAAK,GAAA,EAAA;MAEX,SAAM,KAAA,KAAA,MAAA,KAAA,IAAA;AAEP,eAAA,MAAA;AACA,eAAa,KAAa,IAAA,EAAA;;QAI3B,oBAAA,OAAA;EACE,WAAA,WACA,cACC,EACA,uBAAA,QACC,EACD,UACA;EACD,GAAC;YAEF,UAAA,KAAA,SAAA;GACE,MAAA,EACA,KACC,OACA,SACA,UACA,WACA,GAAA,cACG;GACJ,MAAI,WAAI,YACH,aAAY,EAAA,EAAA,SAAA,IAAA,GACd,cAAc;UAGjB,qBAAA,OAAA;IAEE,WAAQ,WAAA,mBAAA,WAAA;KACR,qBAAsB;KACrB,uBAAqB;KACrB,CAAC;IACF,GAAE;cANJ,CAQC,qBAAA,OAAA;KACE,WAAA;KACA,eAAa,kBAAe,KAAA;eAF9B,CAIC,OAAA,oBAAA,oBAAA;MAGE,QAAA;MACA,WAAA;MACA,MAAA,aAAa,SAAe;MAC5B,UAAM,MAAA,aAAsB,MAAA,EAAA;MAC5B,CAAA,CACA;;;;OAGG;MAtBL,IAsBK;IAEN;EACA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datagrid.js","names":[],"sources":["../../../../packages/components/datagrid/datagrid.tsx"],"sourcesContent":["import { useReactive } from \"../../js/hooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport { getNextSorter } from \"../../js/utils\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => (\n\t\t\t<Loading size='1.5em' className='color-3' absolute />\n\t\t),\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonCellDoubleClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && container.current?.scrollTo({ top: 0, left: 0 });\n\t}, [loading]);\n\n\tconst mergedStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ maxHeight: height, ...mergedStyle }}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={container}\n\t\t\t\tclassName={classNames(\"i-datagrid\", {\n\t\t\t\t\t\"i-datagrid-loading\": loading,\n\t\t\t\t})}\n\t\t\t\tonWheel={onScroll}\n\t\t\t>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</div>\n\t);\n};\n\nexport default Datagrid;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"datagrid.js","names":[],"sources":["../../../../packages/components/datagrid/datagrid.tsx"],"sourcesContent":["import { useReactive } from \"../../js/hooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport { getNextSorter } from \"../../js/utils\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => (\n\t\t\t<Loading size='1.5em' className='color-3' absolute />\n\t\t),\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonCellDoubleClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && container.current?.scrollTo({ top: 0, left: 0 });\n\t}, [loading]);\n\n\tconst mergedStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ maxHeight: height, ...mergedStyle }}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={container}\n\t\t\t\tclassName={classNames(\"i-datagrid\", {\n\t\t\t\t\t\"i-datagrid-loading\": loading,\n\t\t\t\t})}\n\t\t\t\tonWheel={onScroll}\n\t\t\t>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</div>\n\t);\n};\n\nexport default Datagrid;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description.js","names":[],"sources":["../../../../packages/components/description/description.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"description.js","names":[],"sources":["../../../../packages/components/description/description.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n"],"mappings":";;;;;CAKA,MAAM,EACL,MACC,OACA,UAAK,GACL,MAAA,QACA,OACA,YACA,YACA,UACA,SACA,OACA,cACA;QAGD,oBAAA,OAAA;EACE,WAAA,WAAA,iBAAA,UAAA;EACA,OACA;IACC,8BAAA;GACC,qBAAqB,UAAU,QAAA,IAC/B,UAAA,QAAmB,OAClB;GACD;GACA,WAAG;GACH,GAAA;GACA;YAGH,KAAA,KAAA,MAAA,MAAA;GACE,MAAK,EACL,OACC,OACA,OACA,QACA,UAAM,GACN,UAAU,MACV;;UAKD,qBAAA,OAAA;IAEE,WAAM,WAAA,sBAAA,EACN,+BAAyB,UACxB,CAAC;IACF,OAAE;KACF,YAAO,QAAA;KACN,SAAA,QAAiB;KACjB,GAAA;KACA;cATH,CAWC,SACE,qBAAA,OAAA;KACC,WAAA;KACA,OAAA,EAAS,WAAI,YAAiB;eAF/B,CAIA,OACE,MACA;QAEH,oBAAC,OAAD;KAAC,WAAA;eAAA;KAAA,CAAA,CACI;MApBL,EAoBK;IAEN;EACA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.js","names":[],"sources":["../../../../packages/components/drawer/drawer.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef, useTransition } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useKeydown, useReactive } from \"../../js/hooks\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tdisabledEsc,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t});\n\tconst [isPending, startTransition] = useTransition();\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current || isPending) return;\n\t\ttoggable.current = false;\n\n\t\tstartTransition(() => {\n\t\t\tstate.active = false;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!keepDOM) {\n\t\t\t\t\tstate.show = false;\n\t\t\t\t}\n\t\t\t\tonVisibleChange?.(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t\tonClose?.();\n\t\t\t}, 240);\n\t\t});\n\t};\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current || isPending) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\n\t\tstartTransition(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tstate.active = true;\n\t\t\t\ttoggable.current = true;\n\t\t\t});\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleBackdropClick = () => {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{\n\t\t\tdisabled: disabledEsc,\n\t\t}\n\t);\n\n\tif (!state.show) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\"i-active\": state.active,\n\t\t\t})}\n\t\t\tonClick={handleBackdropClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{header && (\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t{!hideCloseButton && (\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</header>\n\t\t\t\t)}\n\n\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t{footer && <div className='i-drawer-footer'>{footer}</div>}\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"drawer.js","names":[],"sources":["../../../../packages/components/drawer/drawer.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef, useTransition } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useKeydown, useReactive } from \"../../js/hooks\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tdisabledEsc,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t});\n\tconst [isPending, startTransition] = useTransition();\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current || isPending) return;\n\t\ttoggable.current = false;\n\n\t\tstartTransition(() => {\n\t\t\tstate.active = false;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!keepDOM) {\n\t\t\t\t\tstate.show = false;\n\t\t\t\t}\n\t\t\t\tonVisibleChange?.(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t\tonClose?.();\n\t\t\t}, 240);\n\t\t});\n\t};\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current || isPending) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\n\t\tstartTransition(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tstate.active = true;\n\t\t\t\ttoggable.current = true;\n\t\t\t});\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleBackdropClick = () => {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{\n\t\t\tdisabled: disabledEsc,\n\t\t}\n\t);\n\n\tif (!state.show) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\"i-active\": state.active,\n\t\t\t})}\n\t\t\tonClick={handleBackdropClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{header && (\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t{!hideCloseButton && (\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</header>\n\t\t\t\t)}\n\n\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t{footer && <div className='i-drawer-footer'>{footer}</div>}\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n"],"mappings":";;;;;;;;CAQA,MAAA,EACC,SACC,WAAO,QACP,QACA,QACA,mBAAM,MACN,iBACA,SACA,WACA,aACA,UACA,iBACA,SACA,GAAA,cACG;;CAGJ,MAAM,QAAQ,YAAU;EACxB,MAAM;EACL,QAAM;EACN,CAAA;CACD,MAAE,CAAA,WAAA,mBAAA,eAAA;;AAGF,MAAK,CAAC,SAAA,WAAmB,UAAA;AACxB,WAAK,UAAS;;AAGd,SAAA,SAAgB;;AAGf,QAAA,CAAA,QACC,OAAK,OAAS;AAEd,sBAAA,MAAA;AACA,aAAA,UAAkB;AAClB,eAAS;MACT,IAAA;IACA;;;AAIH,MAAK,CAAC,SAAA,WAAmB,UAAA;;AAGxB,oBAAiB,KAAA;AACjB,WAAA,UAAkB;;AAGlB,+BAAsB;AACrB,UAAA,SAAA;AACC,aAAM,UAAa;KACnB;IACA;;;AAIH,YAAW,YAAK,GAAA,YAAA;IACf,CAAA,QAAU,CAAA;;AAGX,sBAAM,YAA2B;;aAIjC,MAAA;AACE,MAAI,EAAE,SAAA,YAAA,CAAA,QAAA;AACN,cAAY;IAEb,EACA,UAAA,aACC,CACD;;qBAKD,oBAAA,OAAA;EACE,WAAA,WAAA,qBAAA,WAAA,EACA,YAAW,MAAA,QACV,CAAC;EACF,SAAE;EACF,GAAA;YAED,qBAAA,OAAA;GACE,WAAA,WAAA,YAAA,YAAA,WAAA;GACA,UAAU,MAAC,EAAA,iBAAwB;aAFrC;IAIC,UACE,qBAAA,UAAA;KAAQ,WAAE;eAAV,CACC,QAAA,CAAA,mBAGC,oBAAC,oBAAD;MACC,WAAA;MACA,SAAS;MACT,CAAA,CAED;;;;;;;;;;IAMF;;EACG,CAAA,EACN,SAAM,KACN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.js","names":[],"sources":["../../../../packages/components/dropdown/dropdown.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport List from \"../list\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IDropdown } from \"./type\";\n\nconst Dropdown = (props: IDropdown) => {\n\tconst { visible, width, content, children, ...restProps } = props;\n\tconst [active, setActive] = useState(visible);\n\n\tif (!content) {\n\t\treturn children;\n\t}\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tsetActive(v);\n\t\tif (props.onVisibleChange) {\n\t\t\tprops.onVisibleChange(v);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tsetActive(visible);\n\t}, [visible]);\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tstyle={{ minWidth: width }}\n\t\t\t\t>\n\t\t\t\t\t{typeof content === \"function\"\n\t\t\t\t\t\t? content(() => setActive(false))\n\t\t\t\t\t\t: content}\n\t\t\t\t</List>\n\t\t\t}\n\t\t\t{...restProps}\n\t\t\ttouchable\n\t\t\tvisible={active}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nDropdown.Item = Item;\n\nexport default Dropdown;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"dropdown.js","names":[],"sources":["../../../../packages/components/dropdown/dropdown.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport List from \"../list\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IDropdown } from \"./type\";\n\nconst Dropdown = (props: IDropdown) => {\n\tconst { visible, width, content, children, ...restProps } = props;\n\tconst [active, setActive] = useState(visible);\n\n\tif (!content) {\n\t\treturn children;\n\t}\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tsetActive(v);\n\t\tif (props.onVisibleChange) {\n\t\t\tprops.onVisibleChange(v);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tsetActive(visible);\n\t}, [visible]);\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tstyle={{ minWidth: width }}\n\t\t\t\t>\n\t\t\t\t\t{typeof content === \"function\"\n\t\t\t\t\t\t? content(() => setActive(false))\n\t\t\t\t\t\t: content}\n\t\t\t\t</List>\n\t\t\t}\n\t\t\t{...restProps}\n\t\t\ttouchable\n\t\t\tvisible={active}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nDropdown.Item = Item;\n\nexport default Dropdown;\n"],"mappings":";;;;;;;CAOA,MAAM,EAAA,SAAY,OAAO,SAAS,UAAK,GAAA,cAAA;CACtC,MAAM,CAAC,QAAQ,aAAS,SAAS,QAAY;cAG7C,QAAK;;AAIL,YAAM,EAAA;AACL,MAAA,MAAU,gBACV,OAAI,gBAAM,EAAe;;;AAK1B,YAAW,QAAK;IACf,CAAA,QAAU,CAAA;QAGX,oBAAA,eAAA;EACE,SAAA;EACA,UAAS;EACT,SACA,oBAAA,cAAA;GACE,WAAA;GACA,OAAA,EAAS,UAAI,OAAS;aAEvB,OAAA,YAAA,aACE,cAAgB,UAAI,MAAQ,CAAA,GAC1B;GACA,CAAA;EAEL,GAAA;EACA,WAAA;EACA,SAAA;EACA,iBAAe;EAEhB;EACE,CAAA"}
|