@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
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import button_default from "../button/index.js";
|
|
2
2
|
import icon_default from "../icon/index.js";
|
|
3
|
+
import { ClearAllRound, FormatBoldRound, FormatItalicRound, FormatUnderlinedRound, RedoRound, StrikethroughSRound, UndoRound } from "@ricons/material";
|
|
3
4
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
5
|
import xss from "xss";
|
|
5
|
-
import ClearAllRound from "@ricons/material/es/ClearAllRound.js";
|
|
6
|
-
import FormatBoldRound from "@ricons/material/es/FormatBoldRound.js";
|
|
7
|
-
import FormatItalicRound from "@ricons/material/es/FormatItalicRound.js";
|
|
8
|
-
import FormatUnderlinedRound from "@ricons/material/es/FormatUnderlinedRound.js";
|
|
9
|
-
import RedoRound from "@ricons/material/es/RedoRound.js";
|
|
10
|
-
import StrikethroughSRound from "@ricons/material/es/StrikethroughSRound.js";
|
|
11
|
-
import UndoRound from "@ricons/material/es/UndoRound.js";
|
|
12
6
|
//#region packages/components/editor/controls.tsx
|
|
13
7
|
const { escapeAttrValue } = xss;
|
|
14
8
|
const exec = (a, b, c) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.js","names":["Button","Icon"],"sources":["../../../../packages/components/editor/controls.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"controls.js","names":["Button","Icon"],"sources":["../../../../packages/components/editor/controls.tsx"],"sourcesContent":["import {\n\tClearAllRound,\n\tFormatBoldRound,\n\tFormatItalicRound,\n\tFormatUnderlinedRound,\n\tRedoRound,\n\tStrikethroughSRound,\n\tUndoRound,\n} from \"@ricons/material\";\nimport { Fragment } from \"react/jsx-runtime\";\nimport xss from \"xss\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\n\nconst { escapeAttrValue } = xss as unknown as {\n\tescapeAttrValue: (value: string) => string;\n};\n\nexport const exec = (a, b?, c?) => {\n\tif (typeof document === \"undefined\") return;\n\treturn document.execCommand(a, b, c);\n};\n\nexport const xssOptions = {\n\tonIgnoreTagAttr: function (tag, name, value) {\n\t\tif ([\"data-\", \"style\"].includes(name.substr(0, 5))) {\n\t\t\treturn name + '=\"' + escapeAttrValue(value) + '\"';\n\t\t}\n\t},\n};\n\nconst fnMap = {\n\tbold: {\n\t\ticon: <FormatBoldRound />,\n\t\tonClick: () => exec(\"bold\"),\n\t\ttip: \"粗体\",\n\t},\n\titalic: {\n\t\ticon: <FormatItalicRound />,\n\t\tonClick: () => exec(\"italic\"),\n\t\ttip: \"斜体\",\n\t},\n\tunderline: {\n\t\ticon: <FormatUnderlinedRound />,\n\t\tonClick: () => exec(\"underline\"),\n\t\ttip: \"下划线\",\n\t},\n\tstrike: {\n\t\ticon: <StrikethroughSRound />,\n\t\tonClick: () => exec(\"strikeThrough\"),\n\t\ttip: \"删除线\",\n\t},\n\tredo: {\n\t\ticon: <RedoRound />,\n\t\tonClick: () => exec(\"redo\"),\n\t\ttip: \"重做\",\n\t},\n\tundo: {\n\t\ticon: <UndoRound />,\n\t\tonClick: () => exec(\"undo\"),\n\t\ttip: \"撤销\",\n\t},\n\t// color: {\n\t// \ticon: <FormatColorTextRound />,\n\t// \tonClick: () => exec(\"foreColor\", false, \"\"),\n\t// },\n\t// backColor: {\n\t// \ticon: <FormatColorFillRound />,\n\t// \tonClick: () => exec(\"backColor\", false, \"\"),\n\t// },\n\tclear: {\n\t\ticon: <ClearAllRound />,\n\t\tonClick: () => exec(\"removeFormat\"),\n\t\ttip: \"清除格式\",\n\t},\n};\n\nconst aliasMap = {\n\tsimple: [\"undo\", \"redo\", \"bold\", \"italic\", \"underline\", \"strike\", \"clear\"],\n\tall: Object.keys(fnMap),\n};\n\nexport default function getControls(fns, options) {\n\tconst { controlBtnProps } = options;\n\tconst keys = typeof fns === \"string\" ? aliasMap[fns] : fns;\n\n\treturn keys.map((k) => {\n\t\tif (fnMap[k]) {\n\t\t\tconst { icon, render, tip, onClick } = fnMap[k];\n\n\t\t\tif (render) {\n\t\t\t\treturn render(options);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Button key={k} {...controlBtnProps} onClick={onClick}>\n\t\t\t\t\t<Icon icon={icon} />\n\t\t\t\t\t{tip && <span className='i-editor-control-tip'>{tip}</span>}\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\t\treturn <Fragment key={k} />;\n\t});\n}\n"],"mappings":";;;;;;AAcA,MAAM,EAAE,oBAAoB;AAI5B,MAAa,QAAQ,GAAG,GAAI,MAAO;AAClC,KAAI,OAAO,aAAa,YAAa;AACrC,QAAO,SAAS,YAAY,GAAG,GAAG,EAAE;;AAGrC,MAAa,aAAa,EACzB,iBAAiB,SAAU,KAAK,MAAM,OAAO;AAC5C,KAAI,CAAC,SAAS,QAAQ,CAAC,SAAS,KAAK,OAAO,GAAG,EAAE,CAAC,CACjD,QAAO,OAAO,QAAO,gBAAgB,MAAM,GAAG;GAGhD;AAED,MAAM,QAAQ;CACb,MAAM;EACL,MAAM,oBAAC,iBAAD,EAAmB,CAAA;EACzB,eAAe,KAAK,OAAO;EAC3B,KAAK;EACL;CACD,QAAQ;EACP,MAAM,oBAAC,mBAAD,EAAqB,CAAA;EAC3B,eAAe,KAAK,SAAS;EAC7B,KAAK;EACL;CACD,WAAW;EACV,MAAM,oBAAC,uBAAD,EAAyB,CAAA;EAC/B,eAAe,KAAK,YAAY;EAChC,KAAK;EACL;CACD,QAAQ;EACP,MAAM,oBAAC,qBAAD,EAAuB,CAAA;EAC7B,eAAe,KAAK,gBAAgB;EACpC,KAAK;EACL;CACD,MAAM;EACL,MAAM,oBAAC,WAAD,EAAa,CAAA;EACnB,eAAe,KAAK,OAAO;EAC3B,KAAK;EACL;CACD,MAAM;EACL,MAAM,oBAAC,WAAD,EAAa,CAAA;EACnB,eAAe,KAAK,OAAO;EAC3B,KAAK;EACL;CASD,OAAO;EACN,MAAM,oBAAC,eAAD,EAAiB,CAAA;EACvB,eAAe,KAAK,eAAe;EACnC,KAAK;EACL;CACD;AAED,MAAM,WAAW;CAChB,QAAQ;EAAC;EAAQ;EAAQ;EAAQ;EAAU;EAAa;EAAU;EAAQ;CAC1E,KAAK,OAAO,KAAK,MAAM;CACvB;AAED,SAAwB,YAAY,KAAK,SAAS;CACjD,MAAM,EAAE,oBAAoB;AAG5B,SAFa,OAAO,QAAQ,WAAW,SAAS,OAAO,KAE3C,KAAK,MAAM;AACtB,MAAI,MAAM,IAAI;GACb,MAAM,EAAE,MAAM,QAAQ,KAAK,YAAY,MAAM;AAE7C,OAAI,OACH,QAAO,OAAO,QAAQ;AAGvB,UACC,qBAACA,gBAAD;IAAgB,GAAI;IAA0B;cAA9C,CACC,oBAACC,cAAD,EAAY,MAAQ,CAAA,EACnB,OAAO,oBAAC,QAAD;KAAM,WAAU;eAAwB;KAAW,CAAA,CACnD;MAHI,EAGJ;;AAGX,SAAO,oBAAC,UAAD,EAAoB,EAAL,EAAK;GAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","names":[],"sources":["../../../../packages/components/editor/editor.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useImperativeHandle, useRef } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport { IEditor } from \"./type\";\n\nconst Editor = (props: IEditor) => {\n\tconst {\n\t\tref,\n\t\twidth,\n\t\theight = \"10em\",\n\t\tplaceholder,\n\t\tautosize,\n\t\tborder = true,\n\t\trichPaste,\n\t\tcontrols = \"simple\",\n\t\tclassName,\n\t\tstyle,\n\t\tonInput,\n\t\tonPaste,\n\t\tonKeyDown,\n\t\t...restProps\n\t} = props;\n\tconst editorRef = useRef<HTMLDivElement>(null);\n\tconst controlBtnProps: IButton = {\n\t\tsquare: true,\n\t\tflat: true,\n\t\tsize: \"small\",\n\t};\n\n\tconst handlePaste = async (e) => {\n\t\tonPaste?.(e);\n\n\t\tif (richPaste) return;\n\t\te.preventDefault();\n\t\tconst text = e.clipboardData.getData(\"text/plain\");\n\t\texec(\"insertText\", false, text);\n\t};\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tswitch (e.key) {\n\t\t\tcase \"Tab\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertHTML\", false, \"	\");\n\t\t\t\tbreak;\n\t\t\tcase \"Enter\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertLineBreak\");\n\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\teditorRef.current.scrollBy({\n\t\t\t\t\ttop: 20,\n\t\t\t\t\tleft: -1000,\n\t\t\t\t});\n\n\t\t\t\tif (!autosize) return;\n\t\t\t\teditorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tinput: editorRef.current,\n\t\t\tsetValue(html) {\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\tconst safeHtml = xss(html, xssOptions);\n\n\t\t\t\teditorRef.current.innerHTML = safeHtml;\n\t\t\t},\n\t\t\tgetSafeValue() {\n\t\t\t\tconst html = editorRef.current?.innerHTML ?? \"\";\n\n\t\t\t\treturn xss(html, xssOptions);\n\t\t\t},\n\t\t};\n\t});\n\n\tconst handleInput = (e) => {\n\t\tlet html = editorRef.current?.innerHTML ?? \"\";\n\n\t\tif ([\"<br>\", \"\\n\"].includes(html) && editorRef.current) {\n\t\t\thtml = \"\";\n\t\t\teditorRef.current.innerHTML = html;\n\t\t}\n\n\t\tonInput?.(html, e);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-editor\", className, {\n\t\t\t\t\"i-editor-borderless\": !border,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\t[autosize ? \"minHeight\" : \"height\"]: height,\n\t\t\t\twidth,\n\t\t\t}}\n\t\t>\n\t\t\t{controls !== \"none\" && (\n\t\t\t\t<div className='i-editor-controls'>\n\t\t\t\t\t{getControls(controls, {\n\t\t\t\t\t\tcontrolBtnProps,\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tref={editorRef}\n\t\t\t\tclassName='i-editor-content'\n\t\t\t\tdata-placeholder={placeholder}\n\t\t\t\tcontentEditable\n\t\t\t\tonPaste={handlePaste}\n\t\t\t\tonInput={handleInput}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Editor;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"editor.js","names":[],"sources":["../../../../packages/components/editor/editor.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useImperativeHandle, useRef } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport { IEditor } from \"./type\";\n\nconst Editor = (props: IEditor) => {\n\tconst {\n\t\tref,\n\t\twidth,\n\t\theight = \"10em\",\n\t\tplaceholder,\n\t\tautosize,\n\t\tborder = true,\n\t\trichPaste,\n\t\tcontrols = \"simple\",\n\t\tclassName,\n\t\tstyle,\n\t\tonInput,\n\t\tonPaste,\n\t\tonKeyDown,\n\t\t...restProps\n\t} = props;\n\tconst editorRef = useRef<HTMLDivElement>(null);\n\tconst controlBtnProps: IButton = {\n\t\tsquare: true,\n\t\tflat: true,\n\t\tsize: \"small\",\n\t};\n\n\tconst handlePaste = async (e) => {\n\t\tonPaste?.(e);\n\n\t\tif (richPaste) return;\n\t\te.preventDefault();\n\t\tconst text = e.clipboardData.getData(\"text/plain\");\n\t\texec(\"insertText\", false, text);\n\t};\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tswitch (e.key) {\n\t\t\tcase \"Tab\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertHTML\", false, \"	\");\n\t\t\t\tbreak;\n\t\t\tcase \"Enter\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertLineBreak\");\n\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\teditorRef.current.scrollBy({\n\t\t\t\t\ttop: 20,\n\t\t\t\t\tleft: -1000,\n\t\t\t\t});\n\n\t\t\t\tif (!autosize) return;\n\t\t\t\teditorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tinput: editorRef.current,\n\t\t\tsetValue(html) {\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\tconst safeHtml = xss(html, xssOptions);\n\n\t\t\t\teditorRef.current.innerHTML = safeHtml;\n\t\t\t},\n\t\t\tgetSafeValue() {\n\t\t\t\tconst html = editorRef.current?.innerHTML ?? \"\";\n\n\t\t\t\treturn xss(html, xssOptions);\n\t\t\t},\n\t\t};\n\t});\n\n\tconst handleInput = (e) => {\n\t\tlet html = editorRef.current?.innerHTML ?? \"\";\n\n\t\tif ([\"<br>\", \"\\n\"].includes(html) && editorRef.current) {\n\t\t\thtml = \"\";\n\t\t\teditorRef.current.innerHTML = html;\n\t\t}\n\n\t\tonInput?.(html, e);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-editor\", className, {\n\t\t\t\t\"i-editor-borderless\": !border,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\t[autosize ? \"minHeight\" : \"height\"]: height,\n\t\t\t\twidth,\n\t\t\t}}\n\t\t>\n\t\t\t{controls !== \"none\" && (\n\t\t\t\t<div className='i-editor-controls'>\n\t\t\t\t\t{getControls(controls, {\n\t\t\t\t\t\tcontrolBtnProps,\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tref={editorRef}\n\t\t\t\tclassName='i-editor-content'\n\t\t\t\tdata-placeholder={placeholder}\n\t\t\t\tcontentEditable\n\t\t\t\tonPaste={handlePaste}\n\t\t\t\tonInput={handleInput}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Editor;\n"],"mappings":";;;;;;;CAQA,MAAM,EACL,KACC,OACA,SAAK,QACL,aACA,UACA,SAAQ,MACR,WACA,WAAS,UACT,WACA,OACA,SACA,SACA,WACA,GAAA,cACG;CACJ,MAAI,YAAK,OAAA,KAAA;CACT,MAAM,kBAAmB;EACzB,QAAM;EACL,MAAM;EACN,MAAM;EACN;;AAGD,YAAM,EAAA;;AAGL,IAAE,gBAAa;AAEf,OAAK,cAAU,OADb,EAAA,cAAgB,QAAA,aAAA,CACW;;;AAI9B,cAAM,EAAA;;GAGL,KAAM;AACL,MAAA,gBAAU;AACT,SAAE,cAAgB,OAAA,QAAA;AAClB;GACD,KAAC;AACD,MAAA,gBAAY;AACX,SAAE,kBAAgB;;AAGlB,cAAK,QAAU,SAAS;KACxB,KAAA;KACC,MAAK;KACL,CAAA;;AAGD,cAAK,QAAU,MAAM,SAAA,GAAA,UAAA,QAAA,aAAA;;GAGtB,QACA;;;;AAKF,SAAA;GACC,OAAO,UAAA;GACN,SAAO,MAAA;AACP,QAAA,CAAA,UAAe,QAAA;IACd,MAAK,WAAU,IAAA,MAAS,WAAM;;;GAI/B,eAAC;eACa,UAAC,SAAA,aAAA,IAAA,WAAA;;GAIf;GACA;;EAGF,IAAK,OAAC,UAAgB,SAAK,aAAA;;AAG1B,UAAO;AACN,aAAS,QAAA,YAAA;;;;QAOX,qBAAA,OAAA;EACE,WAAA,WAAA,YAAA,WAAA,EACA,uBAAwB,CAAC,QACxB,CAAC;EACF,OAAE;GACF,GAAA;IACE,WAAO,cAAA,WAAA;GACR;GACA;YARH,CAUC,aAAA,UACE,oBAAA,OAAA;GAAA,WAAc;aACb,YAAa,UAAU,EACtB,iBACA,CAAA;GACC,CAAA,EAAA,oBAAA,OAAA;GAIH,KAAA;GACA,WAAK;GACL,oBAAa;GACb,iBAAA;GACA,SAAA;GACA,SAAS;GACT,WAAS;GACT,GAAA;GACC,CAAA,CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flex.js","names":[],"sources":["../../../../packages/components/flex/flex.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex: React.FC<IFlex> = (props: IFlex) => {\n\tconst {\n\t\tas: Component = \"div\" as any,\n\t\talign,\n\t\tjustify,\n\t\tdirection,\n\t\twrap,\n\t\tgap,\n\t\tcolumns,\n\t\tclassName,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\") return `repeat(${columns}, 1fr)`;\n\n\t\treturn columns;\n\t}, [columns]);\n\n\treturn (\n\t\t<Component\n\t\t\t{...restProps}\n\t\t\tstyle={{\n\t\t\t\talignItems: align,\n\t\t\t\tjustifyContent: justify,\n\t\t\t\tgap,\n\t\t\t\tflexDirection: direction,\n\t\t\t\tflexWrap: wrap === true ? \"wrap\" : wrap,\n\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t[columns ? \"grid\" : \"flex\"]: true,\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport default Flex;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"flex.js","names":[],"sources":["../../../../packages/components/flex/flex.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex: React.FC<IFlex> = (props: IFlex) => {\n\tconst {\n\t\tas: Component = \"div\" as any,\n\t\talign,\n\t\tjustify,\n\t\tdirection,\n\t\twrap,\n\t\tgap,\n\t\tcolumns,\n\t\tclassName,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\") return `repeat(${columns}, 1fr)`;\n\n\t\treturn columns;\n\t}, [columns]);\n\n\treturn (\n\t\t<Component\n\t\t\t{...restProps}\n\t\t\tstyle={{\n\t\t\t\talignItems: align,\n\t\t\t\tjustifyContent: justify,\n\t\t\t\tgap,\n\t\t\t\tflexDirection: direction,\n\t\t\t\tflexWrap: wrap === true ? \"wrap\" : wrap,\n\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t[columns ? \"grid\" : \"flex\"]: true,\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport default Flex;\n"],"mappings":";;;;;CAKA,MAAM,EACL,IAAK,YAAC,OACL,OACA,SACA,WACA,MACA,KACA,SACA,WACA,OACA,GAAA,cACG;;AAGJ,MAAK,CAAC,QAAA;;;IAKL,CAAA,QAAO,CAAA;QAGR,oBAAA,WAAA;EACE,GAAA;EACA,OAAI;GACJ,YAAO;GACN,gBAAY;GACZ;GACA,eAAG;GACH,UAAA,SAAe,OAAS,SAAA;GACxB,qBAAmB;GACnB,GAAA;GACA;EACD,WAAC,WAAA,WAAA,GACD,UAAW,SAAU,SAAC,MACrB,CAAC;EACD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Context from "./context.js";
|
|
2
2
|
import { Children, cloneElement, isValidElement, useContext, useEffect, useMemo, useState } from "react";
|
|
3
|
-
import PubSub from "pubsub-js";
|
|
3
|
+
import PubSub from "/Users/iann/codes/ioca-react/node_modules/.pnpm/pubsub-js@1.9.5/node_modules/pubsub-js/src/pubsub.js";
|
|
4
4
|
//#region packages/components/form/field.tsx
|
|
5
5
|
function Field(props) {
|
|
6
6
|
const { name, required, children } = props;
|
|
@@ -5,7 +5,7 @@ import useConfig from "./useConfig.js";
|
|
|
5
5
|
import classNames from "classnames";
|
|
6
6
|
import { useEffect, useMemo } from "react";
|
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
|
8
|
-
import PubSub from "pubsub-js";
|
|
8
|
+
import PubSub from "/Users/iann/codes/ioca-react/node_modules/.pnpm/pubsub-js@1.9.5/node_modules/pubsub-js/src/pubsub.js";
|
|
9
9
|
//#region packages/components/form/form.tsx
|
|
10
10
|
const Form = (props) => {
|
|
11
11
|
const { form = {}, rules, initialValues, style, className, width, columns, itemMaxWidth, gap = "1em", labelInline, labelWidth, labelRight, children, onKeyDown, onEnter, onChange, ...restProps } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","names":[],"sources":["../../../../packages/components/form/form.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport PubSub from \"pubsub-js\";\nimport { CSSProperties, useEffect, useMemo } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useConfig from \"./useConfig\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tcolumns,\n\t\titemMaxWidth,\n\t\tgap = \"1em\",\n\t\tlabelInline,\n\t\tlabelWidth,\n\t\tlabelRight,\n\t\tchildren,\n\t\tonKeyDown,\n\t\tonEnter,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(e, form.data, form);\n\t};\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns && !itemMaxWidth) return;\n\n\t\tif (itemMaxWidth) {\n\t\t\treturn `repeat(auto-fill, minmax(${itemMaxWidth}, 1fr))`;\n\t\t}\n\n\t\tif (typeof columns === \"number\") {\n\t\t\treturn `minmax(0, 1fr) `.repeat(columns);\n\t\t}\n\n\t\treturn columns;\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\tuseEffect(() => {\n\t\tPubSub.subscribe(`${form.id}:change`, (evt, v) => {\n\t\t\tonChange?.(v.name, v.value);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${form.id}:change`);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<Context value={form}>\n\t\t\t<form\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\tgap,\n\t\t\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t\t\t\"--label-width\": labelWidth,\n\t\t\t\t\t\t\"--label-align\": labelRight ? \"right\" : undefined,\n\t\t\t\t\t} as CSSProperties\n\t\t\t\t}\n\t\t\t\tclassName={classNames(\"i-form\", className, {\n\t\t\t\t\t\"i-form-inline\": labelInline,\n\t\t\t\t})}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\nForm.useConfig = useConfig;\n\nexport default Form;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"form.js","names":[],"sources":["../../../../packages/components/form/form.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport PubSub from \"pubsub-js\";\nimport { CSSProperties, useEffect, useMemo } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useConfig from \"./useConfig\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tcolumns,\n\t\titemMaxWidth,\n\t\tgap = \"1em\",\n\t\tlabelInline,\n\t\tlabelWidth,\n\t\tlabelRight,\n\t\tchildren,\n\t\tonKeyDown,\n\t\tonEnter,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(e, form.data, form);\n\t};\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns && !itemMaxWidth) return;\n\n\t\tif (itemMaxWidth) {\n\t\t\treturn `repeat(auto-fill, minmax(${itemMaxWidth}, 1fr))`;\n\t\t}\n\n\t\tif (typeof columns === \"number\") {\n\t\t\treturn `minmax(0, 1fr) `.repeat(columns);\n\t\t}\n\n\t\treturn columns;\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\tuseEffect(() => {\n\t\tPubSub.subscribe(`${form.id}:change`, (evt, v) => {\n\t\t\tonChange?.(v.name, v.value);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${form.id}:change`);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<Context value={form}>\n\t\t\t<form\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\tgap,\n\t\t\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t\t\t\"--label-width\": labelWidth,\n\t\t\t\t\t\t\"--label-align\": labelRight ? \"right\" : undefined,\n\t\t\t\t\t} as CSSProperties\n\t\t\t\t}\n\t\t\t\tclassName={classNames(\"i-form\", className, {\n\t\t\t\t\t\"i-form-inline\": labelInline,\n\t\t\t\t})}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\nForm.useConfig = useConfig;\n\nexport default Form;\n"],"mappings":";;;;;;;;;;CAUA,MAAM,EACL,OAAM,EAAA,EACL,OACA,eACA,OACA,WACA,OACA,SACA,cACA,MAAA,OACA,aACA,YACA,YACA,UACA,WACA,SACA,UACA,GAAA,cACG;;AAGJ,cAAM,EAAA;;;;;AAQN,MAAK,CAAC,WAAW,CAAC,aAAc;mBAG/B,QAAI,4BAAc,aAAA;kCAIlB,QAAI,kBAAoB,OAAS,QAAA;;IAIjC,CAAA,QAAO,CAAA;;AAGR,SAAA,OAAe,MAAC;GACf,MAAO,EAAA,GAAA,eAAa;GACnB;GACA,CAAA;IACC,CAAA,KAAA,CAAA;;AAGH,SAAA,UAAgB,GAAA,KAAA,GAAA,WAAA,KAAA,MAAA;AACf,cAAO,EAAA,MAAa,EAAA,MAAQ;IAC3B;;AAGD,UAAQ,YAAK,GAAA,KAAA,GAAA,SAAA;;IAEZ,EAAA,CAAA;QAGF,oBAAA,SAAA;EAAO,OAAA;YACL,oBAAA,QAAA;GACC,OACA;IACC,GAAA;IACC;IACA;IACA,qBAAG;IACH,iBAAA;IACA,iBAAiB,aAAU,UAAA,KAAA;IAC3B;GAEF,WAAA,WAAA,UAAA,WAAA,EACA,iBAAW,aACV,CAAC;GACF,WAAE;GACF,GAAA;GAED;GACE,CAAA;EACI,CAAA;;;AAKT,KAAK,QAAQ;AACb,KAAK,YAAQ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { uid } from "radash";
|
|
1
|
+
import { uid } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
|
|
2
2
|
import { useRef } from "react";
|
|
3
|
-
import PubSub from "pubsub-js";
|
|
3
|
+
import PubSub from "/Users/iann/codes/ioca-react/node_modules/.pnpm/pubsub-js@1.9.5/node_modules/pubsub-js/src/pubsub.js";
|
|
4
4
|
//#region packages/components/form/useForm.ts
|
|
5
5
|
var IFormInstance = class {
|
|
6
6
|
id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.js","names":[],"sources":["../../../../packages/components/icon/icon.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { cloneElement, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = (props: IIcon) => {\n\tconst {\n\t\tref,\n\t\ticon,\n\t\tsize = \"1.425em\",\n\t\trotate,\n\t\tstyle,\n\t\tclassName,\n\t\t...restProps\n\t} = props;\n\n\tif (!isValidElement(icon)) return icon;\n\n\tconst iconProps = {\n\t\tref,\n\t\tstyle: {\n\t\t\ttransform: rotate ? `rotate(${rotate}deg)` : undefined,\n\t\t\t...style,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t},\n\t\tclassName: classNames(\"i-icon\", className),\n\t\t...restProps,\n\t};\n\n\treturn cloneElement(icon, iconProps);\n};\n\nexport default Icon;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"icon.js","names":[],"sources":["../../../../packages/components/icon/icon.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { cloneElement, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = (props: IIcon) => {\n\tconst {\n\t\tref,\n\t\ticon,\n\t\tsize = \"1.425em\",\n\t\trotate,\n\t\tstyle,\n\t\tclassName,\n\t\t...restProps\n\t} = props;\n\n\tif (!isValidElement(icon)) return icon;\n\n\tconst iconProps = {\n\t\tref,\n\t\tstyle: {\n\t\t\ttransform: rotate ? `rotate(${rotate}deg)` : undefined,\n\t\t\t...style,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t},\n\t\tclassName: classNames(\"i-icon\", className),\n\t\t...restProps,\n\t};\n\n\treturn cloneElement(icon, iconProps);\n};\n\nexport default Icon;\n"],"mappings":";;;;CAKA,MAAM,EACL,KACC,MACA,OAAI,WACJ,QACA,OACA,WACA,GAAA,cACG;;;EAKJ;EACC,OAAG;GACH,WAAO,SAAA,UAAA,OAAA,QAAA,KAAA;GACN,GAAA;GACA,OAAG;GACH,QAAO;GACP;EACD,WAAC,WAAA,UAAA,UAAA;EACD,GAAA;EACA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","names":[],"sources":["../../../../packages/components/image/image.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { useIntersectionObserver, useReactive } from \"../../js/hooks\";\nimport usePreview from \"../../js/usePreview\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport List from \"./list\";\nimport type { CompositionImage, IImage } from \"./type\";\n\nconst Image = (props: IImage) => {\n\tconst {\n\t\tsrc,\n\t\tthumb,\n\t\tround,\n\t\tsize,\n\t\theight,\n\t\twidth,\n\t\tratio,\n\t\tinitSize,\n\t\tlazyload,\n\t\tfallback,\n\t\tfit,\n\t\tstyle,\n\t\tclassName,\n\t\tcover,\n\t\tcoverClass,\n\t\tusePreview: previewable,\n\t\tonLoad,\n\t\tonError,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{ status?: string }>({\n\t\tstatus: \"loading\",\n\t});\n\tconst ref = useRef<HTMLImageElement>(null);\n\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst preview = usePreview();\n\n\tconst handleError = (err) => {\n\t\tonError?.(err);\n\t\tstate.status = \"error\";\n\t};\n\n\tconst handleLoad = (e) => {\n\t\tonLoad?.(e);\n\t\tstate.status = undefined;\n\t};\n\n\tconst handleClick = (e) => {\n\t\tonClick?.(e);\n\n\t\tif (!previewable || !src) return;\n\n\t\tconst previewConfigs =\n\t\t\ttypeof previewable === \"boolean\" ? {} : previewable;\n\n\t\tpreview({\n\t\t\t...previewConfigs,\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tsrc,\n\t\t\t\t\ttype: \"IMAGE\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!src || typeof window === \"undefined\") return;\n\n\t\tconst img = ref.current;\n\t\tconst hasSrcAttr = img?.getAttribute(\"src\");\n\t\tconst canSyncStatus = Boolean(img && (!lazyload || hasSrcAttr));\n\t\tif (canSyncStatus && img?.complete) {\n\t\t\tstate.status = img.naturalWidth > 0 ? undefined : \"error\";\n\t\t}\n\n\t\tif (!ref.current?.complete && observe && lazyload) {\n\t\t\tstate.status = \"loading\";\n\t\t}\n\n\t\tif (!lazyload || !ref.current || !observe) return;\n\n\t\tobserve(ref.current, (tar: HTMLElement, visible: boolean) => {\n\t\t\tif (!visible) return;\n\n\t\t\ttar.setAttribute(\"src\", tar.dataset.src || \"\");\n\t\t\tunobserve(tar);\n\t\t});\n\n\t\treturn () => {\n\t\t\tref.current && unobserve(ref.current);\n\t\t};\n\t}, [src]);\n\n\trestProps[lazyload ? \"data-src\" : \"src\"] = thumb ?? src;\n\tconst iSize = state.status === \"loading\" ? initSize : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: width ?? size ?? iSize,\n\t\t\t\theight: height ?? size ?? iSize,\n\t\t\t\taspectRatio: ratio,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(\"i-image\", className, {\n\t\t\t\trounded: round,\n\t\t\t\t[`i-image-${state.status}`]: state.status,\n\t\t\t})}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{state.status === \"error\" ? (\n\t\t\t\t(fallback ?? null)\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{src && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={{ objectFit: fit }}\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\t\t\tonError={handleError}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{src && state.status === \"loading\" && <Loading absolute />}\n\n\t\t\t\t\t{cover && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\"i-image-cover\", coverClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cover}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nImage.List = List;\n\nexport default Image as CompositionImage;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"image.js","names":[],"sources":["../../../../packages/components/image/image.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { useIntersectionObserver, useReactive } from \"../../js/hooks\";\nimport usePreview from \"../../js/usePreview\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport List from \"./list\";\nimport type { CompositionImage, IImage } from \"./type\";\n\nconst Image = (props: IImage) => {\n\tconst {\n\t\tsrc,\n\t\tthumb,\n\t\tround,\n\t\tsize,\n\t\theight,\n\t\twidth,\n\t\tratio,\n\t\tinitSize,\n\t\tlazyload,\n\t\tfallback,\n\t\tfit,\n\t\tstyle,\n\t\tclassName,\n\t\tcover,\n\t\tcoverClass,\n\t\tusePreview: previewable,\n\t\tonLoad,\n\t\tonError,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{ status?: string }>({\n\t\tstatus: \"loading\",\n\t});\n\tconst ref = useRef<HTMLImageElement>(null);\n\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst preview = usePreview();\n\n\tconst handleError = (err) => {\n\t\tonError?.(err);\n\t\tstate.status = \"error\";\n\t};\n\n\tconst handleLoad = (e) => {\n\t\tonLoad?.(e);\n\t\tstate.status = undefined;\n\t};\n\n\tconst handleClick = (e) => {\n\t\tonClick?.(e);\n\n\t\tif (!previewable || !src) return;\n\n\t\tconst previewConfigs =\n\t\t\ttypeof previewable === \"boolean\" ? {} : previewable;\n\n\t\tpreview({\n\t\t\t...previewConfigs,\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tsrc,\n\t\t\t\t\ttype: \"IMAGE\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!src || typeof window === \"undefined\") return;\n\n\t\tconst img = ref.current;\n\t\tconst hasSrcAttr = img?.getAttribute(\"src\");\n\t\tconst canSyncStatus = Boolean(img && (!lazyload || hasSrcAttr));\n\t\tif (canSyncStatus && img?.complete) {\n\t\t\tstate.status = img.naturalWidth > 0 ? undefined : \"error\";\n\t\t}\n\n\t\tif (!ref.current?.complete && observe && lazyload) {\n\t\t\tstate.status = \"loading\";\n\t\t}\n\n\t\tif (!lazyload || !ref.current || !observe) return;\n\n\t\tobserve(ref.current, (tar: HTMLElement, visible: boolean) => {\n\t\t\tif (!visible) return;\n\n\t\t\ttar.setAttribute(\"src\", tar.dataset.src || \"\");\n\t\t\tunobserve(tar);\n\t\t});\n\n\t\treturn () => {\n\t\t\tref.current && unobserve(ref.current);\n\t\t};\n\t}, [src]);\n\n\trestProps[lazyload ? \"data-src\" : \"src\"] = thumb ?? src;\n\tconst iSize = state.status === \"loading\" ? initSize : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: width ?? size ?? iSize,\n\t\t\t\theight: height ?? size ?? iSize,\n\t\t\t\taspectRatio: ratio,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(\"i-image\", className, {\n\t\t\t\trounded: round,\n\t\t\t\t[`i-image-${state.status}`]: state.status,\n\t\t\t})}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{state.status === \"error\" ? (\n\t\t\t\t(fallback ?? null)\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{src && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={{ objectFit: fit }}\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\t\t\tonError={handleError}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{src && state.status === \"loading\" && <Loading absolute />}\n\n\t\t\t\t\t{cover && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\"i-image-cover\", coverClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cover}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nImage.List = List;\n\nexport default Image as CompositionImage;\n"],"mappings":";;;;;;;;;CASA,MAAM,EACL,KACC,OACA,OACA,MACA,QACA,OACA,OACA,UACA,UACA,UACA,KACA,OACA,WACA,OACA,YACA,YAAU,aACV,QACA,SACA,SACA,GAAA,cACG;6BAGJ,QAAM,WACL,CAAA;CACD,MAAE,MAAA,OAAA,KAAA;;CAGF,MAAM,UAAU,YAAY;;AAG5B,YAAM,IAAA;AACL,QAAA,SAAc;;;AAIf,WAAM,EAAA;AACL,QAAM,SAAK,KAAA;;;AAIZ,YAAM,EAAA;;;GAQL,GAHA,OAAM,gBAAe,YAAA,EAAA,GAAA;GAIpB,OAAG,CACH;IACC;IACC,MAAG;IACH,CACD;GACD,CAAC;;;AAIH,MAAA,CAAA,OAAa,OAAG,WAAA,YAAA;;EAGf,MAAM,aAAU,KAAO,aAAA,MAAA;AAEvB,MADsB,QAAE,QAAc,CAAA,YAAK,YAAA,IACtB,KAAC,SACtB,OAAI,SAAA,IAAgB,eAAe,IAAC,KAAA,IAAA;oDAIpC,OAAK,SAAW;;;AAMhB,OAAA,CAAA,QAAY;;AAGX,aAAI,IAAA;IACJ;;AAGD,OAAA,WAAa,UAAA,IAAA,QAAA;;IAEZ,CAAA,IAAA,CAAA;;CAGF,MAAA,QAAU,MAAU,WAAW,YAAY,WAAS,KAAA;QAGpD,oBAAA,OAAA;EACE,OAAA;GACA,OAAO,SAAA,QAAA;GACN,QAAO,UAAS,QAAQ;GACxB,aAAQ;GACR,GAAA;GACA;EACD,WAAC,WAAA,WAAA,WAAA;GACD,SAAU;IACT,WAAS,MAAK,WAAA,MAAA;GACd,CAAC;EACF,SAAE;YAEH,MAAA,WAAA,UACE,YAAa,OAEb,qBAAA,YAAA,EAAA,UAAA;GACC,OACC,oBAAA,OAAA;IACC;IACA,OAAK,EAAG,WAAA,KAAA;IACR,GAAA;IACA,QAAI;IACJ,SAAQ;IACR,CAAA;;YAMD,oBAAA,OAAA;IACC,WAAA,WAAA,iBAAA,WAAA;cAED;IACE,CAAA;GAEF,EAAA,CAAA;EAEF,CAAA"}
|
|
@@ -5,9 +5,8 @@ import Range from "./range.js";
|
|
|
5
5
|
import Textarea from "./textarea.js";
|
|
6
6
|
import classNames from "classnames";
|
|
7
7
|
import { useEffect, useMemo, useState } from "react";
|
|
8
|
+
import { VisibilityOffRound, VisibilityRound } from "@ricons/material";
|
|
8
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
-
import VisibilityOffRound from "@ricons/material/es/VisibilityOffRound.js";
|
|
10
|
-
import VisibilityRound from "@ricons/material/es/VisibilityRound.js";
|
|
11
10
|
//#region packages/components/input/input.tsx
|
|
12
11
|
const Input = ((props) => {
|
|
13
12
|
const { ref, type = "text", label, name, value = "", prepend, append, labelInline, className, status = "normal", message, tip, clear, width, hideVisible, border, underline, required, maxLength, onChange, onEnter, onClear, style, ...restProps } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","names":[],"sources":["../../../../packages/components/input/input.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"input.js","names":[],"sources":["../../../../packages/components/input/input.tsx"],"sourcesContent":["import { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport {\n\tChangeEvent,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n\ttype KeyboardEvent,\n} from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport Number from \"./number\";\nimport Range from \"./range\";\nimport Textarea from \"./textarea\";\nimport type { CompositionInput, IInput } from \"./type\";\n\nconst Input = ((props: IInput) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = \"\",\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tclear,\n\t\twidth,\n\t\thideVisible,\n\t\tborder,\n\t\tunderline,\n\t\trequired,\n\t\tmaxLength,\n\t\tonChange,\n\t\tonEnter,\n\t\tonClear,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst [inputValue, setInputValue] = useState(value);\n\tconst [inputType, setInputType] = useState(type);\n\tconst [visible, setVisible] = useState(false);\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst v = e.target.value;\n\n\t\tsetInputValue(v);\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e: KeyboardEvent<HTMLInputElement>) => {\n\t\te.code === \"Enter\" && onEnter?.(e);\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (type === \"password\" && !hideVisible) {\n\t\t\tsetVisible((v) => {\n\t\t\t\tconst next = !v;\n\t\t\t\tsetInputType(next ? \"text\" : \"password\");\n\t\t\t\treturn next;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst v = \"\";\n\t\tsetInputValue(v);\n\t\tonChange?.(v);\n\t\tonClear?.();\n\t};\n\n\tconst HelperIcon = useMemo(() => {\n\t\tif (type === \"password\") {\n\t\t\treturn visible ? <VisibilityRound /> : <VisibilityOffRound />;\n\t\t}\n\n\t\treturn undefined;\n\t}, [type, visible]);\n\n\tuseEffect(() => {\n\t\tsetInputValue(value);\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\ttype: inputType,\n\t\tname,\n\t\tvalue: inputValue,\n\t\tmaxLength,\n\t\tclassName: classNames(\"i-input\", `i-input-${type}`),\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\tuseEffect(() => {\n\t\tsetInputType(type);\n\t\tsetVisible(false);\n\t}, [type]);\n\n\tconst clearable = clear && inputValue;\n\tconst showHelper = type === \"password\" && !!inputValue;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={{ width, ...style }}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t\trequired={required}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t\t\"i-input-underline\": underline,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t{maxLength && inputValue?.length > 0 && (\n\t\t\t\t\t<span className='color-8 pr-4 font-sm'>\n\t\t\t\t\t\t{inputValue.length} / {maxLength}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive={!!clearable || showHelper}\n\t\t\t\t\ticon={HelperIcon}\n\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t/>\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n}) as CompositionInput;\n\nInput.Textarea = Textarea;\nInput.Number = Number;\nInput.Range = Range;\n\nexport default Input;\n"],"mappings":";;;;;;;;;;;CAiBA,MAAM,EACL,KACC,OAAG,QACH,OACA,MACA,QAAI,IACJ,SACA,QACA,aACA,WACA,SAAS,UACT,SACA,KACA,OACA,OACA,aACA,QACA,WACA,UACA,WACA,UACA,SACA,SACA,OACA,GAAA,cACG;;CAGJ,MAAM,CAAC,WAAW,gBAAgB,SAAE,KAAS;CAC7C,MAAM,CAAC,SAAS,cAAc,SAAI,MAAS;;EAG3C,MAAM,IAAA,EAAA,OAAc;;AAGnB,aAAA,GAAc,EAAE;;;AAIjB,IAAA,SAAM,WAAiB,UAAG,EAAA;;;AAI1B,MAAK,SAAC,cAAsB,CAAC,aAAG;AAC/B,eAAa,MAAC;IACb,MAAA,OAAc,CAAC;AACd,iBAAa,OAAE,SAAA,WAAA;AACf,WAAA;KACA;AACD;;;AAID,gBAAY,EAAA;AACZ,aAAA,EAAa;AACb,aAAW;;;AAIZ,MAAK,SAAC,WACL,QAAQ,UAAM,oBAAA,iBAAA,EAAW,CAAA,GAAA,oBAAA,oBAAA,EAAA,CAAA;IAIzB,CAAA,MAAO,QAAS,CAAA;;AAGjB,gBAAe,MAAC;IACf,CAAA,MAAA,CAAA;;EAGD;EACC,MAAG;EACH;EACA,OAAI;EACJ;EACA,WAAS,WAAA,WAAA,WAAA,OAAA;EACT,UAAU;EACV,WAAU;EACV,GAAA;EACA;;AAGD,eAAc,KAAE;AACf,aAAA,MAAiB;IACjB,CAAA,KAAA,CAAA;;CAGD,MAAM,aAAY,SAAS,cAAU,CAAA,CAAA;QAGrC,oBAAA,gBAAA;EACE;EACY;EACD;EACX,OAAA;GAAS;GAAE,GAAA;GAAS;EACpB,KAAK,WAAW;EACX;EACG;YAET,qBAAA,OAAA;GACE,WAAA,WAAA,gBAAA;KACA,WAAW,WAAa,WAAW;IAClC,sBAAsB,CAAC;IACvB,qBAAqB;IACrB,CAAC;aALJ;IAOC,WAAA,oBAAA,OAAA;KAAA,WAAA;eAAA;KAAA,CAAA;;2CAKE,qBAAA,QAAA;KAAA,WAAa;eAAb;MACC,WAAK;MAAW;MAAO;MACtB;;;KAIF,QAAA,CAAA,CAAA,aAAA;KACA,MAAM;KACN,SAAM;KACN,CAAA;;;;;IAGA;;EACG,CAAA;;;AAKR,MAAM,SAAS;AACf,MAAM,QAAQ"}
|
|
@@ -3,10 +3,8 @@ import helpericon_default from "../utils/helpericon/index.js";
|
|
|
3
3
|
import InputContainer from "./container.js";
|
|
4
4
|
import classNames from "classnames";
|
|
5
5
|
import { useEffect, useState } from "react";
|
|
6
|
+
import { KeyboardDoubleArrowUpRound, MinusRound, PlusRound } from "@ricons/material";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import MinusRound from "@ricons/material/es/MinusRound.js";
|
|
8
|
-
import PlusRound from "@ricons/material/es/PlusRound.js";
|
|
9
|
-
import KeyboardDoubleArrowUpRound from "@ricons/material/es/KeyboardDoubleArrowUpRound.js";
|
|
10
8
|
//#region packages/components/input/number.tsx
|
|
11
9
|
const Number = (props) => {
|
|
12
10
|
const { ref, label, name, value = "", labelInline, step = 1, min = -Infinity, max = Infinity, thousand, precision, type, className, width, status = "normal", append, border, prepend, disabled, message, tip, hideControl, showMax, style, onChange, onEnter, onInput, onBlur, ...restProps } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","names":[],"sources":["../../../../packages/components/input/number.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"number.js","names":[],"sources":["../../../../packages/components/input/number.tsx"],"sourcesContent":["import {\n\tKeyboardDoubleArrowUpRound,\n\tMinusRound,\n\tPlusRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport {\n\tChangeEvent,\n\tuseEffect,\n\tuseState,\n\ttype FocusEvent,\n\ttype KeyboardEvent,\n} from \"react\";\nimport \"../../css/input.css\";\nimport { clamp, formatNumber } from \"../../js/utils\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = (props: IInputNumber) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = \"\",\n\t\tlabelInline,\n\t\tstep = 1,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\tthousand,\n\t\tprecision,\n\t\ttype,\n\t\tclassName,\n\t\twidth,\n\t\tstatus = \"normal\",\n\t\tappend,\n\t\tborder,\n\t\tprepend,\n\t\tdisabled,\n\t\tmessage,\n\t\ttip,\n\t\thideControl,\n\t\tshowMax,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\tonInput,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst [inputValue, setInputValue] = useState<string>(\n\t\tvalue === undefined || value === null ? \"\" : String(value),\n\t);\n\n\tconst formatOut = (num: number) => {\n\t\tconst v = clamp(num, min, max);\n\t\tif (precision !== undefined)\n\t\t\treturn formatNumber(v, { precision, thousand });\n\t\tconst s = String(v);\n\t\tif (!thousand) return s;\n\t\tconst negative = s.startsWith(\"-\");\n\t\tconst body = negative ? s.slice(1) : s;\n\t\tconst [integer, decimal] = body.split(\".\");\n\t\tconst withThousand = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousand);\n\t\treturn decimal\n\t\t\t? `${negative ? \"-\" : \"\"}${withThousand}.${decimal}`\n\t\t\t: `${negative ? \"-\" : \"\"}${withThousand}`;\n\t};\n\n\tconst sanitizeNumberInput = (raw: string) => {\n\t\tconst hasMinus = raw.startsWith(\"-\");\n\t\tlet v = raw.replace(/[^\\d.]/g, \"\");\n\t\tif (hasMinus) v = `-${v}`;\n\n\t\tconst parts = v.split(\".\");\n\t\tif (parts.length > 1) {\n\t\t\tv = `${parts.shift()}.${parts.join(\"\")}`;\n\t\t}\n\n\t\treturn v;\n\t};\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\") return v.toString();\n\t\tif (!thousand) return v;\n\n\t\treturn v.split(thousand).join(\"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst { value } = e.target;\n\t\tconst v = sanitizeNumberInput(formatInputValue(value));\n\t\tconst isIntermediate =\n\t\t\tv === \"\" || v === \"-\" || v === \".\" || v === \"-.\" || v.endsWith(\".\");\n\n\t\tsetInputValue(v);\n\t\tif (isIntermediate) return;\n\n\t\tconst num = parseFloat(v);\n\t\tif (globalThis.Number.isNaN(num)) return;\n\n\t\tonChange?.(clamp(num, min, max), e);\n\t\tif (precision !== undefined) setInputValue(formatOut(num));\n\t};\n\n\tconst handleOperate = (param: number) => {\n\t\tconst value = parseFloat(formatInputValue(inputValue)) || 0; // 确保值为数字,默认值为 0\n\t\tconst result = value + param;\n\t\tsetInputValue(formatOut(result));\n\t\tonChange?.(clamp(result, min, max));\n\t};\n\n\tconst handleMax = () => {\n\t\tsetInputValue(formatOut(max));\n\t\tonChange?.(clamp(max, min, max));\n\t};\n\n\tconst handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n\t\tonBlur?.(e);\n\n\t\tconst v = sanitizeNumberInput(formatInputValue(inputValue));\n\t\tif (!v || v === \"-\" || v === \".\" || v === \"-.\") {\n\t\t\tsetInputValue(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst num = parseFloat(v);\n\t\tif (globalThis.Number.isNaN(num)) return;\n\n\t\tconst numValue = clamp(num, min, max);\n\t\tsetInputValue(formatOut(numValue));\n\t\tonChange?.(numValue, e);\n\t};\n\n\tuseEffect(() => {\n\t\tsetInputValue(\n\t\t\tvalue === undefined || value === null ? \"\" : String(value),\n\t\t);\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tdisabled,\n\t\tvalue: inputValue,\n\t\tclassName: \"i-input i-input-number\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: (e: KeyboardEvent<HTMLInputElement>) => {\n\t\t\te.code === \"Enter\" && onEnter?.(e);\n\t\t},\n\t\tonInput,\n\t\tonBlur: handleBlur,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={{ width, ...style }}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && !disabled && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(-step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t{!hideControl && !disabled && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{showMax && max && !disabled && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<KeyboardDoubleArrowUpRound />}\n\t\t\t\t\t\tonClick={handleMax}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Number;\n"],"mappings":"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"}
|
|
@@ -3,10 +3,8 @@ import helpericon_default from "../utils/helpericon/index.js";
|
|
|
3
3
|
import InputContainer from "./container.js";
|
|
4
4
|
import classNames from "classnames";
|
|
5
5
|
import { useEffect, useState } from "react";
|
|
6
|
+
import { MinusRound, PlusRound, SyncAltRound } from "@ricons/material";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import MinusRound from "@ricons/material/es/MinusRound.js";
|
|
8
|
-
import PlusRound from "@ricons/material/es/PlusRound.js";
|
|
9
|
-
import SyncAltRound from "@ricons/material/es/SyncAltRound.js";
|
|
10
8
|
//#region packages/components/input/range.tsx
|
|
11
9
|
const Range = (props) => {
|
|
12
10
|
const { label, name, value, labelInline, min = -Infinity, max = Infinity, type, className, status = "normal", message, tip, append, prepend, step = 1, width, thousand, precision, hideControl, placeholder, border, autoSwitch, onChange, onBlur, style, ...restProps } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range.js","names":[],"sources":["../../../../packages/components/input/range.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"range.js","names":[],"sources":["../../../../packages/components/input/range.tsx"],"sourcesContent":["import { MinusRound, PlusRound, SyncAltRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, MouseEvent, useEffect, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { clamp, formatNumber } from \"../../js/utils\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputRange } from \"./type\";\n\nconst Range = (props: IInputRange) => {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\tvalue,\n\t\tlabelInline,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tappend,\n\t\tprepend,\n\t\tstep = 1,\n\t\twidth,\n\t\tthousand,\n\t\tprecision,\n\t\thideControl,\n\t\tplaceholder,\n\t\tborder,\n\t\tautoSwitch,\n\t\tonChange,\n\t\tonBlur,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst [rangeValue, setRangeValue] = useState(value);\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>, i: number) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\t\tconst range = Array.isArray(rangeValue) ? [...rangeValue] : [];\n\n\t\trange[i] = v;\n\t\tsetRangeValue(range);\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleOperate = (\n\t\te: MouseEvent<Element>,\n\t\tparam: number,\n\t\ti: number\n\t) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst range = Array.isArray(rangeValue) ? [...rangeValue] : [];\n\t\tconst value = formatInputValue(range[i]) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\trange[i] = getFormatNumber(result);\n\n\t\tsetRangeValue(range);\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleSwitch = (e?: MouseEvent) => {\n\t\te?.preventDefault();\n\t\te?.stopPropagation();\n\t\tconst range = Array.isArray(rangeValue) ? [...rangeValue] : [];\n\t\t[range[0], range[1]] = [range[1], range[0]];\n\n\t\tsetRangeValue(range);\n\t\tonChange?.(range);\n\t};\n\n\tuseEffect(() => {\n\t\tsetRangeValue(value);\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tname,\n\t\tclassName: \"i-input i-input-number\",\n\t\t...restProps,\n\t};\n\n\tconst handleBlur = () => {\n\t\tif (!autoSwitch) return;\n\t\tconst range = Array.isArray(rangeValue) ? rangeValue : [];\n\n\t\tif (range.length < 2) return;\n\n\t\tconst [left, right] = range.map(Number);\n\t\tif (left > right) {\n\t\t\thandleSwitch();\n\t\t}\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={{ width, ...style }}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={rangeValue?.[0] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[0]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\tonChange={(e) => handleChange(e, 0)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\ticon={<SyncAltRound />}\n\t\t\t\t\tstyle={{ margin: 0 }}\n\t\t\t\t\tonClick={handleSwitch}\n\t\t\t\t/>\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={rangeValue?.[1] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[1]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\tonChange={(e) => handleChange(e, 1)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Range;\n"],"mappings":";;;;;;;;;CASA,MAAM,EACL,OACC,MACA,OACA,aACA,MAAA,WACA,MAAM,UACN,MACA,WACA,SAAS,UACT,SACA,KACA,QACA,SACA,OAAO,GACP,OACA,UACA,WACA,aACA,aACA,QACA,YACA,UACA,QACA,OACA,GAAA,cACG;;;gCAOJ,aAAM,GAAA;EAAA;EAAsB;EAAS,CAAA;;AAGrC,MAAK,CAAC,EAAA,QAAA;AACL,MAAI,OAAI,MAAS,YAAA,CAAA,SAAA,QAAA;;;;EAMlB,MAAM,EAAA,UAAa,EAAE;EACpB,MAAM,IAAE,iBAAkB,MAAA,QAAA,aAAA,GAAA,CAAA;EAC1B,MAAM,QAAI,MAAA,QAAiB,WAAM,GAAS,CAAC,GAAG,WAAW,GAAC,EAAA;;AAG1D,gBAAY,MAAA;AACZ,aAAA,OAAc,EAAM;;wBAIrB,GACC,OACA,MACG;AACH,IAAE,gBAAE;AACJ,IAAE,iBAAgB;;6BAIJ,eAAgB,EADhB,iBAAc,MAAA,GAAY,IAAI,KACL,MAAM,CAAA;;AAK7C,aAAA,OAAc,EAAM;;;AAIrB,KAAA,gBAAoB;AACnB,KAAG,iBAAgB;EACnB,MAAG,QAAA,MAAiB,QAAA,WAAA,GAAA,CAAA,GAAA,WAAA,GAAA,EAAA;AACpB,GAAA,MAAM,IAAK,MAAG,MAAM,CAAA,MAAQ,IAAA,MAAY,GAAG;;AAG3C,aAAA,MAAc;;;AAIf,gBAAe,MAAC;IACf,CAAA,MAAA,CAAA;;EAGD;EACC,WAAI;EACJ,GAAA;EACA;;AAGD,MAAK,CAAC,WAAY;EACjB,MAAK,QAAA,MAAY,QAAM,WAAA,GAAA,aAAA,EAAA;;;AAKvB,MAAA,OAAW,MACX,eAAW;;QAKZ,oBAAA,gBAAA;EACE;EACY;EACD;EACX,OAAA;GAAS;GAAE,GAAA;GAAS;EACpB,KAAK,WAAW;EACX;YAEN,qBAAA,OAAA;GACE,WAAA,WAAA,gBAAA;KACA,WAAW,WAAa,WAAW;IAClC,sBAAsB,CAAC;IACvB,CAAC;aAJJ;IAMC,WAAA,oBAAA,OAAA;KAAA,WAAA;eAAA;KAAA,CAAA;oBAGE,oBAAC,oBAAD;KACC,QAAA;KACA,MAAA,oBAAA,YAAA,EAAA,CAAA;KACA,UAAO,MAAA,cAAa,GAAA,CAAA,MAAA,EAAA;KACpB,CAAA;;KAID,OAAA,aAAA,MAAA;KACA,aAAO,cAAoB;KAC3B,GAAA;KACA,QAAI;KACJ,WAAQ,MAAA,aAAU,GAAA,EAAA;KAClB,CAAA;oBAGA,oBAAC,oBAAD;KACC,QAAA;KACA,MAAA,oBAAA,WAAA,EAAA,CAAA;KACA,UAAO,MAAS,cAAG,GAAA,MAAA,EAAA;KACnB,CAAA;IAEF,oBAAC,oBAAD;KACC,QAAA;KACA,MAAA,oBAAA,cAAA,EAAA,CAAA;KACA,OAAO,EAAA,QAAA,GAAa;KACpB,SAAS;KACT,CAAA;IACA,CAAA,eACA,oBAAC,oBAAD;KACC,QAAA;KACA,MAAA,oBAAA,YAAA,EAAA,CAAA;KACA,UAAO,MAAA,cAAa,GAAA,CAAA,MAAA,EAAA;KACpB,CAAA;;KAID,OAAA,aAAA,MAAA;KACA,aAAO,cAAoB;KAC3B,GAAA;KACA,QAAI;KACJ,WAAQ,MAAA,aAAU,GAAA,EAAA;KAClB,CAAA;oBAGA,oBAAC,oBAAD;KACC,QAAA;KACA,MAAA,oBAAA,WAAA,EAAA,CAAA;KACA,UAAO,MAAS,cAAG,GAAA,MAAA,EAAA;KACnB,CAAA;;;;;IAID;;EACG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","names":[],"sources":["../../../../packages/components/input/textarea.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport {\n\tChangeEvent,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n\ttype KeyboardEvent,\n} from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = (props: ITextarea) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = \"\",\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tautoSize,\n\t\tborder,\n\t\twidth,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst [textareaValue, setTextareaValue] = useState(value);\n\tconst refTextarea = useRef<HTMLTextAreaElement>(null);\n\n\tconst handleChange = (\n\t\te: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n\t) => {\n\t\tconst v = e.target.value;\n\n\t\tsetTextareaValue(v);\n\n\t\tconst ta = refTextarea.current as HTMLElement;\n\t\tif (autoSize && ta) {\n\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t}\n\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n\t\tif (e.code !== \"Enter\") return;\n\n\t\te.stopPropagation();\n\t\tonEnter?.(e);\n\t};\n\n\tuseEffect(() => {\n\t\tsetTextareaValue(value);\n\t}, [value]);\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tinput: refTextarea.current,\n\t\t};\n\t});\n\n\tconst inputProps = {\n\t\tref: refTextarea,\n\t\tname,\n\t\tvalue: textareaValue,\n\t\tclassName: \"i-input i-textarea\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={{ width, ...style }}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<textarea {...inputProps} />\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Textarea;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"textarea.js","names":[],"sources":["../../../../packages/components/input/textarea.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport {\n\tChangeEvent,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n\ttype KeyboardEvent,\n} from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = (props: ITextarea) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = \"\",\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tautoSize,\n\t\tborder,\n\t\twidth,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst [textareaValue, setTextareaValue] = useState(value);\n\tconst refTextarea = useRef<HTMLTextAreaElement>(null);\n\n\tconst handleChange = (\n\t\te: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n\t) => {\n\t\tconst v = e.target.value;\n\n\t\tsetTextareaValue(v);\n\n\t\tconst ta = refTextarea.current as HTMLElement;\n\t\tif (autoSize && ta) {\n\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t}\n\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n\t\tif (e.code !== \"Enter\") return;\n\n\t\te.stopPropagation();\n\t\tonEnter?.(e);\n\t};\n\n\tuseEffect(() => {\n\t\tsetTextareaValue(value);\n\t}, [value]);\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tinput: refTextarea.current,\n\t\t};\n\t});\n\n\tconst inputProps = {\n\t\tref: refTextarea,\n\t\tname,\n\t\tvalue: textareaValue,\n\t\tclassName: \"i-input i-textarea\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={{ width, ...style }}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<textarea {...inputProps} />\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Textarea;\n"],"mappings":";;;;;;CAaA,MAAM,EACL,KACC,OACA,MACA,QAAI,IACJ,aACA,WACA,SAAS,UACT,SACA,KACA,UACA,QACA,OACA,OACA,UACA,SACA,GAAA,cACG;;CAGJ,MAAM,cAAc,OAAsB,KAAS;uBAGnD,MACI;EACH,MAAI,IAAA,EAAA,OAAA;;;AAKJ,MAAA,YAAW,GACX,IAAI,MAAA,SAAe,GAAC,GAAA,aAAA;;;;AAOrB,MAAK,EAAC,SAAA,QAAmB;;AAGxB,YAAE,EAAA;;;AAIH,mBAAgB,MAAA;IACf,CAAA,MAAA,CAAA;;AAGD,SAAA,EACC,OAAO,YAAA,SACN;GACA;;EAGF,KAAM;EACL;EACA,OAAI;EACJ,WAAO;EACP,UAAU;EACV,WAAU;EACV,GAAA;EACA;QAGD,oBAAA,gBAAA;EACE;EACY;EACD;EACX,OAAA;GAAS;GAAE,GAAA;GAAS;EACpB,KAAK,WAAW;EACX;YAEN,oBAAA,OAAA;GACE,WAAA,WAAA,gBAAA;KACA,WAAW,WAAa,WAAW;IAClC,sBAAsB,CAAC;IACvB,CAAC;aAEH,oBAAA,YAAA,EAAA,GAAA,YAAA,CAAA;GACE,CAAA;EACG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","names":[],"sources":["../../../../packages/components/list/list.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, cloneElement } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\n\nconst List = (props: IList) => {\n\tconst { label, type, border, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\tconst { type, props: nodeProps } = node;\n\n\t\t\t\tif (type === Item) {\n\t\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t\t...nodeProps,\n\t\t\t\t\t\ttype: props.type,\n\t\t\t\t\t\tborder,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn node;\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Item = Item;\n\nexport default List;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","names":[],"sources":["../../../../packages/components/list/list.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, cloneElement } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\n\nconst List = (props: IList) => {\n\tconst { label, type, border, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\tconst { type, props: nodeProps } = node;\n\n\t\t\t\tif (type === Item) {\n\t\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t\t...nodeProps,\n\t\t\t\t\t\ttype: props.type,\n\t\t\t\t\t\tborder,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn node;\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Item = Item;\n\nexport default List;\n"],"mappings":";;;;;;CAMA,MAAM,EAAA,OAAQ,MAAO,QAAS,WAAC,UAAA,GAAA,cAAA;QAG9B,oBAAA,MAAA;EAAA,WAAO,WAAA,UAAA,UAAA;EAAA,GAAA;YACL,SAAG,IAAW,WAAW,MAAU,MAAA;GAClC,MAAA,cACA,OAAM,UAAY,aAAA,MAAA,EAAA,GAAA;;qBAKlB,QAAQ,aAAW,MAAA;IAClB,OAAO;IACN,GAAA;IACA,MAAG,MAAS;IACZ;IACA,CAAA;;IAIF;EACC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading.js","names":[],"sources":["../../../../packages/components/loading/loading.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"loading.js","names":[],"sources":["../../../../packages/components/loading/loading.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n"],"mappings":";;;;CAIA,MAAM,EAAA,MAAS,MAAE,MAAO,UAAa,OAAA,WAAA,GAAA,cACpC;QAGA,qBAAA,OAAA;EACE,WAAA,WACA,uBACC,EACA,UACC,EACD,UACA;EACD,OAAC;GACD,GAAA;GACC,OAAG,WAAK,IAAA;GACR;EACD,GAAC;YAZH,CAcC,QACE,oBAAA,OAAA;GACC,OAAA;GACA,QAAO;GACP,QAAO;GACP,SAAQ;GACR,OAAA;GACA,WAAO;GACP,OAAA,EACA,UAAO,MACN;aAEF,oBAAA,UAAA;IACE,IAAA;IACA,IAAG;IACH,GAAE;IACF,MAAK;IACL,aAAU;IACV,eAAc;IACd,iBAAe;IACf,kBAAiB;IACjB,CAAA;GACA,CAAA,EAAA,KAIE"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useReactive } from "../../js/hooks.js";
|
|
2
2
|
import classNames from "classnames";
|
|
3
|
-
import { uid } from "radash";
|
|
3
|
+
import { uid } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
|
|
4
4
|
import { isValidElement, useEffect, useRef } from "react";
|
|
5
5
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
import { createRoot } from "react-dom/client";
|
|
6
|
+
import { createRoot } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.js";
|
|
7
7
|
//#region packages/components/message/message.tsx
|
|
8
8
|
const AlignMap = {
|
|
9
9
|
left: "flex-start",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","names":[],"sources":["../../../../packages/components/message/message.tsx"],"sourcesContent":["import { useReactive } from \"../../js/hooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { ReactNode, isValidElement, useEffect, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport \"./index.css\";\nimport type { IMessage, IMessageItem, THeights, TMessageQueue } from \"./type\";\n\nconst AlignMap = {\n\tleft: \"flex-start\",\n\tcenter: \"center\",\n\tright: \"flex-end\",\n};\n\nconst GlobalConfig = {\n\talign: \"center\",\n\toffset: \"12px\",\n\tgap: 12,\n};\n\nconst ItemDefaultConfig = {\n\tduration: 3000,\n\tclosable: true,\n\tactive: false,\n};\n\nconst handler: {\n\toneInstance: null | IMessage;\n\tcallout: (item: IMessage) => void;\n\tclose: () => void;\n} = {\n\toneInstance: null,\n\tcallout(item: IMessage) {},\n\tclose() {},\n};\n\nconst queue: TMessageQueue = {\n\tleft: [],\n\tcenter: [],\n\tright: [],\n};\nconst heights: THeights = {\n\tleft: [],\n\tcenter: [],\n\tright: [],\n};\n\nconst MessageItem = function ({\n\tref,\n\tactive,\n\tcontent,\n\ttop,\n\tclassName,\n\tstyle,\n\tonClick,\n}: IMessageItem) {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-message\", className, {\n\t\t\t\t\"i-message-active\": active,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\ttop,\n\t\t\t}}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t{content}\n\t\t</div>\n\t);\n};\n\nfunction Messages() {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<{\n\t\ttops: THeights;\n\t\titems: TMessageQueue;\n\t}>({\n\t\titems: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t\ttops: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t});\n\tconst offsetTop = {\n\t\tleft: 0,\n\t\tcenter: 0,\n\t\tright: 0,\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(handler, {\n\t\t\tcallout: function (item: IMessage) {\n\t\t\t\tconst { align = \"center\", unshift, onShow } = item;\n\t\t\t\tconst size = queue[align][unshift ? \"unshift\" : \"push\"](item);\n\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\titem.close = this.close.bind(item);\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst h = ref.current?.offsetHeight || 0;\n\n\t\t\t\t\tqueue[align][unshift ? 0 : size - 1].active = true;\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\theights[align][unshift ? \"unshift\" : \"push\"](h);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tonShow?.();\n\t\t\t\t}, 12);\n\n\t\t\t\tif (item.duration !== 0) {\n\t\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\t\tthis.close.call(item);\n\t\t\t\t\t}, item.duration);\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: function () {\n\t\t\t\tconst item = this as IMessage;\n\t\t\t\tconst { align = \"center\", onHide } = item;\n\t\t\t\tconst index = queue[align].findIndex((i) => i.id === item.id);\n\t\t\t\tif (index < 0) return;\n\n\t\t\t\tqueue[align][index].active = false;\n\t\t\t\tstate.items[align] = [...queue[align]];\n\n\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\tconst index = queue[align].findIndex(\n\t\t\t\t\t\t(i) => i.id === item.id\n\t\t\t\t\t);\n\n\t\t\t\t\tqueue[align].splice(index, 1);\n\t\t\t\t\theights[align].splice(index, 1);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\titem.timer && clearTimeout(item.timer);\n\t\t\t\t\tonHide?.();\n\t\t\t\t}, 240);\n\t\t\t},\n\t\t});\n\t}, []);\n\n\tconst renderItems = (item, i) => {\n\t\tif (!item) return <></>;\n\n\t\tconst { id, active, content, align = \"center\", className } = item;\n\t\toffsetTop[align] += state.tops[align][i - 1] || 0;\n\t\tconst top = GlobalConfig.gap * i + offsetTop[align];\n\n\t\treturn (\n\t\t\t<MessageItem\n\t\t\t\tkey={id}\n\t\t\t\tref={ref}\n\t\t\t\tactive={active}\n\t\t\t\tcontent={content}\n\t\t\t\ttop={top}\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{ alignSelf: AlignMap[align] }}\n\t\t\t\tonClick={handler.close.bind(item)}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className='i-messages'>\n\t\t\t{state.items.left.map(renderItems)}\n\t\t\t{state.items.center.map(renderItems)}\n\t\t\t{state.items.right.map(renderItems)}\n\t\t</div>\n\t);\n}\n\nexport function setMessageConfig(config: IMessage) {\n\tObject.assign(GlobalConfig, config);\n}\n\nfunction message(config: IMessage | ReactNode) {\n\tif (\n\t\t[\"string\", \"number\"].includes(typeof config) ||\n\t\tisValidElement(config)\n\t) {\n\t\tconfig = { content: config as ReactNode };\n\t}\n\n\tconfig = Object.assign(\n\t\t{ id: uid(7) },\n\t\tItemDefaultConfig,\n\t\tconfig as IMessage\n\t);\n\n\thandler.callout(config as IMessage);\n\n\treturn {\n\t\tinstance: config,\n\t\tclose: handler.close.bind(config),\n\t};\n}\n\nfunction createContainer() {\n\tif (typeof document === \"undefined\") return null;\n\tconst container = document.createElement(\"div\");\n\tcontainer.dataset.id = \"messages\";\n\tdocument.body.append(container);\n\treturn container;\n}\n\nmessage.error = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-error\",\n\t});\n};\n\nmessage.success = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-success\",\n\t});\n};\n\nmessage.warning = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-warning\",\n\t});\n};\n\nmessage.info = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-blue\",\n\t});\n};\n\nmessage.one = (config: IMessage) => {\n\tconst o = handler.oneInstance;\n\n\tif (o) {\n\t\tif (o.active && o.duration !== 0) {\n\t\t\tclearTimeout(o.timer);\n\t\t\to.timer = setTimeout(() => {\n\t\t\t\to.close?.();\n\t\t\t}, o.duration);\n\t\t} else {\n\t\t\thandler.callout(o);\n\t\t}\n\t} else {\n\t\tconst { instance } = message(config);\n\t\thandler.oneInstance = instance;\n\t}\n};\n\n// 初始化消息容器\nlet container: HTMLElement | null = null;\nlet root: any = null;\n\nif (typeof window !== \"undefined\") {\n\tcontainer = createContainer();\n\tif (container) {\n\t\troot = createRoot(container);\n\t\troot.render(<Messages />);\n\t}\n}\n\nexport default message;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"message.js","names":[],"sources":["../../../../packages/components/message/message.tsx"],"sourcesContent":["import { useReactive } from \"../../js/hooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { ReactNode, isValidElement, useEffect, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport \"./index.css\";\nimport type { IMessage, IMessageItem, THeights, TMessageQueue } from \"./type\";\n\nconst AlignMap = {\n\tleft: \"flex-start\",\n\tcenter: \"center\",\n\tright: \"flex-end\",\n};\n\nconst GlobalConfig = {\n\talign: \"center\",\n\toffset: \"12px\",\n\tgap: 12,\n};\n\nconst ItemDefaultConfig = {\n\tduration: 3000,\n\tclosable: true,\n\tactive: false,\n};\n\nconst handler: {\n\toneInstance: null | IMessage;\n\tcallout: (item: IMessage) => void;\n\tclose: () => void;\n} = {\n\toneInstance: null,\n\tcallout(item: IMessage) {},\n\tclose() {},\n};\n\nconst queue: TMessageQueue = {\n\tleft: [],\n\tcenter: [],\n\tright: [],\n};\nconst heights: THeights = {\n\tleft: [],\n\tcenter: [],\n\tright: [],\n};\n\nconst MessageItem = function ({\n\tref,\n\tactive,\n\tcontent,\n\ttop,\n\tclassName,\n\tstyle,\n\tonClick,\n}: IMessageItem) {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-message\", className, {\n\t\t\t\t\"i-message-active\": active,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\ttop,\n\t\t\t}}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t{content}\n\t\t</div>\n\t);\n};\n\nfunction Messages() {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<{\n\t\ttops: THeights;\n\t\titems: TMessageQueue;\n\t}>({\n\t\titems: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t\ttops: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t});\n\tconst offsetTop = {\n\t\tleft: 0,\n\t\tcenter: 0,\n\t\tright: 0,\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(handler, {\n\t\t\tcallout: function (item: IMessage) {\n\t\t\t\tconst { align = \"center\", unshift, onShow } = item;\n\t\t\t\tconst size = queue[align][unshift ? \"unshift\" : \"push\"](item);\n\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\titem.close = this.close.bind(item);\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst h = ref.current?.offsetHeight || 0;\n\n\t\t\t\t\tqueue[align][unshift ? 0 : size - 1].active = true;\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\theights[align][unshift ? \"unshift\" : \"push\"](h);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tonShow?.();\n\t\t\t\t}, 12);\n\n\t\t\t\tif (item.duration !== 0) {\n\t\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\t\tthis.close.call(item);\n\t\t\t\t\t}, item.duration);\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: function () {\n\t\t\t\tconst item = this as IMessage;\n\t\t\t\tconst { align = \"center\", onHide } = item;\n\t\t\t\tconst index = queue[align].findIndex((i) => i.id === item.id);\n\t\t\t\tif (index < 0) return;\n\n\t\t\t\tqueue[align][index].active = false;\n\t\t\t\tstate.items[align] = [...queue[align]];\n\n\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\tconst index = queue[align].findIndex(\n\t\t\t\t\t\t(i) => i.id === item.id\n\t\t\t\t\t);\n\n\t\t\t\t\tqueue[align].splice(index, 1);\n\t\t\t\t\theights[align].splice(index, 1);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\titem.timer && clearTimeout(item.timer);\n\t\t\t\t\tonHide?.();\n\t\t\t\t}, 240);\n\t\t\t},\n\t\t});\n\t}, []);\n\n\tconst renderItems = (item, i) => {\n\t\tif (!item) return <></>;\n\n\t\tconst { id, active, content, align = \"center\", className } = item;\n\t\toffsetTop[align] += state.tops[align][i - 1] || 0;\n\t\tconst top = GlobalConfig.gap * i + offsetTop[align];\n\n\t\treturn (\n\t\t\t<MessageItem\n\t\t\t\tkey={id}\n\t\t\t\tref={ref}\n\t\t\t\tactive={active}\n\t\t\t\tcontent={content}\n\t\t\t\ttop={top}\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{ alignSelf: AlignMap[align] }}\n\t\t\t\tonClick={handler.close.bind(item)}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className='i-messages'>\n\t\t\t{state.items.left.map(renderItems)}\n\t\t\t{state.items.center.map(renderItems)}\n\t\t\t{state.items.right.map(renderItems)}\n\t\t</div>\n\t);\n}\n\nexport function setMessageConfig(config: IMessage) {\n\tObject.assign(GlobalConfig, config);\n}\n\nfunction message(config: IMessage | ReactNode) {\n\tif (\n\t\t[\"string\", \"number\"].includes(typeof config) ||\n\t\tisValidElement(config)\n\t) {\n\t\tconfig = { content: config as ReactNode };\n\t}\n\n\tconfig = Object.assign(\n\t\t{ id: uid(7) },\n\t\tItemDefaultConfig,\n\t\tconfig as IMessage\n\t);\n\n\thandler.callout(config as IMessage);\n\n\treturn {\n\t\tinstance: config,\n\t\tclose: handler.close.bind(config),\n\t};\n}\n\nfunction createContainer() {\n\tif (typeof document === \"undefined\") return null;\n\tconst container = document.createElement(\"div\");\n\tcontainer.dataset.id = \"messages\";\n\tdocument.body.append(container);\n\treturn container;\n}\n\nmessage.error = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-error\",\n\t});\n};\n\nmessage.success = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-success\",\n\t});\n};\n\nmessage.warning = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-warning\",\n\t});\n};\n\nmessage.info = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-blue\",\n\t});\n};\n\nmessage.one = (config: IMessage) => {\n\tconst o = handler.oneInstance;\n\n\tif (o) {\n\t\tif (o.active && o.duration !== 0) {\n\t\t\tclearTimeout(o.timer);\n\t\t\to.timer = setTimeout(() => {\n\t\t\t\to.close?.();\n\t\t\t}, o.duration);\n\t\t} else {\n\t\t\thandler.callout(o);\n\t\t}\n\t} else {\n\t\tconst { instance } = message(config);\n\t\thandler.oneInstance = instance;\n\t}\n};\n\n// 初始化消息容器\nlet container: HTMLElement | null = null;\nlet root: any = null;\n\nif (typeof window !== \"undefined\") {\n\tcontainer = createContainer();\n\tif (container) {\n\t\troot = createRoot(container);\n\t\troot.render(<Messages />);\n\t}\n}\n\nexport default message;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","names":[],"sources":["../../../../packages/components/modal/content.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport Button from \"../button\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IModalContent } from \"./type\";\n\nexport default function Content(props: IModalContent) {\n\tconst {\n\t\ttitle,\n\t\tfooter,\n\t\thideCloseButton,\n\t\tfooterLeft,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\tonOk,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst handleOk = async () => {\n\t\tconst ret = await onOk?.();\n\n\t\tif (ret === false) return;\n\n\t\tonClose?.();\n\t};\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign(\n\t\t\t{\n\t\t\t\tchildren: \"确定\",\n\t\t\t\tonClick: handleOk,\n\t\t\t},\n\t\t\tokButtonProps\n\t\t);\n\t\tconst propsCancel = Object.assign(\n\t\t\t{\n\t\t\t\tsecondary: true,\n\t\t\t\tchildren: \"关闭\",\n\t\t\t\tonClick: onClose,\n\t\t\t},\n\t\t\tcancelButtonProps\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{footerLeft}\n\t\t\t\t<Button {...propsOk} />\n\t\t\t\t<Button {...propsCancel} />\n\t\t\t</>\n\t\t);\n\t}, [footer, okButtonProps, cancelButtonProps]);\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t<header className='i-modal-header'>\n\t\t\t\t\t{title && <b>{title}</b>}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\tclassName='i-modal-close'\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<div className='i-modal-content'>{children}</div>\n\n\t\t\t<footer className='i-modal-footer'>{renderFooter}</footer>\n\t\t</>\n\t);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"content.js","names":[],"sources":["../../../../packages/components/modal/content.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport Button from \"../button\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IModalContent } from \"./type\";\n\nexport default function Content(props: IModalContent) {\n\tconst {\n\t\ttitle,\n\t\tfooter,\n\t\thideCloseButton,\n\t\tfooterLeft,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\tonOk,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst handleOk = async () => {\n\t\tconst ret = await onOk?.();\n\n\t\tif (ret === false) return;\n\n\t\tonClose?.();\n\t};\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign(\n\t\t\t{\n\t\t\t\tchildren: \"确定\",\n\t\t\t\tonClick: handleOk,\n\t\t\t},\n\t\t\tokButtonProps\n\t\t);\n\t\tconst propsCancel = Object.assign(\n\t\t\t{\n\t\t\t\tsecondary: true,\n\t\t\t\tchildren: \"关闭\",\n\t\t\t\tonClick: onClose,\n\t\t\t},\n\t\t\tcancelButtonProps\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{footerLeft}\n\t\t\t\t<Button {...propsOk} />\n\t\t\t\t<Button {...propsCancel} />\n\t\t\t</>\n\t\t);\n\t}, [footer, okButtonProps, cancelButtonProps]);\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t<header className='i-modal-header'>\n\t\t\t\t\t{title && <b>{title}</b>}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\tclassName='i-modal-close'\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<div className='i-modal-content'>{children}</div>\n\n\t\t\t<footer className='i-modal-footer'>{renderFooter}</footer>\n\t\t</>\n\t);\n}\n"],"mappings":";;;;;;CAMA,MAAO,EACN,OACC,QACA,iBACA,YACA,eACA,mBACA,UACA,MACA,YACA;CACD,MAAI,aAAK,SAAA,CAAA;;MAGH,MAAW,QAAU,KAAA,MAAA;;;;AAQ3B,MAAK,UAAC,WAAe,KAAW,QAAG;gCAGlC;GACC,UAAA;GACC,SAAS;GACT,EACD,cACA;EACD,MAAC,cAAA,OAAA,OACD;GACC,WAAA;GACC,UAAU;GACV,SAAS;GACT,EACD,kBACA;SAGD,qBAAA,YAAA,EAAA,UAAA;GACE;GACA,oBAAC,gBAAD,EAAC,GAAU,SAAA,CAAA;GACX,oBAAC,gBAAD,EAAQ,GAAI,aAAU,CAAA;GACrB,EAAA,CAAA;IAEF;EAAA;EAAA;EAAA;EAAA,CAAA;QAGF,qBAAA,YAAA,EAAA,UAAA;EACE,cACC,qBAAA,UAAA;GAAA,WAAc;aAAd,CACC,SAAO,oBAAA,KAAA,EAAA,UAAA,OAAa,CAAA,EAAA,oBAAA,oBAAA;IAGnB,QAAA,CAAA;IACA,WAAS;IACT,SAAS;IACT,CAAA,CACA;;;;;;;;;;EAMF,EAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","names":[],"sources":["../../../../packages/components/modal/modal.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useKeydown } from \"../../js/hooks\";\nimport Content from \"./content\";\nimport ModalContext from \"./context\";\nimport \"./index.css\";\nimport { CompositionModal, IModal } from \"./type\";\nimport useModal from \"./useModal\";\n\nfunction Modal(props: IModal) {\n\tconst {\n\t\tvisible,\n\t\ttitle,\n\t\tfooter,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tclosable = true,\n\t\thideBackdrop,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tdisableEsc,\n\t\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\thideShadow,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tkeepDOM,\n\t\tfooterLeft,\n\t\tonClick,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\tonOk,\n\t\t...restProps\n\t} = props;\n\n\tconst [show, setShow] = useState(visible);\n\tconst [active, setActive] = useState(false);\n\tconst [bounced, setBounced] = useState(false);\n\tconst [mounted, setMounted] = useState(false);\n\tconst toggable = useRef(true);\n\n\tconst handleShow = async () => {\n\t\tif (!toggable.current) return;\n\n\t\t(!keepDOM || !show) && setShow(true);\n\t\ttoggable.current = false;\n\n\t\tconst timer = setTimeout(() => {\n\t\t\tsetActive(true);\n\t\t\tonVisibleChange?.(true);\n\t\t\ttoggable.current = true;\n\t\t}, 64);\n\n\t\treturn () => clearTimeout(timer);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tif (!closable) {\n\t\t\tsetBounced(true);\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tsetBounced(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t}, 400);\n\t\t\treturn () => clearTimeout(timer);\n\t\t}\n\n\t\tsetActive(false);\n\t\tconst timer = setTimeout(() => {\n\t\t\t!keepDOM && setShow(false);\n\t\t\ttoggable.current = true;\n\t\t\tonVisibleChange?.(false);\n\t\t\tonClose?.();\n\t\t}, 240);\n\n\t\treturn () => clearTimeout(timer);\n\t};\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{ disabled: disableEsc }\n\t);\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tuseEffect(() => {\n\t\tsetMounted(true);\n\t}, []);\n\n\tconst handleClick = () => {\n\t\tif (typeof document === \"undefined\") return;\n\t\tdocument.documentElement.click();\n\t};\n\n\tif (!show || !mounted) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-modal-container\",\n\t\t\t\t{\n\t\t\t\t\t\"i-modal-backdrop\": !hideBackdrop,\n\t\t\t\t\t\"i-modal-customized\": customized,\n\t\t\t\t\t\"i-modal-active\": active,\n\t\t\t\t\tfixed,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\tonClick={handleBackdropClick}\n\t\t\taria-modal='true'\n\t\t\tinert={!active}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-modal\", {\n\t\t\t\t\tbounced,\n\t\t\t\t\tshadow: !hideShadow,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\thandleClick();\n\t\t\t\t\tonClick?.(e);\n\t\t\t\t}}\n\t\t\t\trole='dialog'\n\t\t\t\taria-labelledby={title ? \"modal-title\" : undefined}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<ModalContext.Provider value={true}>\n\t\t\t\t\t{customized && children}\n\n\t\t\t\t\t{!customized && (\n\t\t\t\t\t\t<Content\n\t\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\t\thideCloseButton={hideCloseButton}\n\t\t\t\t\t\t\tfooter={footer}\n\t\t\t\t\t\t\tokButtonProps={okButtonProps}\n\t\t\t\t\t\t\tcancelButtonProps={cancelButtonProps}\n\t\t\t\t\t\t\tchildren={children}\n\t\t\t\t\t\t\tfooterLeft={footerLeft}\n\t\t\t\t\t\t\tonOk={onOk}\n\t\t\t\t\t\t\tonClose={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</ModalContext.Provider>\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument?.body ?? null\n\t);\n}\n\nModal.useModal = useModal;\n\nexport default Modal as CompositionModal;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"modal.js","names":[],"sources":["../../../../packages/components/modal/modal.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useKeydown } from \"../../js/hooks\";\nimport Content from \"./content\";\nimport ModalContext from \"./context\";\nimport \"./index.css\";\nimport { CompositionModal, IModal } from \"./type\";\nimport useModal from \"./useModal\";\n\nfunction Modal(props: IModal) {\n\tconst {\n\t\tvisible,\n\t\ttitle,\n\t\tfooter,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tclosable = true,\n\t\thideBackdrop,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tdisableEsc,\n\t\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\thideShadow,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tkeepDOM,\n\t\tfooterLeft,\n\t\tonClick,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\tonOk,\n\t\t...restProps\n\t} = props;\n\n\tconst [show, setShow] = useState(visible);\n\tconst [active, setActive] = useState(false);\n\tconst [bounced, setBounced] = useState(false);\n\tconst [mounted, setMounted] = useState(false);\n\tconst toggable = useRef(true);\n\n\tconst handleShow = async () => {\n\t\tif (!toggable.current) return;\n\n\t\t(!keepDOM || !show) && setShow(true);\n\t\ttoggable.current = false;\n\n\t\tconst timer = setTimeout(() => {\n\t\t\tsetActive(true);\n\t\t\tonVisibleChange?.(true);\n\t\t\ttoggable.current = true;\n\t\t}, 64);\n\n\t\treturn () => clearTimeout(timer);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tif (!closable) {\n\t\t\tsetBounced(true);\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tsetBounced(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t}, 400);\n\t\t\treturn () => clearTimeout(timer);\n\t\t}\n\n\t\tsetActive(false);\n\t\tconst timer = setTimeout(() => {\n\t\t\t!keepDOM && setShow(false);\n\t\t\ttoggable.current = true;\n\t\t\tonVisibleChange?.(false);\n\t\t\tonClose?.();\n\t\t}, 240);\n\n\t\treturn () => clearTimeout(timer);\n\t};\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{ disabled: disableEsc }\n\t);\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tuseEffect(() => {\n\t\tsetMounted(true);\n\t}, []);\n\n\tconst handleClick = () => {\n\t\tif (typeof document === \"undefined\") return;\n\t\tdocument.documentElement.click();\n\t};\n\n\tif (!show || !mounted) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-modal-container\",\n\t\t\t\t{\n\t\t\t\t\t\"i-modal-backdrop\": !hideBackdrop,\n\t\t\t\t\t\"i-modal-customized\": customized,\n\t\t\t\t\t\"i-modal-active\": active,\n\t\t\t\t\tfixed,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\tonClick={handleBackdropClick}\n\t\t\taria-modal='true'\n\t\t\tinert={!active}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-modal\", {\n\t\t\t\t\tbounced,\n\t\t\t\t\tshadow: !hideShadow,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\thandleClick();\n\t\t\t\t\tonClick?.(e);\n\t\t\t\t}}\n\t\t\t\trole='dialog'\n\t\t\t\taria-labelledby={title ? \"modal-title\" : undefined}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<ModalContext.Provider value={true}>\n\t\t\t\t\t{customized && children}\n\n\t\t\t\t\t{!customized && (\n\t\t\t\t\t\t<Content\n\t\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\t\thideCloseButton={hideCloseButton}\n\t\t\t\t\t\t\tfooter={footer}\n\t\t\t\t\t\t\tokButtonProps={okButtonProps}\n\t\t\t\t\t\t\tcancelButtonProps={cancelButtonProps}\n\t\t\t\t\t\t\tchildren={children}\n\t\t\t\t\t\t\tfooterLeft={footerLeft}\n\t\t\t\t\t\t\tonOk={onOk}\n\t\t\t\t\t\t\tonClose={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</ModalContext.Provider>\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument?.body ?? null\n\t);\n}\n\nModal.useModal = useModal;\n\nexport default Modal as CompositionModal;\n"],"mappings":";;;;;;;;;;CAUA,MAAA,EACC,SACC,OACA,QACA,eACA,mBACA,WAAA,MACA,cACA,mBAAY,MACZ,iBACA,YACA,OACA,QACA,YACA,OACA,YACA,UACA,OACA,WACA,SACA,YACA,SACA,iBACA,SACA,MACA,GAAA,cACG;;CAGJ,MAAM,CAAC,QAAM,aAAW,SAAS,MAAQ;CACzC,MAAM,CAAC,SAAQ,cAAa,SAAS,MAAM;CAC3C,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,WAAU,OAAA,KAAa;;AAG7B,MAAK,CAAC,SAAA,QAAkB;;AAGvB,WAAS,UAAU;;AAGnB,aAAW,KAAG;AACb,qBAAe,KAAA;AACf,YAAA,UAAkB;KAClB,GAAA;;;;AAMF,MAAK,CAAC,SAAA,QAAkB;AACvB,WAAK,UAAS;;AAGd,cAAK,KAAU;GACd,MAAA,QAAW,iBAAK;AAChB,eAAY,MAAE;AACb,aAAA,UAAiB;MACjB,IAAA;AACD,gBAAO,aAAA,MAAA;;;EAIR,MAAA,QAAU,iBAAM;AAChB,IAAA,WAAa,QAAC,MAAa;AAC1B,YAAS,UAAU;AACnB,qBAAkB,MAAK;AACvB,cAAA;KACA,IAAA;;;;AAMF,sBAAM,YAA2B;;aAIjC,MAAA;AACE,MAAI,EAAE,SAAA,YAAA,CAAA,QAAA;AACN,cAAY;IAEb,EAAC,UAAA,YAAA,CACD;;AAGD,YAAW,YAAK,GAAA,YAAA;IACf,CAAA,QAAU,CAAA;;AAGX,aAAY,KAAI;IACf,EAAA,CAAA;;AAGD,MAAK,OAAC,aAAmB,YAAC;AACzB,WAAI,gBAAqB,OAAA;;;qBAM1B,oBAAA,OAAA;EACE,WAAA,WACA,qBACC;GACA,oBAAA,CAAA;GACC,sBAAqB;GACrB,kBAAS;GACT;GACA,EACD,UACA;EACA;EACD,SAAO;EACP,cAAS;EACT,OAAK,CAAA;YAEN,oBAAA,OAAA;GACE,WAAA,WAAA,WAAA;IACA;IACC,QAAO,CAAA;IACP,CAAA;GACD,OAAE;IACF;IACC;IACA;GACD,UAAC,MAAA;AACD,MAAA,iBAAgB;AACf,iBAAE;AACF,cAAA,EAAY;;GAEb,MAAC;GACD,mBAAY,QAAA,gBAAA,KAAA;GACZ,GAAI;aAEL,qBAAA,aAAA,UAAA;IAAA,OAAA;cAAA,CACE,cAAa,UAAA,CAAA,cAGZ,oBAAC,SAAD;KACC;KACY;KACZ;KACc;KACC;KACf;KACU;KACV;KACA,SAAM;KACN,CAAA,CAED;;GACA,CAAA;EACE,CAAA,EACN,UAAM,QAAA,KACN"}
|