@ioca/react 1.3.3 → 1.3.5
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/components/affix/affix.js +63 -0
- package/lib/cjs/components/affix/affix.js.map +1 -0
- package/lib/cjs/components/affix/index.js +10 -0
- package/lib/cjs/components/affix/index.js.map +1 -0
- package/lib/cjs/components/affix/totop.js +18 -0
- package/lib/cjs/components/affix/totop.js.map +1 -0
- package/lib/cjs/components/badge/badge.js +17 -0
- package/lib/cjs/components/badge/badge.js.map +1 -0
- package/lib/cjs/components/badge/index.js +10 -0
- package/lib/cjs/components/badge/index.js.map +1 -0
- package/lib/cjs/components/button/button.js +62 -0
- package/lib/cjs/components/button/button.js.map +1 -0
- package/lib/cjs/components/button/group.js +25 -0
- package/lib/cjs/components/button/group.js.map +1 -0
- package/lib/cjs/components/button/index.js +13 -0
- package/lib/cjs/components/button/index.js.map +1 -0
- package/lib/cjs/components/button/toggle.js +50 -0
- package/lib/cjs/components/button/toggle.js.map +1 -0
- package/lib/cjs/components/card/card.js +17 -0
- package/lib/cjs/components/card/card.js.map +1 -0
- package/lib/cjs/components/card/index.js +10 -0
- package/lib/cjs/components/card/index.js.map +1 -0
- package/lib/cjs/components/checkbox/checkbox.js +46 -0
- package/lib/cjs/components/checkbox/checkbox.js.map +1 -0
- package/lib/cjs/components/checkbox/index.js +10 -0
- package/lib/cjs/components/checkbox/index.js.map +1 -0
- package/lib/cjs/components/checkbox/item.js +40 -0
- package/lib/cjs/components/checkbox/item.js.map +1 -0
- package/lib/cjs/components/collapse/collapse.js +78 -0
- package/lib/cjs/components/collapse/collapse.js.map +1 -0
- package/lib/cjs/components/collapse/index.js +10 -0
- package/lib/cjs/components/collapse/index.js.map +1 -0
- package/lib/cjs/components/collapse/item.js +12 -0
- package/lib/cjs/components/collapse/item.js.map +1 -0
- package/lib/cjs/components/datagrid/cell.js +27 -0
- package/lib/cjs/components/datagrid/cell.js.map +1 -0
- package/lib/cjs/components/datagrid/datagrid.js +117 -0
- package/lib/cjs/components/datagrid/datagrid.js.map +1 -0
- package/lib/cjs/components/datagrid/index.js +10 -0
- package/lib/cjs/components/datagrid/index.js.map +1 -0
- package/lib/cjs/components/datagrid/resize.js +45 -0
- package/lib/cjs/components/datagrid/resize.js.map +1 -0
- package/lib/cjs/components/datagrid/row.js +37 -0
- package/lib/cjs/components/datagrid/row.js.map +1 -0
- package/lib/cjs/components/datagrid/sorter.js +17 -0
- package/lib/cjs/components/datagrid/sorter.js.map +1 -0
- package/lib/cjs/components/description/description.js +32 -0
- package/lib/cjs/components/description/description.js.map +1 -0
- package/lib/cjs/components/description/index.js +10 -0
- package/lib/cjs/components/description/index.js.map +1 -0
- package/lib/cjs/components/drawer/drawer.js +66 -0
- package/lib/cjs/components/drawer/drawer.js.map +1 -0
- package/lib/cjs/components/drawer/index.js +10 -0
- package/lib/cjs/components/drawer/index.js.map +1 -0
- package/lib/cjs/components/dropdown/dropdown.js +17 -0
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -0
- package/lib/cjs/components/dropdown/index.js +10 -0
- package/lib/cjs/components/dropdown/index.js.map +1 -0
- package/lib/cjs/components/dropdown/item.js +22 -0
- package/lib/cjs/components/dropdown/item.js.map +1 -0
- package/lib/cjs/components/editor/controls.js +87 -0
- package/lib/cjs/components/editor/controls.js.map +1 -0
- package/lib/cjs/components/editor/editor.js +83 -0
- package/lib/cjs/components/editor/editor.js.map +1 -0
- package/lib/cjs/components/editor/index.js +10 -0
- package/lib/cjs/components/editor/index.js.map +1 -0
- package/lib/cjs/components/flex/flex.js +32 -0
- package/lib/cjs/components/flex/flex.js.map +1 -0
- package/lib/cjs/components/flex/index.js +10 -0
- package/lib/cjs/components/flex/index.js.map +1 -0
- package/lib/cjs/components/form/context.js +10 -0
- package/lib/cjs/components/form/context.js.map +1 -0
- package/lib/cjs/components/form/field.js +77 -0
- package/lib/cjs/components/form/field.js.map +1 -0
- package/lib/cjs/components/form/form.js +57 -0
- package/lib/cjs/components/form/form.js.map +1 -0
- package/lib/cjs/components/form/index.js +10 -0
- package/lib/cjs/components/form/index.js.map +1 -0
- package/lib/cjs/components/form/useForm.js +130 -0
- package/lib/cjs/components/form/useForm.js.map +1 -0
- package/lib/cjs/components/icon/icon.js +27 -0
- package/lib/cjs/components/icon/icon.js.map +1 -0
- package/lib/cjs/components/icon/index.js +10 -0
- package/lib/cjs/components/icon/index.js.map +1 -0
- package/lib/cjs/components/image/image.js +76 -0
- package/lib/cjs/components/image/image.js.map +1 -0
- package/lib/cjs/components/image/index.js +11 -0
- package/lib/cjs/components/image/index.js.map +1 -0
- package/lib/cjs/components/image/list.js +47 -0
- package/lib/cjs/components/image/list.js.map +1 -0
- package/lib/cjs/components/input/container.js +18 -0
- package/lib/cjs/components/input/container.js.map +1 -0
- package/lib/cjs/components/input/index.js +15 -0
- package/lib/cjs/components/input/index.js.map +1 -0
- package/lib/cjs/components/input/input.js +67 -0
- package/lib/cjs/components/input/input.js.map +1 -0
- package/lib/cjs/components/input/number.js +58 -0
- package/lib/cjs/components/input/number.js.map +1 -0
- package/lib/cjs/components/input/range.js +71 -0
- package/lib/cjs/components/input/range.js.map +1 -0
- package/lib/cjs/components/input/textarea.js +51 -0
- package/lib/cjs/components/input/textarea.js.map +1 -0
- package/lib/cjs/components/list/index.js +10 -0
- package/lib/cjs/components/list/index.js.map +1 -0
- package/lib/cjs/components/list/item.js +18 -0
- package/lib/cjs/components/list/item.js.map +1 -0
- package/lib/cjs/components/list/list.js +28 -0
- package/lib/cjs/components/list/list.js.map +1 -0
- package/lib/cjs/components/loading/index.js +10 -0
- package/lib/cjs/components/loading/index.js.map +1 -0
- package/lib/cjs/components/loading/loading.js +21 -0
- package/lib/cjs/components/loading/loading.js.map +1 -0
- package/lib/cjs/components/message/index.js +10 -0
- package/lib/cjs/components/message/index.js.map +1 -0
- package/lib/cjs/components/message/message.js +178 -0
- package/lib/cjs/components/message/message.js.map +1 -0
- package/lib/cjs/components/modal/hookModal.js +31 -0
- package/lib/cjs/components/modal/hookModal.js.map +1 -0
- package/lib/cjs/components/modal/index.js +11 -0
- package/lib/cjs/components/modal/index.js.map +1 -0
- package/lib/cjs/components/modal/modal.js +108 -0
- package/lib/cjs/components/modal/modal.js.map +1 -0
- package/lib/cjs/components/modal/useModal.js +38 -0
- package/lib/cjs/components/modal/useModal.js.map +1 -0
- package/lib/cjs/components/pagination/index.js +10 -0
- package/lib/cjs/components/pagination/index.js.map +1 -0
- package/lib/cjs/components/pagination/page.js +28 -0
- package/lib/cjs/components/pagination/page.js.map +1 -0
- package/lib/cjs/components/pagination/pagination.js +48 -0
- package/lib/cjs/components/pagination/pagination.js.map +1 -0
- package/lib/cjs/components/picker/colors/footer.js +44 -0
- package/lib/cjs/components/picker/colors/footer.js.map +1 -0
- package/lib/cjs/components/picker/colors/handle.js +14 -0
- package/lib/cjs/components/picker/colors/handle.js.map +1 -0
- package/lib/cjs/components/picker/colors/index.js +61 -0
- package/lib/cjs/components/picker/colors/index.js.map +1 -0
- package/lib/cjs/components/picker/dates/dates.js +50 -0
- package/lib/cjs/components/picker/dates/dates.js.map +1 -0
- package/lib/cjs/components/picker/dates/index.js +66 -0
- package/lib/cjs/components/picker/dates/index.js.map +1 -0
- package/lib/cjs/components/picker/dates/panel.js +81 -0
- package/lib/cjs/components/picker/dates/panel.js.map +1 -0
- package/lib/cjs/components/picker/time/index.js +50 -0
- package/lib/cjs/components/picker/time/index.js.map +1 -0
- package/lib/cjs/components/picker/time/item.js +19 -0
- package/lib/cjs/components/picker/time/item.js.map +1 -0
- package/lib/cjs/components/picker/time/panel.js +87 -0
- package/lib/cjs/components/picker/time/panel.js.map +1 -0
- package/lib/cjs/components/popconfirm/index.js +10 -0
- package/lib/cjs/components/popconfirm/index.js.map +1 -0
- package/lib/cjs/components/popconfirm/popconfirm.js +58 -0
- package/lib/cjs/components/popconfirm/popconfirm.js.map +1 -0
- package/lib/cjs/components/popup/content.js +44 -0
- package/lib/cjs/components/popup/content.js.map +1 -0
- package/lib/cjs/components/popup/index.js +10 -0
- package/lib/cjs/components/popup/index.js.map +1 -0
- package/lib/cjs/components/popup/popup.js +223 -0
- package/lib/cjs/components/popup/popup.js.map +1 -0
- package/lib/cjs/components/progress/circle.js +17 -0
- package/lib/cjs/components/progress/circle.js.map +1 -0
- package/lib/cjs/components/progress/index.js +10 -0
- package/lib/cjs/components/progress/index.js.map +1 -0
- package/lib/cjs/components/progress/line.js +18 -0
- package/lib/cjs/components/progress/line.js.map +1 -0
- package/lib/cjs/components/progress/progress.js +87 -0
- package/lib/cjs/components/progress/progress.js.map +1 -0
- package/lib/cjs/components/radio/index.js +10 -0
- package/lib/cjs/components/radio/index.js.map +1 -0
- package/lib/cjs/components/radio/item.js +21 -0
- package/lib/cjs/components/radio/item.js.map +1 -0
- package/lib/cjs/components/radio/radio.js +39 -0
- package/lib/cjs/components/radio/radio.js.map +1 -0
- package/lib/cjs/components/resizable/index.js +10 -0
- package/lib/cjs/components/resizable/index.js.map +1 -0
- package/lib/cjs/components/resizable/resizable.js +65 -0
- package/lib/cjs/components/resizable/resizable.js.map +1 -0
- package/lib/cjs/components/select/index.js +10 -0
- package/lib/cjs/components/select/index.js.map +1 -0
- package/lib/cjs/components/select/options.js +51 -0
- package/lib/cjs/components/select/options.js.map +1 -0
- package/lib/cjs/components/select/select.js +97 -0
- package/lib/cjs/components/select/select.js.map +1 -0
- package/lib/cjs/components/step/divider.js +12 -0
- package/lib/cjs/components/step/divider.js.map +1 -0
- package/lib/cjs/components/step/index.js +10 -0
- package/lib/cjs/components/step/index.js.map +1 -0
- package/lib/cjs/components/step/item.js +26 -0
- package/lib/cjs/components/step/item.js.map +1 -0
- package/lib/cjs/components/step/step.js +40 -0
- package/lib/cjs/components/step/step.js.map +1 -0
- package/lib/cjs/components/swiper/index.js +10 -0
- package/lib/cjs/components/swiper/index.js.map +1 -0
- package/lib/cjs/components/swiper/item.js +29 -0
- package/lib/cjs/components/swiper/item.js.map +1 -0
- package/lib/cjs/components/swiper/swiper.js +238 -0
- package/lib/cjs/components/swiper/swiper.js.map +1 -0
- package/lib/cjs/components/tabs/index.js +10 -0
- package/lib/cjs/components/tabs/index.js.map +1 -0
- package/lib/cjs/components/tabs/item.js +12 -0
- package/lib/cjs/components/tabs/item.js.map +1 -0
- package/lib/cjs/components/tabs/tabs.js +215 -0
- package/lib/cjs/components/tabs/tabs.js.map +1 -0
- package/lib/cjs/components/tag/index.js +10 -0
- package/lib/cjs/components/tag/index.js.map +1 -0
- package/lib/cjs/components/tag/tag.js +22 -0
- package/lib/cjs/components/tag/tag.js.map +1 -0
- package/lib/cjs/components/text/highlight.js +32 -0
- package/lib/cjs/components/text/highlight.js.map +1 -0
- package/lib/cjs/components/text/index.js +15 -0
- package/lib/cjs/components/text/index.js.map +1 -0
- package/lib/cjs/components/text/number.js +31 -0
- package/lib/cjs/components/text/number.js.map +1 -0
- package/lib/cjs/components/text/text.js +32 -0
- package/lib/cjs/components/text/text.js.map +1 -0
- package/lib/cjs/components/text/time.js +24 -0
- package/lib/cjs/components/text/time.js.map +1 -0
- package/lib/cjs/components/tree/index.js +10 -0
- package/lib/cjs/components/tree/index.js.map +1 -0
- package/lib/cjs/components/tree/item.js +76 -0
- package/lib/cjs/components/tree/item.js.map +1 -0
- package/lib/cjs/components/tree/tree.js +136 -0
- package/lib/cjs/components/tree/tree.js.map +1 -0
- package/lib/cjs/components/upload/index.js +10 -0
- package/lib/cjs/components/upload/index.js.map +1 -0
- package/lib/cjs/components/upload/renderFile.js +66 -0
- package/lib/cjs/components/upload/renderFile.js.map +1 -0
- package/lib/cjs/components/upload/upload.js +127 -0
- package/lib/cjs/components/upload/upload.js.map +1 -0
- package/lib/cjs/components/utils/empty/index.js +15 -0
- package/lib/cjs/components/utils/empty/index.js.map +1 -0
- package/lib/cjs/components/utils/helpericon/helpericon.js +28 -0
- package/lib/cjs/components/utils/helpericon/helpericon.js.map +1 -0
- package/lib/cjs/components/utils/helpericon/index.js +10 -0
- package/lib/cjs/components/utils/helpericon/index.js.map +1 -0
- package/lib/cjs/components/video/index.js +10 -0
- package/lib/cjs/components/video/index.js.map +1 -0
- package/lib/cjs/components/video/video.js +175 -0
- package/lib/cjs/components/video/video.js.map +1 -0
- package/lib/cjs/index.js +89 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/js/hooks.js +115 -0
- package/lib/cjs/js/hooks.js.map +1 -0
- package/lib/cjs/js/usePreview/content.js +148 -0
- package/lib/cjs/js/usePreview/content.js.map +1 -0
- package/lib/cjs/js/usePreview/index.js +27 -0
- package/lib/cjs/js/usePreview/index.js.map +1 -0
- package/lib/cjs/js/usePreview/renderFile.js +24 -0
- package/lib/cjs/js/usePreview/renderFile.js.map +1 -0
- package/lib/cjs/js/usePreview/type.js +13 -0
- package/lib/cjs/js/usePreview/type.js.map +1 -0
- package/lib/cjs/js/useRipple/index.js +47 -0
- package/lib/cjs/js/useRipple/index.js.map +1 -0
- package/lib/cjs/js/utils.js +281 -0
- package/lib/cjs/js/utils.js.map +1 -0
- package/lib/css/index.css +1 -1
- package/lib/css/index.css.map +1 -1
- package/lib/es/components/affix/affix.js +59 -0
- package/lib/es/components/affix/affix.js.map +1 -0
- package/lib/es/components/affix/index.js +6 -0
- package/lib/{components/badge → es/components/affix}/index.js.map +1 -1
- package/lib/es/components/affix/totop.js +14 -0
- package/lib/es/components/affix/totop.js.map +1 -0
- package/lib/es/components/badge/badge.js +13 -0
- package/lib/es/components/badge/badge.js.map +1 -0
- package/lib/es/components/badge/index.js +6 -0
- package/lib/{components/checkbox → es/components/badge}/index.js.map +1 -1
- package/lib/es/components/button/button.js +58 -0
- package/lib/es/components/button/button.js.map +1 -0
- package/lib/es/components/button/group.js +21 -0
- package/lib/es/components/button/group.js.map +1 -0
- package/lib/es/components/button/index.js +9 -0
- package/lib/es/components/button/index.js.map +1 -0
- package/lib/es/components/button/toggle.js +46 -0
- package/lib/es/components/button/toggle.js.map +1 -0
- package/lib/es/components/card/card.js +13 -0
- package/lib/es/components/card/card.js.map +1 -0
- package/lib/es/components/card/index.js +6 -0
- package/lib/{components → es/components}/card/index.js.map +1 -1
- package/lib/es/components/checkbox/checkbox.js +42 -0
- package/lib/es/components/checkbox/checkbox.js.map +1 -0
- package/lib/es/components/checkbox/index.js +6 -0
- package/lib/{components/affix → es/components/checkbox}/index.js.map +1 -1
- package/lib/es/components/checkbox/item.js +36 -0
- package/lib/es/components/checkbox/item.js.map +1 -0
- package/lib/es/components/collapse/collapse.js +74 -0
- package/lib/es/components/collapse/collapse.js.map +1 -0
- package/lib/es/components/collapse/index.js +6 -0
- package/lib/es/components/collapse/index.js.map +1 -0
- package/lib/es/components/collapse/item.js +8 -0
- package/lib/es/components/collapse/item.js.map +1 -0
- package/lib/es/components/datagrid/cell.js +24 -0
- package/lib/es/components/datagrid/cell.js.map +1 -0
- package/lib/es/components/datagrid/datagrid.js +113 -0
- package/lib/es/components/datagrid/datagrid.js.map +1 -0
- package/lib/es/components/datagrid/index.js +6 -0
- package/lib/es/components/datagrid/index.js.map +1 -0
- package/lib/es/components/datagrid/resize.js +41 -0
- package/lib/es/components/datagrid/resize.js.map +1 -0
- package/lib/es/components/datagrid/row.js +32 -0
- package/lib/es/components/datagrid/row.js.map +1 -0
- package/lib/es/components/datagrid/sorter.js +13 -0
- package/lib/es/components/datagrid/sorter.js.map +1 -0
- package/lib/es/components/description/description.js +28 -0
- package/lib/es/components/description/description.js.map +1 -0
- package/lib/es/components/description/index.js +6 -0
- package/lib/es/components/description/index.js.map +1 -0
- package/lib/es/components/drawer/drawer.js +62 -0
- package/lib/es/components/drawer/drawer.js.map +1 -0
- package/lib/es/components/drawer/index.js +6 -0
- package/lib/es/components/drawer/index.js.map +1 -0
- package/lib/es/components/dropdown/dropdown.js +13 -0
- package/lib/es/components/dropdown/dropdown.js.map +1 -0
- package/lib/es/components/dropdown/index.js +6 -0
- package/lib/es/components/dropdown/index.js.map +1 -0
- package/lib/es/components/dropdown/item.js +18 -0
- package/lib/es/components/dropdown/item.js.map +1 -0
- package/lib/es/components/editor/controls.js +81 -0
- package/lib/es/components/editor/controls.js.map +1 -0
- package/lib/es/components/editor/editor.js +79 -0
- package/lib/es/components/editor/editor.js.map +1 -0
- package/lib/es/components/editor/index.js +6 -0
- package/lib/es/components/editor/index.js.map +1 -0
- package/lib/es/components/flex/flex.js +28 -0
- package/lib/es/components/flex/flex.js.map +1 -0
- package/lib/es/components/flex/index.js +6 -0
- package/lib/es/components/flex/index.js.map +1 -0
- package/lib/es/components/form/context.js +6 -0
- package/lib/es/components/form/context.js.map +1 -0
- package/lib/es/components/form/field.js +73 -0
- package/lib/es/components/form/field.js.map +1 -0
- package/lib/es/components/form/form.js +53 -0
- package/lib/es/components/form/form.js.map +1 -0
- package/lib/es/components/form/index.js +6 -0
- package/lib/es/components/form/index.js.map +1 -0
- package/lib/es/components/form/useForm.js +125 -0
- package/lib/es/components/form/useForm.js.map +1 -0
- package/lib/es/components/icon/icon.js +23 -0
- package/lib/es/components/icon/icon.js.map +1 -0
- package/lib/es/components/icon/index.js +6 -0
- package/lib/es/components/icon/index.js.map +1 -0
- package/lib/es/components/image/image.js +72 -0
- package/lib/es/components/image/image.js.map +1 -0
- package/lib/es/components/image/index.js +7 -0
- package/lib/es/components/image/index.js.map +1 -0
- package/lib/es/components/image/list.js +43 -0
- package/lib/es/components/image/list.js.map +1 -0
- package/lib/es/components/input/container.js +14 -0
- package/lib/es/components/input/container.js.map +1 -0
- package/lib/es/components/input/index.js +11 -0
- package/lib/es/components/input/index.js.map +1 -0
- package/lib/es/components/input/input.js +63 -0
- package/lib/es/components/input/input.js.map +1 -0
- package/lib/es/components/input/number.js +54 -0
- package/lib/es/components/input/number.js.map +1 -0
- package/lib/es/components/input/range.js +67 -0
- package/lib/es/components/input/range.js.map +1 -0
- package/lib/es/components/input/textarea.js +47 -0
- package/lib/es/components/input/textarea.js.map +1 -0
- package/lib/es/components/list/index.js +6 -0
- package/lib/es/components/list/index.js.map +1 -0
- package/lib/es/components/list/item.js +14 -0
- package/lib/es/components/list/item.js.map +1 -0
- package/lib/es/components/list/list.js +24 -0
- package/lib/es/components/list/list.js.map +1 -0
- package/lib/es/components/loading/index.js +6 -0
- package/lib/es/components/loading/index.js.map +1 -0
- package/lib/es/components/loading/loading.js +17 -0
- package/lib/es/components/loading/loading.js.map +1 -0
- package/lib/es/components/message/index.js +6 -0
- package/lib/es/components/message/index.js.map +1 -0
- package/lib/es/components/message/message.js +174 -0
- package/lib/es/components/message/message.js.map +1 -0
- package/lib/es/components/modal/hookModal.js +27 -0
- package/lib/es/components/modal/hookModal.js.map +1 -0
- package/lib/es/components/modal/index.js +7 -0
- package/lib/es/components/modal/index.js.map +1 -0
- package/lib/es/components/modal/modal.js +104 -0
- package/lib/es/components/modal/modal.js.map +1 -0
- package/lib/es/components/modal/useModal.js +34 -0
- package/lib/es/components/modal/useModal.js.map +1 -0
- package/lib/es/components/pagination/index.js +6 -0
- package/lib/es/components/pagination/index.js.map +1 -0
- package/lib/es/components/pagination/page.js +24 -0
- package/lib/es/components/pagination/page.js.map +1 -0
- package/lib/es/components/pagination/pagination.js +44 -0
- package/lib/es/components/pagination/pagination.js.map +1 -0
- package/lib/es/components/picker/colors/footer.js +39 -0
- package/lib/es/components/picker/colors/footer.js.map +1 -0
- package/lib/es/components/picker/colors/handle.js +10 -0
- package/lib/es/components/picker/colors/handle.js.map +1 -0
- package/lib/es/components/picker/colors/index.js +57 -0
- package/lib/es/components/picker/colors/index.js.map +1 -0
- package/lib/es/components/picker/dates/dates.js +46 -0
- package/lib/es/components/picker/dates/dates.js.map +1 -0
- package/lib/es/components/picker/dates/index.js +62 -0
- package/lib/es/components/picker/dates/index.js.map +1 -0
- package/lib/es/components/picker/dates/panel.js +77 -0
- package/lib/es/components/picker/dates/panel.js.map +1 -0
- package/lib/es/components/picker/time/index.js +46 -0
- package/lib/es/components/picker/time/index.js.map +1 -0
- package/lib/es/components/picker/time/item.js +15 -0
- package/lib/es/components/picker/time/item.js.map +1 -0
- package/lib/es/components/picker/time/panel.js +83 -0
- package/lib/es/components/picker/time/panel.js.map +1 -0
- package/lib/es/components/popconfirm/index.js +6 -0
- package/lib/es/components/popconfirm/index.js.map +1 -0
- package/lib/es/components/popconfirm/popconfirm.js +54 -0
- package/lib/es/components/popconfirm/popconfirm.js.map +1 -0
- package/lib/es/components/popup/content.js +40 -0
- package/lib/es/components/popup/content.js.map +1 -0
- package/lib/es/components/popup/index.js +6 -0
- package/lib/es/components/popup/index.js.map +1 -0
- package/lib/es/components/popup/popup.js +219 -0
- package/lib/es/components/popup/popup.js.map +1 -0
- package/lib/es/components/progress/circle.js +13 -0
- package/lib/es/components/progress/circle.js.map +1 -0
- package/lib/es/components/progress/index.js +6 -0
- package/lib/es/components/progress/index.js.map +1 -0
- package/lib/es/components/progress/line.js +14 -0
- package/lib/es/components/progress/line.js.map +1 -0
- package/lib/es/components/progress/progress.js +83 -0
- package/lib/es/components/progress/progress.js.map +1 -0
- package/lib/es/components/radio/index.js +6 -0
- package/lib/es/components/radio/index.js.map +1 -0
- package/lib/es/components/radio/item.js +17 -0
- package/lib/es/components/radio/item.js.map +1 -0
- package/lib/es/components/radio/radio.js +35 -0
- package/lib/es/components/radio/radio.js.map +1 -0
- package/lib/es/components/resizable/index.js +6 -0
- package/lib/es/components/resizable/index.js.map +1 -0
- package/lib/es/components/resizable/resizable.js +61 -0
- package/lib/es/components/resizable/resizable.js.map +1 -0
- package/lib/es/components/select/index.js +6 -0
- package/lib/es/components/select/index.js.map +1 -0
- package/lib/es/components/select/options.js +47 -0
- package/lib/es/components/select/options.js.map +1 -0
- package/lib/es/components/select/select.js +93 -0
- package/lib/es/components/select/select.js.map +1 -0
- package/lib/es/components/step/divider.js +8 -0
- package/lib/es/components/step/divider.js.map +1 -0
- package/lib/es/components/step/index.js +6 -0
- package/lib/es/components/step/index.js.map +1 -0
- package/lib/es/components/step/item.js +22 -0
- package/lib/es/components/step/item.js.map +1 -0
- package/lib/es/components/step/step.js +36 -0
- package/lib/es/components/step/step.js.map +1 -0
- package/lib/es/components/swiper/index.js +6 -0
- package/lib/es/components/swiper/index.js.map +1 -0
- package/lib/es/components/swiper/item.js +25 -0
- package/lib/es/components/swiper/item.js.map +1 -0
- package/lib/es/components/swiper/swiper.js +234 -0
- package/lib/es/components/swiper/swiper.js.map +1 -0
- package/lib/es/components/tabs/index.js +6 -0
- package/lib/es/components/tabs/index.js.map +1 -0
- package/lib/es/components/tabs/item.js +8 -0
- package/lib/es/components/tabs/item.js.map +1 -0
- package/lib/es/components/tabs/tabs.js +211 -0
- package/lib/es/components/tabs/tabs.js.map +1 -0
- package/lib/es/components/tag/index.js +6 -0
- package/lib/es/components/tag/index.js.map +1 -0
- package/lib/es/components/tag/tag.js +18 -0
- package/lib/es/components/tag/tag.js.map +1 -0
- package/lib/es/components/text/highlight.js +28 -0
- package/lib/es/components/text/highlight.js.map +1 -0
- package/lib/es/components/text/index.js +11 -0
- package/lib/es/components/text/index.js.map +1 -0
- package/lib/es/components/text/number.js +27 -0
- package/lib/es/components/text/number.js.map +1 -0
- package/lib/es/components/text/text.js +28 -0
- package/lib/es/components/text/text.js.map +1 -0
- package/lib/es/components/text/time.js +20 -0
- package/lib/es/components/text/time.js.map +1 -0
- package/lib/es/components/tree/index.js +6 -0
- package/lib/es/components/tree/index.js.map +1 -0
- package/lib/es/components/tree/item.js +73 -0
- package/lib/es/components/tree/item.js.map +1 -0
- package/lib/es/components/tree/tree.js +132 -0
- package/lib/es/components/tree/tree.js.map +1 -0
- package/lib/es/components/upload/index.js +6 -0
- package/lib/es/components/upload/index.js.map +1 -0
- package/lib/es/components/upload/renderFile.js +61 -0
- package/lib/es/components/upload/renderFile.js.map +1 -0
- package/lib/es/components/upload/upload.js +123 -0
- package/lib/es/components/upload/upload.js.map +1 -0
- package/lib/es/components/utils/empty/index.js +11 -0
- package/lib/es/components/utils/empty/index.js.map +1 -0
- package/lib/es/components/utils/helpericon/helpericon.js +24 -0
- package/lib/es/components/utils/helpericon/helpericon.js.map +1 -0
- package/lib/es/components/utils/helpericon/index.js +6 -0
- package/lib/es/components/utils/helpericon/index.js.map +1 -0
- package/lib/es/components/video/index.js +6 -0
- package/lib/es/components/video/index.js.map +1 -0
- package/lib/es/components/video/video.js +171 -0
- package/lib/es/components/video/video.js.map +1 -0
- package/lib/es/index.js +45 -0
- package/lib/es/index.js.map +1 -0
- package/lib/es/js/hooks.js +109 -0
- package/lib/es/js/hooks.js.map +1 -0
- package/lib/es/js/usePreview/content.js +144 -0
- package/lib/es/js/usePreview/content.js.map +1 -0
- package/lib/es/js/usePreview/index.js +23 -0
- package/lib/es/js/usePreview/index.js.map +1 -0
- package/lib/es/js/usePreview/renderFile.js +20 -0
- package/lib/es/js/usePreview/renderFile.js.map +1 -0
- package/lib/es/js/usePreview/type.js +13 -0
- package/lib/es/js/usePreview/type.js.map +1 -0
- package/lib/es/js/useRipple/index.js +43 -0
- package/lib/es/js/useRipple/index.js.map +1 -0
- package/lib/es/js/utils.js +265 -0
- package/lib/es/js/utils.js.map +1 -0
- package/lib/index.js +4317 -2
- package/lib/types/components/picker/type.d.ts +2 -2
- package/lib/types/js/usePreview/type.d.ts +2 -11
- package/package.json +20 -11
- package/lib/components/affix/affix.js +0 -2
- package/lib/components/affix/affix.js.map +0 -1
- package/lib/components/affix/index.js +0 -2
- package/lib/components/affix/totop.js +0 -2
- package/lib/components/affix/totop.js.map +0 -1
- package/lib/components/badge/badge.js +0 -2
- package/lib/components/badge/badge.js.map +0 -1
- package/lib/components/badge/index.js +0 -2
- package/lib/components/button/button.js +0 -2
- package/lib/components/button/button.js.map +0 -1
- package/lib/components/button/group.js +0 -2
- package/lib/components/button/group.js.map +0 -1
- package/lib/components/button/index.js +0 -2
- package/lib/components/button/index.js.map +0 -1
- package/lib/components/button/toggle.js +0 -2
- package/lib/components/button/toggle.js.map +0 -1
- package/lib/components/card/card.js +0 -2
- package/lib/components/card/card.js.map +0 -1
- package/lib/components/card/index.js +0 -2
- package/lib/components/checkbox/checkbox.js +0 -2
- package/lib/components/checkbox/checkbox.js.map +0 -1
- package/lib/components/checkbox/index.js +0 -2
- package/lib/components/checkbox/item.js +0 -2
- package/lib/components/checkbox/item.js.map +0 -1
- package/lib/components/collapse/collapse.js +0 -2
- package/lib/components/collapse/collapse.js.map +0 -1
- package/lib/components/collapse/index.js +0 -2
- package/lib/components/collapse/index.js.map +0 -1
- package/lib/components/collapse/item.js +0 -2
- package/lib/components/collapse/item.js.map +0 -1
- package/lib/components/datagrid/cell.js +0 -2
- package/lib/components/datagrid/cell.js.map +0 -1
- package/lib/components/datagrid/datagrid.js +0 -2
- package/lib/components/datagrid/datagrid.js.map +0 -1
- package/lib/components/datagrid/index.js +0 -2
- package/lib/components/datagrid/index.js.map +0 -1
- package/lib/components/datagrid/resize.js +0 -2
- package/lib/components/datagrid/resize.js.map +0 -1
- package/lib/components/datagrid/row.js +0 -2
- package/lib/components/datagrid/row.js.map +0 -1
- package/lib/components/datagrid/sorter.js +0 -2
- package/lib/components/datagrid/sorter.js.map +0 -1
- package/lib/components/description/description.js +0 -2
- package/lib/components/description/description.js.map +0 -1
- package/lib/components/description/index.js +0 -2
- package/lib/components/description/index.js.map +0 -1
- package/lib/components/drawer/drawer.js +0 -2
- package/lib/components/drawer/drawer.js.map +0 -1
- package/lib/components/drawer/index.js +0 -2
- package/lib/components/drawer/index.js.map +0 -1
- package/lib/components/dropdown/dropdown.js +0 -2
- package/lib/components/dropdown/dropdown.js.map +0 -1
- package/lib/components/dropdown/index.js +0 -2
- package/lib/components/dropdown/index.js.map +0 -1
- package/lib/components/dropdown/item.js +0 -2
- package/lib/components/dropdown/item.js.map +0 -1
- package/lib/components/editor/controls.js +0 -2
- package/lib/components/editor/controls.js.map +0 -1
- package/lib/components/editor/editor.js +0 -2
- package/lib/components/editor/editor.js.map +0 -1
- package/lib/components/editor/index.js +0 -2
- package/lib/components/editor/index.js.map +0 -1
- package/lib/components/flex/flex.js +0 -2
- package/lib/components/flex/flex.js.map +0 -1
- package/lib/components/flex/index.js +0 -2
- package/lib/components/flex/index.js.map +0 -1
- package/lib/components/form/context.js +0 -2
- package/lib/components/form/context.js.map +0 -1
- package/lib/components/form/field.js +0 -2
- package/lib/components/form/field.js.map +0 -1
- package/lib/components/form/form.js +0 -2
- package/lib/components/form/form.js.map +0 -1
- package/lib/components/form/index.js +0 -2
- package/lib/components/form/index.js.map +0 -1
- package/lib/components/form/useForm.js +0 -2
- package/lib/components/form/useForm.js.map +0 -1
- package/lib/components/icon/icon.js +0 -2
- package/lib/components/icon/icon.js.map +0 -1
- package/lib/components/icon/index.js +0 -2
- package/lib/components/icon/index.js.map +0 -1
- package/lib/components/image/image.js +0 -2
- package/lib/components/image/image.js.map +0 -1
- package/lib/components/image/index.js +0 -2
- package/lib/components/image/index.js.map +0 -1
- package/lib/components/image/list.js +0 -2
- package/lib/components/image/list.js.map +0 -1
- package/lib/components/input/container.js +0 -2
- package/lib/components/input/container.js.map +0 -1
- package/lib/components/input/index.js +0 -2
- package/lib/components/input/index.js.map +0 -1
- package/lib/components/input/input.js +0 -2
- package/lib/components/input/input.js.map +0 -1
- package/lib/components/input/number.js +0 -2
- package/lib/components/input/number.js.map +0 -1
- package/lib/components/input/range.js +0 -2
- package/lib/components/input/range.js.map +0 -1
- package/lib/components/input/textarea.js +0 -2
- package/lib/components/input/textarea.js.map +0 -1
- package/lib/components/list/index.js +0 -2
- package/lib/components/list/index.js.map +0 -1
- package/lib/components/list/item.js +0 -2
- package/lib/components/list/item.js.map +0 -1
- package/lib/components/list/list.js +0 -2
- package/lib/components/list/list.js.map +0 -1
- package/lib/components/loading/index.js +0 -2
- package/lib/components/loading/index.js.map +0 -1
- package/lib/components/loading/loading.js +0 -2
- package/lib/components/loading/loading.js.map +0 -1
- package/lib/components/message/index.js +0 -2
- package/lib/components/message/index.js.map +0 -1
- package/lib/components/message/message.js +0 -2
- package/lib/components/message/message.js.map +0 -1
- package/lib/components/modal/hookModal.js +0 -2
- package/lib/components/modal/hookModal.js.map +0 -1
- package/lib/components/modal/index.js +0 -2
- package/lib/components/modal/index.js.map +0 -1
- package/lib/components/modal/modal.js +0 -2
- package/lib/components/modal/modal.js.map +0 -1
- package/lib/components/modal/useModal.js +0 -2
- package/lib/components/modal/useModal.js.map +0 -1
- package/lib/components/pagination/index.js +0 -2
- package/lib/components/pagination/index.js.map +0 -1
- package/lib/components/pagination/page.js +0 -2
- package/lib/components/pagination/page.js.map +0 -1
- package/lib/components/pagination/pagination.js +0 -2
- package/lib/components/pagination/pagination.js.map +0 -1
- package/lib/components/picker/colors/footer.js +0 -2
- package/lib/components/picker/colors/footer.js.map +0 -1
- package/lib/components/picker/colors/handle.js +0 -2
- package/lib/components/picker/colors/handle.js.map +0 -1
- package/lib/components/picker/colors/index.js +0 -2
- package/lib/components/picker/colors/index.js.map +0 -1
- package/lib/components/picker/dates/dates.js +0 -2
- package/lib/components/picker/dates/dates.js.map +0 -1
- package/lib/components/picker/dates/index.js +0 -2
- package/lib/components/picker/dates/index.js.map +0 -1
- package/lib/components/picker/dates/panel.js +0 -2
- package/lib/components/picker/dates/panel.js.map +0 -1
- package/lib/components/picker/time/index.js +0 -2
- package/lib/components/picker/time/index.js.map +0 -1
- package/lib/components/picker/time/item.js +0 -2
- package/lib/components/picker/time/item.js.map +0 -1
- package/lib/components/picker/time/panel.js +0 -2
- package/lib/components/picker/time/panel.js.map +0 -1
- package/lib/components/popconfirm/index.js +0 -2
- package/lib/components/popconfirm/index.js.map +0 -1
- package/lib/components/popconfirm/popconfirm.js +0 -2
- package/lib/components/popconfirm/popconfirm.js.map +0 -1
- package/lib/components/popup/content.js +0 -2
- package/lib/components/popup/content.js.map +0 -1
- package/lib/components/popup/index.js +0 -2
- package/lib/components/popup/index.js.map +0 -1
- package/lib/components/popup/popup.js +0 -2
- package/lib/components/popup/popup.js.map +0 -1
- package/lib/components/progress/circle.js +0 -2
- package/lib/components/progress/circle.js.map +0 -1
- package/lib/components/progress/index.js +0 -2
- package/lib/components/progress/index.js.map +0 -1
- package/lib/components/progress/line.js +0 -2
- package/lib/components/progress/line.js.map +0 -1
- package/lib/components/progress/progress.js +0 -2
- package/lib/components/progress/progress.js.map +0 -1
- package/lib/components/radio/index.js +0 -2
- package/lib/components/radio/index.js.map +0 -1
- package/lib/components/radio/item.js +0 -2
- package/lib/components/radio/item.js.map +0 -1
- package/lib/components/radio/radio.js +0 -2
- package/lib/components/radio/radio.js.map +0 -1
- package/lib/components/resizable/index.js +0 -2
- package/lib/components/resizable/index.js.map +0 -1
- package/lib/components/resizable/resizable.js +0 -2
- package/lib/components/resizable/resizable.js.map +0 -1
- package/lib/components/select/index.js +0 -2
- package/lib/components/select/index.js.map +0 -1
- package/lib/components/select/options.js +0 -2
- package/lib/components/select/options.js.map +0 -1
- package/lib/components/select/select.js +0 -2
- package/lib/components/select/select.js.map +0 -1
- package/lib/components/step/divider.js +0 -2
- package/lib/components/step/divider.js.map +0 -1
- package/lib/components/step/index.js +0 -2
- package/lib/components/step/index.js.map +0 -1
- package/lib/components/step/item.js +0 -2
- package/lib/components/step/item.js.map +0 -1
- package/lib/components/step/step.js +0 -2
- package/lib/components/step/step.js.map +0 -1
- package/lib/components/swiper/index.js +0 -2
- package/lib/components/swiper/index.js.map +0 -1
- package/lib/components/swiper/item.js +0 -2
- package/lib/components/swiper/item.js.map +0 -1
- package/lib/components/swiper/swiper.js +0 -2
- package/lib/components/swiper/swiper.js.map +0 -1
- package/lib/components/tabs/index.js +0 -2
- package/lib/components/tabs/index.js.map +0 -1
- package/lib/components/tabs/item.js +0 -2
- package/lib/components/tabs/item.js.map +0 -1
- package/lib/components/tabs/tabs.js +0 -2
- package/lib/components/tabs/tabs.js.map +0 -1
- package/lib/components/tag/index.js +0 -2
- package/lib/components/tag/index.js.map +0 -1
- package/lib/components/tag/tag.js +0 -2
- package/lib/components/tag/tag.js.map +0 -1
- package/lib/components/text/highlight.js +0 -2
- package/lib/components/text/highlight.js.map +0 -1
- package/lib/components/text/index.js +0 -2
- package/lib/components/text/index.js.map +0 -1
- package/lib/components/text/number.js +0 -2
- package/lib/components/text/number.js.map +0 -1
- package/lib/components/text/text.js +0 -2
- package/lib/components/text/text.js.map +0 -1
- package/lib/components/text/time.js +0 -2
- package/lib/components/text/time.js.map +0 -1
- package/lib/components/tree/index.js +0 -2
- package/lib/components/tree/index.js.map +0 -1
- package/lib/components/tree/item.js +0 -2
- package/lib/components/tree/item.js.map +0 -1
- package/lib/components/tree/tree.js +0 -2
- package/lib/components/tree/tree.js.map +0 -1
- package/lib/components/upload/index.js +0 -2
- package/lib/components/upload/index.js.map +0 -1
- package/lib/components/upload/renderFile.js +0 -2
- package/lib/components/upload/renderFile.js.map +0 -1
- package/lib/components/upload/upload.js +0 -2
- package/lib/components/upload/upload.js.map +0 -1
- package/lib/components/utils/empty/index.js +0 -2
- package/lib/components/utils/empty/index.js.map +0 -1
- package/lib/components/utils/helpericon/helpericon.js +0 -2
- package/lib/components/utils/helpericon/helpericon.js.map +0 -1
- package/lib/components/utils/helpericon/index.js +0 -2
- package/lib/components/utils/helpericon/index.js.map +0 -1
- package/lib/components/video/index.js +0 -2
- package/lib/components/video/index.js.map +0 -1
- package/lib/components/video/video.js +0 -2
- package/lib/components/video/video.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/js/hooks.js +0 -2
- package/lib/js/hooks.js.map +0 -1
- package/lib/js/usePreview/content.js +0 -2
- package/lib/js/usePreview/content.js.map +0 -1
- package/lib/js/usePreview/index.js +0 -2
- package/lib/js/usePreview/index.js.map +0 -1
- package/lib/js/usePreview/renderFile.js +0 -2
- package/lib/js/usePreview/renderFile.js.map +0 -1
- package/lib/js/usePreview/type.js +0 -2
- package/lib/js/usePreview/type.js.map +0 -1
- package/lib/js/useRipple/index.js +0 -2
- package/lib/js/useRipple/index.js.map +0 -1
- package/lib/js/utils.js +0 -2
- package/lib/js/utils.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useIntersectionObserver as r}from"../../js/hooks.js";import{MoreHorizRound as a}from"@ricons/material";import{useReactive as i,useSize as n}from"ahooks";import s from"classnames";import{pick as o}from"radash";import{useRef as c,useEffect as l,Children as v,useImperativeHandle as d}from"react";import"../button/index.js";import p from"../icon/icon.js";import m from"../popup/popup.js";import f from"../utils/helpericon/helpericon.js";import b from"./item.js";import u from"../button/button.js";const h=b=>{const{ref:h,active:y,tabs:k,type:g="default",prepend:N,append:j,children:w,className:x,vertical:T,toggable:$,navsJustify:C="start",bar:D=!0,hideMore:I,barClass:M,renderMore:S=()=>t(u,{flat:!0,square:!0,size:"small",children:t(p,{icon:t(a,{})})}),onTabChange:A,...L}=b,O=c([]),E=c(null),H=c(null),P=i({active:y,prevActive:void 0,barStyle:{},cachedTabs:[],overflow:!1,more:[],tabs:[]}),{observe:W,unobserve:q}=r(),z=n(H);l((()=>{if(!k)return w?void(P.tabs=v.map(w,((e,t)=>{const{key:r,props:a}=e,{title:i,children:n,content:s,keepDOM:c}=a,l=n?"string"==typeof n?n:o(n,["props","type","$$typeof","ref"]):s;return{key:r||String(t),title:i,content:l,keepDOM:c}}))):void(P.tabs=[]);P.tabs=k.map(((e,t)=>["string","number"].includes(typeof e)?{key:e,title:e}:(void 0===e.key&&(e.key=t),e)))}),[w,k]);const B=e=>{const{key:t}=e,r=P.tabs.findIndex((e=>e.key===t));if(r>-1)return void X(P.tabs[r].key??r);const a=P.tabs.length,i=e.key??a;P.tabs.push({...e,key:i}),X(i)},J=e=>{const t=P.tabs.findIndex((t=>t.key===e));if(t<0)return;if(P.tabs.splice(t,1),P.active!==e)return;const r=P.tabs[t]||P.tabs[t-1];X(P.prevActive??r?.key??"")},X=e=>{if(e===P.active){if(!$)return;return A?.(void 0,e),P.active=void 0,void(P.barStyle={height:0,width:0})}P.prevActive=P.active,A?.(e,P.active),P.active=e};return l((()=>{if(!z||I)return;const{scrollHeight:e,scrollWidth:t}=H.current,{width:r,height:a}=z;P.overflow=e>a||t>r,P.overflow&&O.current.map(((e,t)=>{e&&W(e,((e,r)=>{P.tabs[t]&&(P.tabs[t].intersecting=r,P.more=P.tabs.filter((e=>!e.intersecting)))}))}))}),[z,I,P.tabs.length]),l((()=>{if(!D||"pane"===g||void 0===P.active)return;const e=P.tabs.findIndex((e=>e.key===P.active));setTimeout((()=>{const t=O.current[e];if(!t)return;if(P.tabs[e].keepDOM&&P.active){P.cachedTabs.findIndex((e=>e===P.active))<0&&P.cachedTabs.unshift(P.active)}const{offsetHeight:r,offsetLeft:a,offsetTop:i,offsetWidth:n}=t,s="line"===g;P.barStyle={height:!T&&s?".25em":r,width:T&&s?".25em":n,transform:`translate(${a}px, ${i}px)`}}),16)}),[P.active,D,z]),l((()=>{void 0!==y&&P.active!==y&&X(y)}),[y]),l((()=>{if(!I)return()=>{O.current?.map(q)}}),[P.tabs.length]),l((()=>{if(!H.current||T)return;const e=e=>{e.stopPropagation(),e.preventDefault(),T||H.current?.scrollBy({left:e.deltaY+e.deltaX})};return H.current.addEventListener("wheel",e,{passive:!1}),()=>{H.current&&H.current.removeEventListener("wheel",e)}}),[H.current]),d(h,(()=>({open:X,close:J,add:B,navs:H}))),e("div",{className:s("i-tabs",{flex:T,[`i-tabs-${g}`]:"default"!==g},x),...L,children:[e("div",{className:s("i-tab-navs-container",{"i-tab-navs-vertical":T}),children:[N,e("div",{ref:H,className:s("i-tab-navs",`justify-${C}`),children:[P.tabs.map(((r,a)=>{const{title:i,key:n=a,closable:o}=r;return e("a",{ref:e=>O.current[a]=e,className:s("i-tab-nav",{"i-tab-active":P.active===n}),onClick:()=>X(n),children:[i,o&&t(f,{as:"i",active:!0,className:"i-tab-nav-close",onClick:e=>{e.stopPropagation(),J(n)}})]},n)})),D&&t("span",{ref:E,className:s("i-tab-navs-bar",M),style:P.barStyle})]}),!I&&P.overflow&&P.more.length>0&&t(m,{arrow:!1,position:T?"right":"bottom",align:"end",touchable:!0,hideDelay:500,content:t("div",{className:"i-tabs-morelist pd-4",children:P.more.map(((e,r)=>{const{key:a=r,title:i}=e,n=P.active===a;return t("a",{className:s("i-tab-nav",{"i-tab-active":n}),onClick:()=>X(a),children:i},a)}))}),children:S(P.more)}),j]}),t("div",{className:"i-tab-contents",children:P.tabs.map(((e,r)=>{const{key:a=r,content:i}=e,n=P.active===a;return(n||void 0!==a&&P.cachedTabs.includes(a))&&t("div",{className:s("i-tab-content",{"i-tab-active":n}),children:i},a)}))})]})};h.Item=b;export{h as default};
|
|
2
|
-
//# sourceMappingURL=tabs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sources":["../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import { useIntersectionObserver } from \"@p/js/hooks\";\nimport { MoreHorizRound } from \"@ricons/material\";\nimport { useReactive, useSize } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { pick } from \"radash\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n} from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs, TTabKey } from \"./type\";\n\ntype TState = {\n\tactive?: TTabKey;\n\tprevActive?: TTabKey;\n\tbarStyle: CSSProperties;\n\tcachedTabs: TTabKey[];\n\toverflow: boolean;\n\tmore: ITabItem[];\n\ttabs: ITabItem[];\n};\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\tnavsJustify = \"start\",\n\t\tbar = true,\n\t\thideMore,\n\t\tbarClass,\n\t\trenderMore = () => (\n\t\t\t<Button flat square size='small'>\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\n\t\t\t</Button>\n\t\t),\n\t\tonTabChange,\n\t\t...rest\n\t} = props;\n\n\tconst navRefs = useRef<HTMLElement[]>([]);\n\tconst barRef = useRef<HTMLSpanElement>(null);\n\tconst navsRef = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<TState>({\n\t\tactive,\n\t\tprevActive: undefined,\n\t\tbarStyle: {},\n\t\tcachedTabs: [],\n\t\toverflow: false,\n\t\tmore: [],\n\t\ttabs: [],\n\t});\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst size = useSize(navsRef);\n\n\tuseEffect(() => {\n\t\tif (!items) {\n\t\t\tif (!children) {\n\t\t\t\tstate.tabs = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.tabs = Children.map(children, (node, i) => {\n\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\tkey?: TTabKey;\n\t\t\t\t\tprops?: any;\n\t\t\t\t};\n\t\t\t\tconst { title, children, content, keepDOM } = nodeProps;\n\n\t\t\t\tconst cloned = children\n\t\t\t\t\t? typeof children === \"string\"\n\t\t\t\t\t\t? children\n\t\t\t\t\t\t: pick(children, [\"props\", \"type\", \"$$typeof\", \"ref\"])\n\t\t\t\t\t: content;\n\n\t\t\t\treturn {\n\t\t\t\t\tkey: key || String(i),\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent: cloned,\n\t\t\t\t\tkeepDOM,\n\t\t\t\t};\n\t\t\t}) as ITabItem[];\n\n\t\t\treturn;\n\t\t}\n\n\t\tstate.tabs = items.map((item, i) => {\n\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\n\t\t\t\treturn { key: item, title: item };\n\t\t\t}\n\t\t\tif (item.key === undefined) {\n\t\t\t\titem.key = i;\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t}, [children, items]);\n\n\tconst add = (tab: ITabItem) => {\n\t\tconst { key } = tab;\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i > -1) {\n\t\t\topen(state.tabs[i].key ?? i);\n\t\t\treturn;\n\t\t}\n\n\t\tconst l = state.tabs.length;\n\t\tconst tkey = tab.key ?? l;\n\t\tstate.tabs.push({ ...tab, key: tkey });\n\t\topen(tkey);\n\t};\n\n\tconst close = (key: TTabKey) => {\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i < 0) return;\n\n\t\tstate.tabs.splice(i, 1);\n\n\t\tif (state.active !== key) return;\n\n\t\tconst next = state.tabs[i] || state.tabs[i - 1];\n\t\topen(state.prevActive ?? next?.key ?? \"\");\n\t};\n\n\tconst open = (key: TTabKey) => {\n\t\tif (key === state.active) {\n\t\t\tif (!toggable) return;\n\n\t\t\tonTabChange?.(undefined, key);\n\t\t\tstate.active = undefined;\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\tstate.prevActive = state.active;\n\t\tonTabChange?.(key, state.active);\n\t\tstate.active = key;\n\t};\n\n\tuseEffect(() => {\n\t\tif (!size || hideMore) return;\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n\t\tconst { width, height } = size;\n\n\t\tstate.overflow = scrollHeight > height || scrollWidth > width;\n\n\t\tif (!state.overflow) return;\n\n\t\tnavRefs.current.map((nav, i) => {\n\t\t\tif (!nav) return;\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\n\t\t\t\tif (!state.tabs[i]) return;\n\t\t\t\tstate.tabs[i].intersecting = visible;\n\t\t\t\tstate.more = state.tabs.filter((tab) => !tab.intersecting);\n\t\t\t});\n\t\t});\n\t}, [size, hideMore, state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!bar || type === \"pane\" || state.active === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = state.tabs.findIndex((tab) => tab.key === state.active);\n\n\t\tsetTimeout(() => {\n\t\t\tconst nav = navRefs.current[index];\n\n\t\t\tif (!nav) return;\n\n\t\t\tif (state.tabs[index].keepDOM && state.active) {\n\t\t\t\tconst i = state.cachedTabs.findIndex((k) => k === state.active);\n\t\t\t\ti < 0 && state.cachedTabs.unshift(state.active);\n\t\t\t}\n\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n\t\t\tconst isLine = type === \"line\";\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n\t\t\t};\n\t\t}, 16);\n\t}, [state.active, bar, size]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || state.active === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore) return;\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\n\t\tconst handleMouseWheel = (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\tif (vertical) return;\n\n\t\t\tnavsRef.current?.scrollBy({\n\t\t\t\tleft: e.deltaY + e.deltaX,\n\t\t\t});\n\t\t};\n\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = i, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": state.active === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={state.barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && state.overflow && state.more.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{state.more.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = i, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = state.active === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(state.more)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\tconst { key = i, content } = tab;\n\t\t\t\t\tconst isActive = state.active === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && state.cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n"],"names":["Tabs","props","ref","active","tabs","items","type","prepend","append","children","className","vertical","toggable","navsJustify","bar","hideMore","barClass","renderMore","_jsx","Button","flat","square","size","Icon","icon","MoreHorizRound","onTabChange","rest","navRefs","useRef","barRef","navsRef","state","useReactive","prevActive","undefined","barStyle","cachedTabs","overflow","more","observe","unobserve","useIntersectionObserver","useSize","useEffect","Children","map","node","i","key","nodeProps","title","content","keepDOM","cloned","pick","String","item","includes","add","tab","findIndex","t","open","l","length","tkey","push","close","splice","next","height","width","scrollHeight","scrollWidth","current","nav","tar","visible","intersecting","filter","index","setTimeout","k","unshift","offsetHeight","offsetLeft","offsetTop","offsetWidth","isLine","transform","handleMouseWheel","e","stopPropagation","preventDefault","scrollBy","left","deltaY","deltaX","addEventListener","passive","removeEventListener","useImperativeHandle","navs","_jsxs","classNames","flex","closable","onClick","Helpericon","as","style","Popup","arrow","position","align","touchable","hideDelay","isActive","Item","TabItem"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsxs as o,jsx as a}from"react/jsx-runtime";import e from"classnames";import s from"../utils/helpericon/helpericon.js";const l=l=>{const{dot:i,dotClass:t,outline:n,round:r,size:c="normal",hoverShowClose:m,className:d,children:p,onClose:u,onClick:g,...h}=l;return o("span",{className:e("i-tag",{"i-tag-outline":n,"i-tag-clickable":g,[`i-tag-${c}`]:"normal"!==c,round:r},d),onClick:g,...h,children:[i&&a("span",{className:e("i-tag-dot",t)}),p,u&&a(s,{active:!0,className:e("i-tag-close",{"i-tag-hover-close":m}),onClick:u})]})};export{l as default};
|
|
2
|
-
//# sourceMappingURL=tag.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tag.js","sources":["../../../packages/components/tag/tag.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { ITag } from \"./type\";\n\nconst Tag = (props: ITag) => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\n\t\thoverShowClose,\n\t\tclassName,\n\t\tchildren,\n\t\tonClose,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<span\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tag\",\n\t\t\t\t{\n\t\t\t\t\t\"i-tag-outline\": outline,\n\t\t\t\t\t\"i-tag-clickable\": onClick,\n\t\t\t\t\t[`i-tag-${size}`]: size !== \"normal\",\n\t\t\t\t\tround,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={onClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{dot && <span className={classNames(\"i-tag-dot\", dotClass)}></span>}\n\n\t\t\t{children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName={classNames(\"i-tag-close\", {\n\t\t\t\t\t\t\"i-tag-hover-close\": hoverShowClose,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={onClose}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\nexport default Tag;\n"],"names":["Tag","props","dot","dotClass","outline","round","size","hoverShowClose","className","children","onClose","onClick","restProps","_jsxs","classNames","_jsx","Helpericon","active"],"mappings":"6HAKA,MAAMA,EAAOC,IACZ,MAAMC,IACLA,EAAGC,SACHA,EAAQC,QACRA,EAAOC,MACPA,EAAKC,KACLA,EAAO,SAAQC,eACfA,EAAcC,UACdA,EAASC,SACTA,EAAQC,QACRA,EAAOC,QACPA,KACGC,GACAX,EAEJ,OACCY,EACC,OAAA,CAAAL,UAAWM,EACV,QACA,CACC,gBAAiBV,EACjB,kBAAmBO,EACnB,CAAC,SAASL,KAAkB,WAATA,EACnBD,SAEDG,GAEDG,QAASA,KACLC,EAEHH,SAAA,CAAAP,GAAOa,EAAM,OAAA,CAAAP,UAAWM,EAAW,YAAaX,KAEhDM,EAEAC,GACAK,EAACC,EAAU,CACVC,QACA,EAAAT,UAAWM,EAAW,cAAe,CACpC,oBAAqBP,IAEtBI,QAASD,MAGL"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as r}from"react/jsx-runtime";import{findAll as t}from"highlight-words-core";import{useMemo as e,Fragment as i}from"react";import o from"./text.js";function s(s){const{keyword:n,text:c,escape:a,caseSensitive:h,renderWord:m=t=>r("mark",{children:t}),...d}=s,p=e((()=>{const e=c;return t({searchWords:"string"==typeof n?[n]:n,textToHighlight:c,caseSensitive:h,autoEscape:a}).map(((t,o)=>{const{end:s,highlight:n,start:c}=t,a=e.slice(c,s);return n?r(i,{children:m(a)},o):a}))}),[n,c,a,h]);return r(o,{...d,children:p})}export{s as default};
|
|
2
|
-
//# sourceMappingURL=highlight.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.js","sources":["../../../packages/components/text/highlight.tsx"],"sourcesContent":["import { findAll } from \"highlight-words-core\";\nimport { Fragment, useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextHighLight } from \"./type\";\n\nexport default function HighLight(props: ITextHighLight) {\n\tconst {\n\t\tkeyword,\n\t\ttext,\n\t\tescape,\n\t\tcaseSensitive,\n\t\trenderWord = (word) => <mark>{word}</mark>,\n\t\t...restProps\n\t} = props;\n\n\tconst content = useMemo(() => {\n\t\tconst source = text;\n\t\tconst searchWords = typeof keyword === \"string\" ? [keyword] : keyword;\n\n\t\tconst chunks = findAll({\n\t\t\tsearchWords,\n\t\t\ttextToHighlight: text,\n\t\t\tcaseSensitive,\n\t\t\tautoEscape: escape,\n\t\t});\n\n\t\tconst result = chunks.map((chunk, i) => {\n\t\t\tconst { end, highlight, start } = chunk;\n\t\t\tconst word = source.slice(start, end);\n\n\t\t\treturn highlight ? (\n\t\t\t\t<Fragment key={i}>{renderWord(word)}</Fragment>\n\t\t\t) : (\n\t\t\t\tword\n\t\t\t);\n\t\t});\n\n\t\treturn result;\n\t}, [keyword, text, escape, caseSensitive]);\n\n\treturn <Text {...restProps}>{content}</Text>;\n}\n"],"names":["HighLight","props","keyword","text","escape","caseSensitive","renderWord","word","_jsx","children","restProps","content","useMemo","source","findAll","searchWords","textToHighlight","autoEscape","map","chunk","i","end","highlight","start","slice","Fragment","Text"],"mappings":"8JAKwB,SAAAA,EAAUC,GACjC,MAAMC,QACLA,EAAOC,KACPA,EAAIC,OACJA,EAAMC,cACNA,EAAaC,WACbA,EAAcC,GAASC,EAAA,OAAA,CAAAC,SAAOF,OAC3BG,GACAT,EAEEU,EAAUC,GAAQ,KACvB,MAAMC,EAASV,EAqBf,OAlBeW,EAAQ,CACtBC,YAHsC,iBAAZb,EAAuB,CAACA,GAAWA,EAI7Dc,gBAAiBb,EACjBE,gBACAY,WAAYb,IAGSc,KAAI,CAACC,EAAOC,KACjC,MAAMC,IAAEA,EAAGC,UAAEA,EAASC,MAAEA,GAAUJ,EAC5BZ,EAAOM,EAAOW,MAAMD,EAAOF,GAEjC,OAAOC,EACNd,EAACiB,EAAkB,CAAAhB,SAAAH,EAAWC,IAAfa,GAAgC,CAG/C,GAGW,GACX,CAAClB,EAASC,EAAMC,EAAQC,IAE3B,OAAOG,EAACkB,EAAI,IAAKhB,EAAYD,SAAAE,GAC9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../packages/components/text/index.tsx"],"sourcesContent":["import HighLight from \"./highlight\";\nimport Number from \"./number\";\nimport Text from \"./text\";\nimport Time from \"./time\";\n\nText.Number = Number;\nText.Time = Time;\nText.HighLight = HighLight;\n\nexport default Text;\n"],"names":["Text","Number","Time","HighLight"],"mappings":"2GAKAA,EAAKC,OAASA,EACdD,EAAKE,KAAOA,EACZF,EAAKG,UAAYA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{formatNumber as o,animate as r}from"../../js/utils.js";import{useState as i,useMemo as n,useEffect as e}from"react";import s from"./text.js";function u(u){const{count:d,to:m,decimal:a,thousand:c=",",duration:f=2400,easing:p,...j}=u,[l,x]=i(d),h=n((()=>{if(void 0===l)return;const t=l.toFixed(a);return c?o(l,{precision:a,thousand:c}):t}),[l,c]);return e((()=>{void 0!==d&&void 0!==m&&r(d,m,f,(t=>x(d+t)),p)}),[m]),e((()=>x(d)),[d]),t(s,{...j,children:h})}export{u as default};
|
|
2
|
-
//# sourceMappingURL=number.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sources":["../../../packages/components/text/number.tsx"],"sourcesContent":["import { animate, formatNumber } from \"@p/js/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Text from \"./text\";\nimport { ITextNumber } from \"./type\";\n\nexport default function Number(props: ITextNumber) {\n\tconst {\n\t\tcount,\n\t\tto,\n\t\tdecimal,\n\t\tthousand = \",\",\n\t\tduration = 2400,\n\t\teasing,\n\t\t...restProps\n\t} = props;\n\tconst [n, setN] = useState(count);\n\n\tconst number = useMemo(() => {\n\t\tif (n === undefined) return;\n\n\t\tconst z = n.toFixed(decimal);\n\n\t\tif (!thousand) return z;\n\n\t\treturn formatNumber(n, { precision: decimal, thousand });\n\t}, [n, thousand]);\n\n\tuseEffect(() => {\n\t\tif (count === undefined || to === undefined) return;\n\n\t\tanimate(count, to, duration, (v) => setN(count + v), easing);\n\t}, [to]);\n\n\tuseEffect(() => setN(count), [count]);\n\n\treturn <Text {...restProps}>{number}</Text>;\n}\n"],"names":["Number","props","count","to","decimal","thousand","duration","easing","restProps","n","setN","useState","number","useMemo","undefined","z","toFixed","formatNumber","precision","useEffect","animate","v","_jsx","Text","children"],"mappings":"4LAKwB,SAAAA,EAAOC,GAC9B,MAAMC,MACLA,EAAKC,GACLA,EAAEC,QACFA,EAAOC,SACPA,EAAW,IAAGC,SACdA,EAAW,KAAIC,OACfA,KACGC,GACAP,GACGQ,EAAGC,GAAQC,EAAST,GAErBU,EAASC,GAAQ,KACtB,QAAUC,IAANL,EAAiB,OAErB,MAAMM,EAAIN,EAAEO,QAAQZ,GAEpB,OAAKC,EAEEY,EAAaR,EAAG,CAAES,UAAWd,EAASC,aAFvBU,CAEkC,GACtD,CAACN,EAAGJ,IAUP,OARAc,GAAU,UACKL,IAAVZ,QAA8BY,IAAPX,GAE3BiB,EAAQlB,EAAOC,EAAIG,GAAWe,GAAMX,EAAKR,EAAQmB,IAAId,EAAO,GAC1D,CAACJ,IAEJgB,GAAU,IAAMT,EAAKR,IAAQ,CAACA,IAEvBoB,EAACC,EAAI,IAAKf,EAAYgB,SAAAZ,GAC9B"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import t from"classnames";import{useMemo as r}from"react";const a=a=>{const{as:i="span",size:n,weight:o,decoration:s,gradient:c,wave:m,style:d,className:l,children:g}=a,f=r((()=>c&&Array.isArray(c)?{backgroundImage:`-webkit-linear-gradient(${c.join(",")})`,backgroundClip:"text"}:{}),[c]);return e(i,{style:{fontSize:n,fontWeight:o,textDecoration:s,...f,...d},className:t(l,{"i-text-gradient":c,"i-text-gradient-wave":m}),children:g})};export{a as default};
|
|
2
|
-
//# sourceMappingURL=text.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sources":["../../../packages/components/text/text.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { CompositionText, IText } from \"./type\";\n\nconst Text = (props: IText) => {\n\tconst {\n\t\tas: Tag = \"span\",\n\t\tsize,\n\t\tweight,\n\t\tdecoration,\n\t\tgradient,\n\t\twave,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\tconst gradients = useMemo(() => {\n\t\tif (!gradient || !Array.isArray(gradient)) return {};\n\n\t\treturn {\n\t\t\tbackgroundImage: `-webkit-linear-gradient(${gradient.join(\",\")})`,\n\t\t\tbackgroundClip: \"text\",\n\t\t};\n\t}, [gradient]);\n\n\treturn (\n\t\t<Tag\n\t\t\tstyle={{\n\t\t\t\tfontSize: size,\n\t\t\t\tfontWeight: weight,\n\t\t\t\ttextDecoration: decoration,\n\t\t\t\t...gradients,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t\"i-text-gradient\": gradient,\n\t\t\t\t\"i-text-gradient-wave\": wave,\n\t\t\t})}\n\t\t>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport default Text as CompositionText;\n"],"names":["Text","props","as","Tag","size","weight","decoration","gradient","wave","style","className","children","gradients","useMemo","Array","isArray","backgroundImage","join","backgroundClip","_jsx","fontSize","fontWeight","textDecoration","classNames"],"mappings":"kGAKA,MAAMA,EAAQC,IACb,MACCC,GAAIC,EAAM,OAAMC,KAChBA,EAAIC,OACJA,EAAMC,WACNA,EAAUC,SACVA,EAAQC,KACRA,EAAIC,MACJA,EAAKC,UACLA,EAASC,SACTA,GACGV,EAEEW,EAAYC,GAAQ,IACpBN,GAAaO,MAAMC,QAAQR,GAEzB,CACNS,gBAAiB,2BAA2BT,EAASU,KAAK,QAC1DC,eAAgB,QAJiC,CAAE,GAMlD,CAACX,IAEJ,OACCY,EAAChB,EAAG,CACHM,MAAO,CACNW,SAAUhB,EACViB,WAAYhB,EACZiB,eAAgBhB,KACbM,KACAH,GAEJC,UAAWa,EAAWb,EAAW,CAChC,kBAAmBH,EACnB,uBAAwBC,IAGxBG,SAAAA,GACI"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as r}from"react/jsx-runtime";import{formatTime as t}from"../../js/utils.js";import{useMemo as o}from"react";import e from"./text.js";function i(i){const{seconds:s,zero:m,units:n,...u}=i,c=o((()=>void 0===s?"":t(s,{zero:m,units:n})),[s]);return r(e,{...u,children:c})}export{i as default};
|
|
2
|
-
//# sourceMappingURL=time.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sources":["../../../packages/components/text/time.tsx"],"sourcesContent":["import { formatTime } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextTime } from \"./type\";\n\nexport default function Number(props: ITextTime) {\n\tconst { seconds, zero, units, ...restProps } = props;\n\n\tconst text = useMemo(() => {\n\t\tif (seconds === undefined) return \"\";\n\n\t\treturn formatTime(seconds, {\n\t\t\tzero,\n\t\t\tunits,\n\t\t});\n\t}, [seconds]);\n\n\treturn <Text {...restProps}>{text}</Text>;\n}\n"],"names":["Number","props","seconds","zero","units","restProps","text","useMemo","undefined","formatTime","_jsx","Text","children"],"mappings":"gJAKwB,SAAAA,EAAOC,GAC9B,MAAMC,QAAEA,EAAOC,KAAEA,EAAIC,MAAEA,KAAUC,GAAcJ,EAEzCK,EAAOC,GAAQ,SACJC,IAAZN,EAA8B,GAE3BO,EAAWP,EAAS,CAC1BC,OACAC,WAEC,CAACF,IAEJ,OAAOQ,EAACC,EAAI,IAAKN,EAAYO,SAAAN,GAC9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as e,Fragment as t,jsxs as r}from"react/jsx-runtime";import{KeyboardArrowDownRound as i}from"@ricons/material";import n from"classnames";import{useState as c}from"react";import o from"../checkbox/checkbox.js";import a from"../icon/icon.js";function s(r){const{data:i=[],depth:c=0,round:o,style:a,className:s,parent:l,nodeProps:m,...p}=r,h=i.map(((t,r)=>{const{type:i}=t,n=t[m.title],o=t[m.key]||(void 0!==l?.key?`${l.key}-${r}`:`${r}`);return t.key=o,t.parent=l,"title"===i?e("div",{className:"i-tree-group-title",children:n},r):i&&"item"!==i?e("div",{className:`i-tree-type-${i}`,children:n},r):e(d,{index:r,item:t,depth:c,nodeProps:m,...p},o)}));return c>0?e(t,{children:h}):e("div",{className:n("i-tree",s,{"i-tree-round":o}),style:a,children:h})}const l=t=>{const{as:r="a",href:i,selected:c,children:o,...a}=t,s=n("i-tree-item-header",{"i-tree-item-selected":c});return e(r,"string"==typeof r?{href:i,className:s,...a,children:o}:{to:i||"",className:s,...a,children:o})},d=t=>{const{item:d,depth:m=0,index:p,selected:h,checked:f=[],partofs:k={},checkable:u,nodeProps:N,renderExtra:g,onItemClick:x,onItemSelect:y,onItemCheck:v,...C}=t,{as:I,key:P="",href:b,icon:$,title:j,expanded:D,disabled:E}=d,S=d[N.children],[L,q]=c(D),w=(e,t)=>{t&&(e.preventDefault(),e.stopPropagation()),!E&&S?.length&&q((e=>!e))},z=f.includes(P);return r("div",{className:n("i-tree-item",{"i-tree-expand":L}),children:[r(l,{as:I,href:b,style:{paddingLeft:1.5*m+.5+"em"},selected:h===P,onClick:e=>{if(E)return e.preventDefault(),void e.stopPropagation();w(e),x?.(d,e),y?.(P,d)},children:[u&&e(o.Item,{value:z,partof:!z&&k[P],className:"i-tree-checkbox",onChange:e=>v?.(d,e,[]),onClick:e=>e.stopPropagation()}),$&&e("span",{className:"i-tree-item-icon",children:$}),e("span",{className:"i-tree-item-title",children:j}),g?.(d),S&&e(a,{icon:e(i,{}),className:"i-tree-toggle",onClick:e=>w(e,!0)})]}),S?.length&&e("div",{className:"i-tree-item-content",children:e(s,{data:S,depth:m+1,selected:h,checkable:u,parent:d,partofs:k,checked:f,nodeProps:N,renderExtra:g,onItemClick:x,onItemSelect:y,onItemCheck:v,...C})})]})};export{d as TreeItem,s as TreeList};
|
|
2
|
-
//# sourceMappingURL=item.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sources":["../../../packages/components/tree/item.tsx"],"sourcesContent":["import { KeyboardArrowDownRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useState } from \"react\";\nimport Checkbox from \"../checkbox\";\nimport Icon from \"../icon\";\nimport { ITree, ITreeHeader, PropsTreeItem } from \"./type\";\n\ninterface ITreeList extends Omit<ITree, \"nodeProps\"> {\n\tnodeProps: {\n\t\tkey: string;\n\t\ttitle: string;\n\t\tchildren: string;\n\t};\n}\n\nexport function TreeList(props: ITreeList) {\n\tconst {\n\t\tdata = [],\n\t\tdepth = 0,\n\t\tround,\n\t\tstyle,\n\t\tclassName,\n\t\tparent,\n\t\tnodeProps,\n\t\t...restProps\n\t} = props;\n\n\tconst contents = data.map((item, i) => {\n\t\tconst { type } = item;\n\t\tconst title = item[nodeProps.title];\n\t\tconst itemKey =\n\t\t\titem[nodeProps.key] ||\n\t\t\t(parent?.key !== undefined ? `${parent.key}-${i}` : `${i}`);\n\n\t\titem.key = itemKey;\n\t\titem.parent = parent;\n\n\t\tif (type === \"title\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className='i-tree-group-title'>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif (type && type !== \"item\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className={`i-tree-type-${type}`}>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TreeItem\n\t\t\t\tkey={itemKey}\n\t\t\t\tindex={i}\n\t\t\t\titem={item}\n\t\t\t\tdepth={depth}\n\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t);\n\t});\n\n\tif (depth > 0) return <>{contents}</>;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree\", className, {\n\t\t\t\t\"i-tree-round\": round,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{contents}\n\t\t</div>\n\t);\n}\n\nconst Header = (props: ITreeHeader) => {\n\tconst { as: Tag = \"a\", href, selected, children, ...restProps } = props;\n\n\tconst className = classNames(\"i-tree-item-header\", {\n\t\t\"i-tree-item-selected\": selected,\n\t});\n\n\tif (typeof Tag === \"string\") {\n\t\treturn (\n\t\t\t<Tag href={href} className={className} {...restProps}>\n\t\t\t\t{children}\n\t\t\t</Tag>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tag to={href || \"\"} className={className} {...restProps}>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport const TreeItem = (props: PropsTreeItem) => {\n\tconst {\n\t\titem,\n\t\tdepth = 0,\n\t\tindex,\n\t\tselected,\n\t\tchecked = [],\n\t\tpartofs = {},\n\t\tcheckable,\n\t\tnodeProps,\n\t\trenderExtra,\n\t\tonItemClick,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\n\tconst { as, key = \"\", href, icon, title, expanded, disabled } = item;\n\tconst children = item[nodeProps.children];\n\n\tconst [expand, setExpand] = useState(expanded);\n\n\tconst handleExpand = (e: MouseEvent<HTMLElement>, fromToggle?: boolean) => {\n\t\tif (fromToggle) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (disabled || !children?.length) return;\n\n\t\tsetExpand((v) => !v);\n\t};\n\n\tconst handleItemClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\thandleExpand(e);\n\t\tonItemClick?.(item, e);\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tconst handleItemCheck = (checked) => onItemCheck?.(item, checked, []);\n\tconst itemChecked = checked.includes(key);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree-item\", {\n\t\t\t\t\"i-tree-expand\": expand,\n\t\t\t})}\n\t\t>\n\t\t\t<Header\n\t\t\t\tas={as}\n\t\t\t\thref={href}\n\t\t\t\tstyle={{ paddingLeft: `${depth * 1.5 + 0.5}em` }}\n\t\t\t\tselected={selected === key}\n\t\t\t\tonClick={handleItemClick}\n\t\t\t>\n\t\t\t\t{checkable && (\n\t\t\t\t\t<Checkbox.Item\n\t\t\t\t\t\tvalue={itemChecked}\n\t\t\t\t\t\tpartof={!itemChecked && partofs[key]}\n\t\t\t\t\t\tclassName='i-tree-checkbox'\n\t\t\t\t\t\tonChange={handleItemCheck}\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{icon && <span className='i-tree-item-icon'>{icon}</span>}\n\n\t\t\t\t<span className='i-tree-item-title'>{title}</span>\n\n\t\t\t\t{renderExtra?.(item)}\n\n\t\t\t\t{children && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<KeyboardArrowDownRound />}\n\t\t\t\t\t\tclassName='i-tree-toggle'\n\t\t\t\t\t\tonClick={(e) => handleExpand(e, true)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Header>\n\n\t\t\t{children?.length && (\n\t\t\t\t<div className='i-tree-item-content'>\n\t\t\t\t\t<TreeList\n\t\t\t\t\t\tdata={children}\n\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\tcheckable={checkable}\n\t\t\t\t\t\tparent={item}\n\t\t\t\t\t\tpartofs={partofs}\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t\t\trenderExtra={renderExtra}\n\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\tonItemSelect={onItemSelect}\n\t\t\t\t\t\tonItemCheck={onItemCheck}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"],"names":["TreeList","props","data","depth","round","style","className","parent","nodeProps","restProps","contents","map","item","i","type","title","itemKey","key","undefined","_jsx","children","TreeItem","index","_Fragment","classNames","Header","as","Tag","href","selected","to","checked","partofs","checkable","renderExtra","onItemClick","onItemSelect","onItemCheck","icon","expanded","disabled","expand","setExpand","useState","handleExpand","e","fromToggle","preventDefault","stopPropagation","length","v","itemChecked","includes","_jsxs","paddingLeft","onClick","Checkbox","Item","value","partof","onChange","Icon","KeyboardArrowDownRound"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{useReactive as t}from"ahooks";import{useEffect as c,useImperativeHandle as s}from"react";import{TreeList as n}from"./item.js";const o={key:"key",title:"title",children:"children"},r=r=>{const{data:a=[],ref:d,selected:l,checked:i=[],disabledRelated:k,nodeProps:p,onItemSelect:f,onItemCheck:h,...m}=r,g=t({selected:l,checked:i,partofs:{},nodeMaps:new Map}),y=Object.assign({},o,p),u=e=>g.checked.includes(e||""),b=(e,t,c)=>{const{key:s="",parent:n,children:o}=e,r={[s]:t},a={[s]:!1};if(k)return[r];if(t){if(n&&"leaf"!==c){const e=n.children?.some((e=>e.key!==s&&!u(e.key))),[t,c]=b(n,!0,"root");e||Object.assign(r,t),Object.assign(a,e?c:{},{[n.key]:!0})}return o?.length&&"root"!==c&&o.map((e=>{if(u(e.key))return;const[t]=b(e,!0,"leaf");Object.assign(r,t),a[e.key]=!1})),[r,a]}if(n&&"leaf"!==c){const[e,t]=b(n,!1,"root");Object.assign(r,e);const c=n.children?.some((e=>u(e.key)&&e.key!==s));Object.assign(a,c?{}:t,{[n.key]:c,[s]:!1})}return o?.length&&"root"!==c&&o.map((e=>{const[t]=b(e,!1,"leaf");u(e.key)&&(Object.assign(r,t),a[e.key]=!1)})),[r,a]};return c((()=>{void 0!==l&&(g.selected=l)}),[l]),c((()=>{g.nodeMaps.clear();const{key:e,children:t}=y,c=s=>{s.map((s=>{g.nodeMaps.set(s[e],s),s[t]?.length>0&&c(s[t])}))};c(a)}),[a]),s(d,(()=>({getChecked:()=>{const e=[];return g.checked.map((t=>{const c=g.nodeMaps.get(t);e.push(c)})),[g.checked,e]},getSelected:()=>{const e=g.nodeMaps.get(g.selected);return[g.selected,e]},getPartofs:()=>{const e=[];return[Object.keys(g.partofs).filter((t=>{const c=g.partofs[t];if(c){const c=g.nodeMaps.get(t);e.push(c)}return c})),e]}}))),e(n,{data:a,selected:g.selected,checked:g.checked,partofs:g.partofs,nodeProps:y,onItemCheck:(e,t)=>{const[c,s]=b(e,t),n=Object.keys(c);g.checked=t?Array.from(new Set([...g.checked,...n])):g.checked.filter((e=>!n.includes(e))),Object.assign(g.partofs,s),h?.(e,t,g.checked)},onItemSelect:(e,t)=>{r.selectable&&(g.selected=e,f?.(e,t))},...m})};export{r as default};
|
|
2
|
-
//# sourceMappingURL=tree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sources":["../../../packages/components/tree/tree.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\nimport { useEffect, useImperativeHandle } from \"react\";\nimport \"./index.css\";\nimport { TreeList } from \"./item\";\nimport { ITree, ITreeItem } from \"./type\";\n\nconst defaultNodeProps = {\n\tkey: \"key\",\n\ttitle: \"title\",\n\tchildren: \"children\",\n};\n\nconst Tree = (props: ITree) => {\n\tconst {\n\t\tdata = [],\n\t\tref,\n\t\tselected,\n\t\tchecked = [],\n\t\tdisabledRelated,\n\t\tnodeProps,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tselected,\n\t\tchecked,\n\t\tpartofs: {} as Record<string, boolean>,\n\t\tnodeMaps: new Map(),\n\t});\n\tconst oNodeProps = Object.assign({}, defaultNodeProps, nodeProps);\n\n\tconst isChecked = (key?: string) => state.checked.includes(key || \"\");\n\n\tconst checkItem = (\n\t\titem: ITreeItem,\n\t\tchecked: boolean,\n\t\tdirection?: \"root\" | \"leaf\"\n\t) => {\n\t\tconst { key = \"\", parent, children } = item;\n\t\tconst shouldChanged = { [key]: checked };\n\t\tconst partofs = { [key]: false };\n\n\t\tif (disabledRelated) return [shouldChanged];\n\n\t\tif (checked) {\n\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\tconst hasUnchecked = parent.children?.some(\n\t\t\t\t\t(o) => o.key !== key && !isChecked(o.key)\n\t\t\t\t);\n\n\t\t\t\tconst [changes, parts] = checkItem(parent, true, \"root\");\n\n\t\t\t\tif (!hasUnchecked) {\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t}\n\n\t\t\t\tObject.assign(partofs, hasUnchecked ? parts : {}, {\n\t\t\t\t\t[parent.key as string]: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\tchildren.map((o) => {\n\t\t\t\t\tif (isChecked(o.key)) return;\n\n\t\t\t\t\tconst [changes] = checkItem(o, true, \"leaf\");\n\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [shouldChanged, partofs];\n\t\t}\n\n\t\tif (parent && direction !== \"leaf\") {\n\t\t\tconst [changes, parts] = checkItem(parent, false, \"root\");\n\n\t\t\tObject.assign(shouldChanged, changes);\n\n\t\t\tconst hasChecked = parent.children?.some(\n\t\t\t\t(o) => isChecked(o.key) && o.key !== key\n\t\t\t);\n\n\t\t\tObject.assign(partofs, hasChecked ? {} : parts, {\n\t\t\t\t[parent.key as string]: hasChecked,\n\t\t\t\t[key]: false,\n\t\t\t});\n\t\t}\n\t\tif (children?.length && direction !== \"root\") {\n\t\t\tchildren.map((o) => {\n\t\t\t\tconst [changes] = checkItem(o, false, \"leaf\");\n\n\t\t\t\tif (!isChecked(o.key)) return;\n\n\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t});\n\t\t}\n\n\t\treturn [shouldChanged, partofs];\n\t};\n\n\tconst handleCheck = (item: ITreeItem, checked: boolean) => {\n\t\tconst [shouldChanged, partofs] = checkItem(item, checked);\n\t\tconst changedKeys = Object.keys(shouldChanged);\n\n\t\tstate.checked = checked\n\t\t\t? Array.from(new Set([...state.checked, ...changedKeys]))\n\t\t\t: state.checked.filter((k) => !changedKeys.includes(k));\n\n\t\tObject.assign(state.partofs, partofs);\n\n\t\tonItemCheck?.(item, checked, state.checked);\n\t};\n\n\tconst handleSelect = (key: string, item: ITreeItem) => {\n\t\tif (!props.selectable) return;\n\n\t\tstate.selected = key;\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tuseEffect(() => {\n\t\tif (selected === undefined) return;\n\n\t\tstate.selected = selected;\n\t}, [selected]);\n\n\tuseEffect(() => {\n\t\tstate.nodeMaps.clear();\n\n\t\tconst { key, children } = oNodeProps;\n\t\tconst recursive = (nodes) => {\n\t\t\tnodes.map((o) => {\n\t\t\t\tstate.nodeMaps.set(o[key], o);\n\n\t\t\t\to[children]?.length > 0 && recursive(o[children]);\n\t\t\t});\n\t\t};\n\n\t\trecursive(data);\n\t}, [data]);\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tgetChecked: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tstate.checked.map((k) => {\n\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\titems.push(item);\n\t\t\t\t});\n\t\t\t\treturn [state.checked, items];\n\t\t\t},\n\t\t\tgetSelected: () => {\n\t\t\t\tconst item = state.nodeMaps.get(state.selected);\n\t\t\t\treturn [state.selected, item];\n\t\t\t},\n\t\t\tgetPartofs: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tconst keys = Object.keys(state.partofs).filter((k) => {\n\t\t\t\t\tconst indeterminate = state.partofs[k];\n\n\t\t\t\t\tif (indeterminate) {\n\t\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn indeterminate;\n\t\t\t\t});\n\n\t\t\t\treturn [keys, items];\n\t\t\t},\n\t\t};\n\t});\n\n\treturn (\n\t\t<TreeList\n\t\t\tdata={data}\n\t\t\tselected={state.selected}\n\t\t\tchecked={state.checked}\n\t\t\tpartofs={state.partofs}\n\t\t\tnodeProps={oNodeProps}\n\t\t\tonItemCheck={handleCheck}\n\t\t\tonItemSelect={handleSelect}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nexport default Tree;\n"],"names":["defaultNodeProps","key","title","children","Tree","props","data","ref","selected","checked","disabledRelated","nodeProps","onItemSelect","onItemCheck","restProps","state","useReactive","partofs","nodeMaps","Map","oNodeProps","Object","assign","isChecked","includes","checkItem","item","direction","parent","shouldChanged","hasUnchecked","some","o","changes","parts","length","map","hasChecked","useEffect","undefined","clear","recursive","nodes","set","useImperativeHandle","getChecked","items","k","get","push","getSelected","getPartofs","keys","filter","indeterminate","_jsx","TreeList","changedKeys","Array","from","Set","selectable"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as r,Fragment as i}from"react/jsx-runtime";import{TFileType as o}from"../../js/usePreview/type.js";import{getFileType as t,formatBytes as a}from"../../js/utils.js";import{ListAltRound as s}from"@ricons/material";import{title as n}from"radash";import l from"react-easy-sort";import m from"../icon/icon.js";import"../image/index.js";import c from"../utils/helpericon/helpericon.js";import d from"../image/image.js";const p=r=>{const{sortable:i,onSortEnd:o,itemProps:t,...a}=r,s={className:"i-upload-list",onClick:e=>{e.stopPropagation(),e.preventDefault()}};return i?e(l,{draggedItemClassName:"i-upload-item-dragged",onSortEnd:o,...s,...a}):e("div",{...s,...a})},f=l=>{const{ref:p,mode:f,index:u,file:v,renderItem:h,onRemove:g,onPreview:j}=l;if(!v)return"";const{id:N,name:k,size:C,url:D,src:P}=v,w=t(k,v.type);if(h)return h(v,u);const x=e(c,{active:!0,className:"i-upload-delete",onClick:e=>{e.stopPropagation(),e.preventDefault(),g(u)}});if("card"===f){let t=e(i,{});switch(w){case o.IMAGE:t=e(d,{lazyload:!0,src:D||P,fit:"cover",onMouseDown:e=>e.preventDefault()});break;case o.VIDEO:t=e("video",{src:D||P,preload:"none"});break;default:t=r(i,{children:[e(m,{icon:e(s,{})}),e("span",{className:"i-upload-file-name",children:n(k)})]})}return r("div",{ref:p,title:k,className:"i-upload-item-card",onClick:()=>j?.(u),children:[t,x]})}return r("div",{ref:p,className:"i-upload-item",onClick:()=>j?.(u),children:[e("span",{children:k}),e("i",{className:"i-upload-size",children:a(C??0)}),x]},N)};export{p as ListContainer,f as default};
|
|
2
|
-
//# sourceMappingURL=renderFile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderFile.js","sources":["../../../packages/components/upload/renderFile.tsx"],"sourcesContent":["import { TFileType } from \"@p/js/usePreview/type\";\nimport { formatBytes, getFileType } from \"@p/js/utils\";\nimport { ListAltRound } from \"@ricons/material\";\nimport { title } from \"radash\";\nimport { RefObject } from \"react\";\nimport SortableContainer from \"react-easy-sort\";\nimport Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport const ListContainer = (props) => {\n\tconst { sortable, onSortEnd, itemProps, ...restProps } = props;\n\tconst customProps = {\n\t\tclassName: \"i-upload-list\",\n\t\tonClick: (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t};\n\n\tif (!sortable) {\n\t\treturn <div {...customProps} {...restProps} />;\n\t}\n\treturn (\n\t\t<SortableContainer\n\t\t\tdraggedItemClassName='i-upload-item-dragged'\n\t\t\tonSortEnd={onSortEnd}\n\t\t\t{...customProps}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nconst FileListItem = (\n\tprops: IUploadItem & { ref?: RefObject<HTMLDivElement | null> }\n) => {\n\tconst { ref, mode, index, file, renderItem, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\n\tconst { id, name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\n\n\tif (renderItem) {\n\t\treturn renderItem(file, index);\n\t}\n\n\tconst CloseBtn = (\n\t\t<Helpericon\n\t\t\tactive\n\t\t\tclassName='i-upload-delete'\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\tonRemove(index);\n\t\t\t}}\n\t\t/>\n\t);\n\n\tswitch (mode) {\n\t\tcase \"card\":\n\t\t\tlet node = <></>;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase TFileType.IMAGE:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tlazyload\n\t\t\t\t\t\t\tsrc={url || src}\n\t\t\t\t\t\t\tfit='cover'\n\t\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase TFileType.VIDEO:\n\t\t\t\t\tnode = <video src={url || src} preload='none' />;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Icon icon={<ListAltRound />} />\n\t\t\t\t\t\t\t<span className='i-upload-file-name'>\n\t\t\t\t\t\t\t\t{title(name)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttitle={name}\n\t\t\t\t\tclassName='i-upload-item-card'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t{node}\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName='i-upload-item'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t<span>{name}</span>\n\n\t\t\t\t\t<i className='i-upload-size'>{formatBytes(size ?? 0)}</i>\n\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t}\n};\n\nexport default FileListItem;\n"],"names":["ListContainer","props","sortable","onSortEnd","itemProps","restProps","customProps","className","onClick","e","stopPropagation","preventDefault","_jsx","SortableContainer","draggedItemClassName","FileListItem","ref","mode","index","file","renderItem","onRemove","onPreview","id","name","size","url","src","type","getFileType","CloseBtn","Helpericon","active","node","_Fragment","TFileType","IMAGE","Image","lazyload","fit","onMouseDown","VIDEO","preload","_jsxs","children","Icon","icon","ListAltRound","title","formatBytes"],"mappings":"kbAWa,MAAAA,EAAiBC,IAC7B,MAAMC,SAAEA,EAAQC,UAAEA,EAASC,UAAEA,KAAcC,GAAcJ,EACnDK,EAAc,CACnBC,UAAW,gBACXC,QAAUC,IACTA,EAAEC,kBACFD,EAAEE,gBAAgB,GAIpB,OAAKT,EAIJU,EAACC,EACA,CAAAC,qBAAqB,wBACrBX,UAAWA,KACPG,KACAD,IAPEO,EAAS,MAAA,IAAAN,KAAiBD,GAQ/B,EAIEU,EACLd,IAEA,MAAMe,IAAEA,EAAGC,KAAEA,EAAIC,MAAEA,EAAKC,KAAEA,EAAIC,WAAEA,EAAUC,SAAEA,EAAQC,UAAEA,GAAcrB,EAEpE,IAAKkB,EAAM,MAAO,GAElB,MAAMI,GAAEA,EAAEC,KAAEA,EAAIC,KAAEA,EAAIC,IAAEA,EAAGC,IAAEA,GAAQR,EAC/BS,EAAOC,EAAYL,EAAML,EAAKS,MAEpC,GAAIR,EACH,OAAOA,EAAWD,EAAMD,GAGzB,MAAMY,EACLlB,EAACmB,GACAC,QAAM,EACNzB,UAAU,kBACVC,QAAUC,IACTA,EAAEC,kBACFD,EAAEE,iBACFU,EAASH,EAAM,IAKlB,GACM,SADED,EACP,CACC,IAAIgB,EAAOrB,EAAAsB,EAAA,IAEX,OAAQN,GACP,KAAKO,EAAUC,MACdH,EACCrB,EAACyB,EACA,CAAAC,UACA,EAAAX,IAAKD,GAAOC,EACZY,IAAI,QACJC,YAAc/B,GAAMA,EAAEE,mBAGxB,MACD,KAAKwB,EAAUM,MACdR,EAAOrB,EAAA,QAAA,CAAOe,IAAKD,GAAOC,EAAKe,QAAQ,SACvC,MACD,QACCT,EACCU,EAAAT,EAAA,CAAAU,SAAA,CACChC,EAACiC,GAAKC,KAAMlC,EAACmC,EAAe,CAAA,KAC5BnC,EAAM,OAAA,CAAAL,UAAU,qBACdqC,SAAAI,EAAMxB,QAOZ,OACCmB,EAAA,MAAA,CACC3B,IAAKA,EACLgC,MAAOxB,EACPjB,UAAU,qBACVC,QAAS,IAAMc,IAAYJ,GAAM0B,SAAA,CAEhCX,EACAH,IACI,CAGP,OACCa,EACC,MAAA,CAAA3B,IAAKA,EAELT,UAAU,gBACVC,QAAS,IAAMc,IAAYJ,GAAM0B,SAAA,CAEjChC,mBAAOY,IAEPZ,EAAG,IAAA,CAAAL,UAAU,gBAAeqC,SAAEK,EAAYxB,GAAQ,KAEjDK,IARIP"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as s}from"react/jsx-runtime";import{arrayMove as i}from"../../js/utils.js";import l from"../../js/usePreview/index.js";import{PlusSharp as t}from"@ricons/material";import{useReactive as a}from"ahooks";import r from"classnames";import{uid as n}from"radash";import{useRef as o,useMemo as m,useEffect as d,useImperativeHandle as c}from"react";import{SortableItem as f}from"react-easy-sort";import"../button/index.js";import u from"../icon/icon.js";import p from"../input/container.js";import b,{ListContainer as h}from"./renderFile.js";import g from"../button/button.js";const j=j=>{const{ref:v,label:y,labelInline:N,value:U,files:x=[],initialFiles:L,placeholder:F,status:O="normal",message:R,className:z,style:I,children:C,defaultText:P="Upload",mode:k="default",cardSize:w="4em",disabled:S,sortable:q,limit:A=(j.multiple?1/0:1),multiple:E,renderItem:T,shouldUpload:$=()=>!0,uploader:B,onChange:D,onFilesChange:G,onUpload:H,...J}=j,K=a({files:x,value:U,status:O,message:R}),M=o(null),Q=l(),V=m((()=>C||e(g,"card"===k?{className:"i-upload-card-btn color-5",square:!0,flat:!0,outline:!0,disabled:S,children:e(u,{icon:e(t,{})})}:{className:"i-upload-btn",disabled:S,children:P})),[k,C]),W=e=>{const[...s]=K.files,i=s.splice(e,1);URL.revokeObjectURL(i[0]?.src||""),K.files=s,G?.(s,i),D?.(s),M.current&&(M.current.value="")},X=async e=>{if(!B)return;const s=e.filter($),i=Promise.all(s.map(B));return H?.(i)},Y=e=>{Q({items:K.files,initial:e})},Z=e=>{e&&(K.files=e.map((e=>({...e,id:e.id??n(7)}))))};return d((()=>{Object.assign(K,{status:O,message:R})}),[O,R]),d((()=>{K.files=U?.filter?.((e=>!!e.id))??[]}),[U]),d((()=>{Z(L)}),[]),c(v,(()=>({getFileList:()=>K.files,setFileList:Z})),[]),e(p,{as:"div",label:y,labelInline:N,className:r("i-input-label-file",z),style:I,children:s("div",{className:r("i-upload-inner",{[`i-upload-${k}`]:"default"!==k}),style:{"--upload-card-size":w},children:[e(h,{sortable:q,onSortEnd:(e,s)=>{const[...l]=K.files;K.files=i(l,e,s),D?.(K.files)},children:K.files.map(((s,i)=>{const l=e(b,{index:i,file:s,mode:k,renderItem:T,onRemove:W,onPreview:Y},i);return q?e(f,{children:l},i):l}))}),K.message&&e("span",{className:"i-upload-message",children:K.message}),K.files.length<A&&s("label",{children:[e("input",{...J,disabled:S,ref:M,type:"file",className:"i-input-file-hidden",multiple:E,onChange:e=>{const s=Array.from(e.target.files||[]),{files:i}=K,l=[];s.map((e=>{const{id:s,name:t,size:a,type:r}=e,o=i.find((e=>{const{name:s,size:i,type:l}=e;return s===t&&i===a&&l===r})),m=URL.createObjectURL(e);Object.assign(e,{id:s??n(7),src:m??e.name,url:m??e.name}),!o&&l.push(e)}));const t=[...i,...l];Object.assign(K,{files:E?t.slice(0,A):[t.at(-1)],status:O,message:R}),G?.(K.files,l,e),D?.(K.files,e),X(l),M.current&&(M.current.value="")}}),V]})]})})};export{j as default};
|
|
2
|
-
//# sourceMappingURL=upload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sources":["../../../packages/components/upload/upload.tsx"],"sourcesContent":["import { arrayMove } from \"@/packages/js/utils\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { PlusSharp } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n\tChangeEvent,\n\tCSSProperties,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { SortableItem } from \"react-easy-sort\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport \"./index.css\";\nimport FileListItem, { ListContainer } from \"./renderFile\";\nimport { IFile, IUpload } from \"./type\";\n\nconst Upload = (props: IUpload) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tinitialFiles,\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tdefaultText = \"Upload\",\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tsortable,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem,\n\t\tshouldUpload = () => true,\n\t\tuploader,\n\t\tonChange,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tfiles,\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst preview = usePreview();\n\n\tconst trigger = useMemo(() => {\n\t\tif (children) return children;\n\n\t\tswitch (mode) {\n\t\t\tcase \"card\":\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-upload-card-btn color-5'\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tflat\n\t\t\t\t\t\toutline\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlusSharp />} />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<Button className='i-upload-btn' disabled={disabled}>\n\t\t\t\t\t\t{defaultText}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t}\n\t}, [mode, children]);\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = Array.from(e.target.files || []) as IFile[];\n\t\tconst { files: before } = state;\n\t\tconst changed: IFile[] = [];\n\n\t\tfiles.map((f) => {\n\t\t\tconst { id, name, size, type } = f;\n\t\t\tconst same = before.find((pf) => {\n\t\t\t\tconst { name: n, size: s, type: t } = pf;\n\t\t\t\treturn n === name && s === size && t === type;\n\t\t\t});\n\t\t\tconst src = URL.createObjectURL(f);\n\n\t\t\tObject.assign(f, {\n\t\t\t\tid: id ?? uid(7),\n\t\t\t\tsrc: src ?? f.name,\n\t\t\t\turl: src ?? f.name,\n\t\t\t});\n\t\t\t!same && changed.push(f);\n\t\t});\n\n\t\tconst after = [...before, ...changed];\n\n\t\tObject.assign(state, {\n\t\t\tfiles: multiple ? after.slice(0, limit) : [after.at(-1)],\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonFilesChange?.(state.files, changed, e);\n\t\tonChange?.(state.files, e);\n\n\t\thandleUpload(changed);\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleRemove = (i: number) => {\n\t\tconst [...files] = state.files;\n\n\t\tconst changed = files.splice(i, 1);\n\t\tURL.revokeObjectURL(changed[0]?.src || \"\");\n\n\t\tstate.files = files;\n\t\tonFilesChange?.(files, changed);\n\t\tonChange?.(files);\n\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleUpload = async (files: IFile[]) => {\n\t\tif (!uploader) return;\n\n\t\tconst shouldUploadFiles = files.filter(shouldUpload);\n\n\t\tconst result = Promise.all(shouldUploadFiles.map(uploader));\n\n\t\treturn onUpload?.(result);\n\t};\n\n\tconst handlePreview = (i: number) => {\n\t\tpreview({ items: state.files as TPreviewItem[], initial: i });\n\t};\n\n\tconst setFileList = (files?: IFile[] | File[]) => {\n\t\tif (!files) return;\n\n\t\tstate.files = files.map((f) => {\n\t\t\treturn { ...f, id: f.id ?? uid(7) };\n\t\t});\n\t};\n\n\tconst handleSortEnd = (before, after) => {\n\t\tconst [...files] = state.files;\n\n\t\tstate.files = arrayMove(files, before, after);\n\t\tonChange?.(state.files);\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\t}, [status, message]);\n\n\tuseEffect(() => {\n\t\tstate.files = value?.filter?.((file) => !!file.id) ?? [];\n\t}, [value]);\n\n\tuseEffect(() => {\n\t\tsetFileList(initialFiles);\n\t}, []);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\n\t\t\tsetFileList,\n\t\t}),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<InputContainer\n\t\t\tas='div'\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={classNames(\"i-input-label-file\", className)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-upload-inner\", {\n\t\t\t\t\t[`i-upload-${mode}`]: mode !== \"default\",\n\t\t\t\t})}\n\t\t\t\tstyle={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n\t\t\t>\n\t\t\t\t<ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\n\t\t\t\t\t{state.files.map((file: IFile, i: number) => {\n\t\t\t\t\t\tconst node = (\n\t\t\t\t\t\t\t<FileListItem\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\tfile={file}\n\t\t\t\t\t\t\t\tmode={mode}\n\t\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\t\tonRemove={handleRemove}\n\t\t\t\t\t\t\t\tonPreview={handlePreview}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!sortable) return node;\n\n\t\t\t\t\t\treturn <SortableItem key={i}>{node}</SortableItem>;\n\t\t\t\t\t})}\n\t\t\t\t</ListContainer>\n\n\t\t\t\t{state.message && (\n\t\t\t\t\t<span className='i-upload-message'>{state.message}</span>\n\t\t\t\t)}\n\n\t\t\t\t{state.files.length < limit && (\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\ttype='file'\n\t\t\t\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{trigger}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Upload;\n"],"names":["Upload","props","ref","label","labelInline","value","files","initialFiles","placeholder","status","message","className","style","children","defaultText","mode","cardSize","disabled","sortable","limit","multiple","Infinity","renderItem","shouldUpload","uploader","onChange","onFilesChange","onUpload","restProps","state","useReactive","inputRef","useRef","preview","usePreview","trigger","useMemo","_jsx","Button","square","flat","outline","Icon","icon","PlusSharp","handleRemove","i","changed","splice","URL","revokeObjectURL","src","current","handleUpload","async","shouldUploadFiles","filter","result","Promise","all","map","handlePreview","items","initial","setFileList","f","id","uid","useEffect","Object","assign","file","useImperativeHandle","getFileList","InputContainer","as","classNames","_jsxs","ListContainer","onSortEnd","before","after","arrayMove","node","FileListItem","index","onRemove","onPreview","SortableItem","length","type","e","Array","from","target","name","size","same","find","pf","n","s","t","createObjectURL","url","push","slice","at"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../packages/components/utils/empty/index.tsx"],"sourcesContent":["import { InboxTwotone } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport default function Empty(props) {\n\tconst { className, ...restProps } = props;\n\n\treturn (\n\t\t<InboxTwotone\n\t\t\tclassName={classNames(\"i-empty\", className)}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n}\n"],"names":["Empty","props","className","restProps","_jsx","InboxTwotone","classNames"],"mappings":"kHAIwB,SAAAA,EAAMC,GAC7B,MAAMC,UAAEA,KAAcC,GAAcF,EAEpC,OACCG,EAACC,EACA,CAAAH,UAAWI,EAAW,UAAWJ,MAC7BC,GAGP"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as r,Fragment as o}from"react/jsx-runtime";import{CloseRound as a}from"@ricons/material";import m from"classnames";import{uid as i}from"radash";import{createElement as t}from"react";import s from"../../icon/icon.js";const c=c=>{const{as:e="a",active:n,className:p,icon:f=r(a,{}),...l}=c;return n?t(e,{className:m("i-helpericon",p),...l},[t(s,{key:i(3),icon:f})]):r(o,{})};export{c as default};
|
|
2
|
-
//# sourceMappingURL=helpericon.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpericon.js","sources":["../../../../packages/components/utils/helpericon/helpericon.tsx"],"sourcesContent":["import { CloseRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { createElement } from \"react\";\nimport Icon from \"../../icon\";\nimport \"./index.css\";\nimport { IHelperIcon } from \"./type\";\n\nconst Helpericon = (props: IHelperIcon) => {\n\tconst {\n\t\tas = \"a\",\n\t\tactive,\n\t\tclassName,\n\t\ticon = <CloseRound />,\n\t\t...restProps\n\t} = props;\n\n\tif (!active) return <></>;\n\n\treturn createElement(\n\t\tas,\n\t\t{\n\t\t\tclassName: classNames(\"i-helpericon\", className),\n\t\t\t...restProps,\n\t\t},\n\t\t[\n\t\t\tcreateElement(Icon, {\n\t\t\t\tkey: uid(3),\n\t\t\t\ticon,\n\t\t\t}),\n\t\t]\n\t);\n};\n\nexport default Helpericon;\n"],"names":["Helpericon","props","as","active","className","icon","_jsx","CloseRound","restProps","createElement","classNames","Icon","key","uid"],"mappings":"mOAQA,MAAMA,EAAcC,IACnB,MAAMC,GACLA,EAAK,IAAGC,OACRA,EAAMC,UACNA,EAASC,KACTA,EAAOC,EAACC,SACLC,GACAP,EAEJ,OAAKE,EAEEM,EACNP,EACA,CACCE,UAAWM,EAAW,eAAgBN,MACnCI,GAEJ,CACCC,EAAcE,EAAM,CACnBC,IAAKC,EAAI,GACTR,WAXiBC,OAcnB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsxs as e,jsx as r}from"react/jsx-runtime";import{exitFullScreen as n,fullScreen as t}from"../../js/utils.js";import{PauseRound as o,PlayArrowRound as i,StopRound as s,VolumeOffRound as l,VolumeDownRound as c,FullscreenExitRound as a,FullscreenRound as u}from"@ricons/material";import{useReactive as m}from"ahooks";import d from"classnames";import{throttle as v}from"radash";import{useRef as g,useImperativeHandle as p,useEffect as h}from"react";import"../button/index.js";import f from"../icon/icon.js";import C from"../progress/progress.js";import"../text/index.js";import b from"../button/button.js";import y from"../text/text.js";const E=E=>{const{ref:j,style:T,hideControls:L,autoplay:N,muted:P,volume:k=50,height:x,width:F,useOriginControls:H,timeProgressProps:q={barClass:"bg-blue"},volumeProgressProps:O={barClass:"bg-blue"},className:w,onFullScreenChange:D,...M}=E,S=m({playing:N,volume:P?0:k,volumeCache:0,muted:P,current:0,duration:0,isFullscreen:!1,controlHidden:!0,draggingProgress:!1}),V=g(null),z=g(null),A=e=>{const r=e.target;r.paused||S.draggingProgress||Object.assign(S,{current:r.currentTime})},B=e=>{S.playing=!e.target.paused},G=()=>{const e=V.current?.parentElement;e&&(S.isFullscreen=document.fullscreenElement===e)},I=e=>{const r=e.target;Object.assign(S,{volume:100*r.volume,muted:0===r.volume})},J=()=>{const e=V.current;e&&(e.paused?e.play():e.pause())},K=()=>{const e=V.current;e&&(e.currentTime=0,e.pause())},Q=()=>{const e=V.current?.parentElement;e&&(S.isFullscreen?n():t(e),D?.(!S.isFullscreen))},R=!L&&!H,U=()=>{z.current&&(clearTimeout(z.current),z.current=null)},W=v({interval:900},(()=>{R&&S.controlHidden&&(S.controlHidden=!1,U(),z.current=setTimeout((()=>{S.controlHidden=!0}),1e3))}));p(j,(()=>({play:()=>{const e=V.current;e&&e.play()},pause:()=>{const e=V.current;e&&e.pause()},stop:K,fullscreen:Q,getVideo:()=>V.current}))),h((()=>{const e=V.current;if(e)return e.addEventListener("timeupdate",A),e.addEventListener("play",B),e.addEventListener("pause",B),e.addEventListener("volumechange",I),document.addEventListener("fullscreenchange",G),()=>{U(),e.removeEventListener("timeupdate",A),e.removeEventListener("play",B),e.removeEventListener("pause",B),e.removeEventListener("volumechange",I),document.removeEventListener("fullscreenchange",G)}}),[]);const X=S.current/S.duration*100;return e("div",{className:d("i-video",w),style:{height:x,width:F,...T},onClick:J,onDoubleClick:()=>Q(),onMouseMove:W,children:[r("video",{ref:V,onCanPlay:e=>{const r=e.target;Object.assign(S,{duration:r.duration,current:r.currentTime}),r.volume=S.volume/100},...M,controls:H}),R&&e("div",{className:d("i-video-controls",{"i-video-controls-hidden":S.controlHidden}),onClick:e=>e.stopPropagation(),children:[r(b.Toggle,{className:"i-video-btn",flat:!0,square:!0,after:r(f,{icon:r(o,{})}),active:S.playing,onClick:J,children:r(f,{icon:r(i,{})})}),r(b,{className:"i-video-btn",flat:!0,square:!0,onClick:K,children:r(f,{icon:r(s,{})})}),e("span",{className:"i-video-times font-sm",children:[r(y.Time,{seconds:S.current})," /",r(y.Time,{seconds:S.duration})]}),r(C,{...q,value:X,onChange:e=>{const r=V.current;r&&(r.currentTime=S.duration*e/100)},onDraggingChange:e=>{S.draggingProgress=e}}),e("div",{className:"i-video-control-volume",children:[r(b.Toggle,{className:"i-video-btn",flat:!0,square:!0,active:S.volume<=0,after:r(f,{icon:r(l,{}),style:{padding:".125em"}}),onClick:()=>{const e=V.current;if(e)return e.volume>0?(S.volumeCache=e.volume,void(e.volume=0)):void(e.volume=0===S.volumeCache?.5:S.volumeCache)},children:r(f,{icon:r(c,{})})}),r("div",{className:"i-video-volume",children:r(C,{style:{height:100},vertical:!0,...O,value:S.volume,onChange:e=>{const r=V.current;r&&(r.volume=e/100)}})})]}),r(b.Toggle,{className:"i-video-btn",flat:!0,square:!0,after:r(f,{icon:r(a,{})}),active:S.isFullscreen,onClick:()=>Q(),children:r(f,{icon:r(u,{})})})]})]})};export{E as default};
|
|
2
|
-
//# sourceMappingURL=video.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"video.js","sources":["../../../packages/components/video/video.tsx"],"sourcesContent":["import { exitFullScreen, fullScreen } from \"@p/js/utils\";\nimport {\n\tFullscreenExitRound,\n\tFullscreenRound,\n\tPauseRound,\n\tPlayArrowRound,\n\tStopRound,\n\tVolumeDownRound,\n\tVolumeOffRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Progress from \"../progress\";\nimport Text from \"../text\";\nimport \"./index.css\";\nimport { IVideo } from \"./type\";\n\nconst Video = (props: IVideo) => {\n\tconst {\n\t\tref,\n\t\tstyle,\n\t\thideControls,\n\t\tautoplay,\n\t\tmuted,\n\t\tvolume = 50,\n\t\theight,\n\t\twidth,\n\t\tuseOriginControls,\n\t\ttimeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tclassName,\n\t\tonFullScreenChange,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tplaying: autoplay,\n\t\tvolume: muted ? 0 : volume,\n\t\tvolumeCache: 0,\n\t\tmuted,\n\t\tcurrent: 0,\n\t\tduration: 0,\n\t\tisFullscreen: false,\n\t\tcontrolHidden: true,\n\t\tdraggingProgress: false,\n\t});\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst timeUpdateListener = (e) => {\n\t\tconst tar = e.target;\n\t\tif (tar.paused || state.draggingProgress) return;\n\n\t\tObject.assign(state, {\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t};\n\n\tconst playChangeListener = (e) => {\n\t\tstate.playing = !e.target.paused;\n\t};\n\n\tconst fsChangeListener = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\n\t};\n\n\tconst volumeChangeListener = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tvolume: tar.volume * 100,\n\t\t\tmuted: tar.volume === 0,\n\t\t});\n\t};\n\n\tconst handlePlay = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.paused ? v.play() : v.pause();\n\t};\n\n\tconst handleReady = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tduration: tar.duration,\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t\ttar.volume = state.volume / 100;\n\t};\n\n\tconst handleMuted = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tif (v.volume > 0) {\n\t\t\tstate.volumeCache = v.volume;\n\t\t\tv.volume = 0;\n\t\t\treturn;\n\t\t}\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\n\t};\n\n\tconst handleStop = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = 0;\n\t\tv.pause();\n\t};\n\n\tconst handleFullscreen = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\n\t\tonFullScreenChange?.(!state.isFullscreen);\n\t};\n\n\tconst handleUpdateTime = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = (state.duration * t) / 100;\n\t};\n\n\tconst handleUpdateVolume = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tconst showControls = !hideControls && !useOriginControls;\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!showControls || !state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst handleDraggingProgress = (dragging) => {\n\t\tstate.draggingProgress = dragging;\n\t};\n\n\tconst handleMouseMove = throttle({ interval: 900 }, setHiddenFalse);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.pause();\n\t\t},\n\t\tstop: handleStop,\n\t\tfullscreen: handleFullscreen,\n\t\tgetVideo: () => videoRef.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\n\t\tv.addEventListener(\"play\", playChangeListener);\n\t\tv.addEventListener(\"pause\", playChangeListener);\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\n\n\t\treturn () => {\n\t\t\tclearHiddenTO();\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\n\t\t};\n\t}, []);\n\n\tconst currentValue = (state.current / state.duration) * 100;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-video\", className)}\n\t\t\tstyle={{ height, width, ...style }}\n\t\t\tonClick={handlePlay}\n\t\t\tonDoubleClick={() => handleFullscreen()}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tonCanPlay={handleReady}\n\t\t\t\t{...restProps}\n\t\t\t\tcontrols={useOriginControls}\n\t\t\t/>\n\n\t\t\t{showControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tonClick={handleStop}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t</Button>\n\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<Progress\n\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\tvalue={currentValue}\n\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\tonDraggingChange={handleDraggingProgress}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className='i-video-control-volume'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tactive={state.volume <= 0}\n\t\t\t\t\t\t\tafter={\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={<VolumeOffRound />}\n\t\t\t\t\t\t\t\t\tstyle={{ padding: \".125em\" }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={handleMuted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\n\t\t\t\t\t\t<div className='i-video-volume'>\n\t\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\t\tstyle={{ height: 100 }}\n\t\t\t\t\t\t\t\tvertical\n\t\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Video;\n"],"names":["Video","props","ref","style","hideControls","autoplay","muted","volume","height","width","useOriginControls","timeProgressProps","barClass","volumeProgressProps","className","onFullScreenChange","restProps","state","useReactive","playing","volumeCache","current","duration","isFullscreen","controlHidden","draggingProgress","videoRef","useRef","hiddenTO","timeUpdateListener","e","tar","target","paused","Object","assign","currentTime","playChangeListener","fsChangeListener","parentElement","document","fullscreenElement","volumeChangeListener","handlePlay","v","play","pause","handleStop","handleFullscreen","exitFullScreen","fullScreen","showControls","clearHiddenTO","clearTimeout","handleMouseMove","throttle","interval","setTimeout","useImperativeHandle","stop","fullscreen","getVideo","useEffect","addEventListener","removeEventListener","currentValue","_jsxs","classNames","onClick","onDoubleClick","onMouseMove","children","_jsx","onCanPlay","controls","stopPropagation","Button","Toggle","flat","square","after","Icon","icon","PauseRound","active","PlayArrowRound","StopRound","Text","Time","seconds","Progress","value","onChange","t","onDraggingChange","dragging","VolumeOffRound","padding","VolumeDownRound","vertical","FullscreenExitRound","FullscreenRound"],"mappings":"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"}
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/lib/js/hooks.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{useEffect as e}from"react";const n=new Set,t=new Set,o=new Set,s="ontouchend"in document,c={MOVE:s?"touchmove":"mousemove",UP:s?"touchend":"mouseup",KEYDOWN:"keydown"};function r(t,o){e((()=>(n.add(t),()=>{n.delete(t)})),[t])}function u(n,o){e((()=>(t.add(n),()=>{t.delete(n)})),[n])}function d(n,t){e((()=>{if(!t?.disabled)return o.add(n),()=>{o.delete(n)}}),[n])}function i(e){const n=new WeakMap,t=new IntersectionObserver((e=>{e.map((e=>{const t=n.get(e.target);t?.(e.target,e.isIntersecting)}))}),e);return{observe:function(e,o){n.get(e)||(n.set(e,o),e&&t.observe(e))},unobserve:function(e){e&&t.unobserve(e),n.delete(e)},disconnect:function(){t.disconnect()}}}function a(){const e=new WeakMap,n=new ResizeObserver((n=>{n.map((n=>{const t=e.get(n.target);t?.(n.target)}))}));return{observe:function(t,o){e.get(t)||(t&&n.observe(t),e.set(t,o))},unobserve:function(t){t&&n.unobserve(t),e.delete(t)},disconnect:function(){n.disconnect()}}}document.addEventListener(c.MOVE,(e=>{for(const t of n.values())t(e)}),{passive:!1}),document.addEventListener(c.UP,(e=>{for(const n of t.values())n(e)})),document.addEventListener(c.KEYDOWN,(e=>{for(const n of o.values())n(e)}));export{i as useIntersectionObserver,d as useKeydown,r as useMouseMove,u as useMouseUp,a as useResizeObserver};
|
|
2
|
-
//# sourceMappingURL=hooks.js.map
|
package/lib/js/hooks.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../packages/js/hooks.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\ntype TMouseEvent = (e: MouseEvent) => void;\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\ntype TEventOption = {\n\tdisabled?: boolean;\n};\n\nconst ClickEvents = new Set<TMouseEvent>();\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst KeydownEvents = new Set<TKeyboardEvent>();\n\nconst touchable = \"ontouchend\" in document;\nconst EVENTS: any = {\n\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\tUP: touchable ? \"touchend\" : \"mouseup\",\n\tKEYDOWN: \"keydown\",\n};\n\ndocument.addEventListener(\n\tEVENTS.MOVE,\n\t(e: MouseEvent) => {\n\t\tfor (const listener of MouseMoveEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t},\n\t{ passive: false }\n);\n\ndocument.addEventListener(EVENTS.UP, (e) => {\n\tfor (const listener of MouseUpEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\ndocument.addEventListener(EVENTS.KEYDOWN, (e) => {\n\tfor (const listener of KeydownEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseMoveEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseMoveEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tKeydownEvents.add(listener);\n\t\treturn () => {\n\t\t\tKeydownEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\n\tconst WM = new WeakMap();\n\tconst IO = new IntersectionObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\n\t\t});\n\t}, configs);\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\tWM.set(target, callback);\n\t\ttarget && IO.observe(target);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n\nexport function useResizeObserver() {\n\tconst WM = new WeakMap();\n\tconst IO = new ResizeObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target);\n\t\t});\n\t});\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\ttarget && IO.observe(target);\n\t\tWM.set(target, callback);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n"],"names":["MouseMoveEvents","Set","MouseUpEvents","KeydownEvents","touchable","document","EVENTS","MOVE","UP","KEYDOWN","useMouseMove","listener","options","useEffect","add","delete","useMouseUp","useKeydown","disabled","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","map","entry","callback","get","target","isIntersecting","observe","set","unobserve","disconnect","useResizeObserver","ResizeObserver","addEventListener","e","values","passive"],"mappings":"kCASA,MAAMA,EAAkB,IAAIC,IACtBC,EAAgB,IAAID,IACpBE,EAAgB,IAAIF,IAEpBG,EAAY,eAAgBC,SAC5BC,EAAc,CACnBC,KAAMH,EAAY,YAAc,YAChCI,GAAIJ,EAAY,WAAa,UAC7BK,QAAS,WAyBM,SAAAC,EAAaC,EAAuBC,GACnDC,GAAU,KAGTb,EAAgBc,IAAIH,GACb,KACNX,EAAgBe,OAAOJ,EAAS,IAE/B,CAACA,GACL,CAEgB,SAAAK,EAAWL,EAAuBC,GACjDC,GAAU,KAGTX,EAAcY,IAAIH,GACX,KACNT,EAAca,OAAOJ,EAAS,IAE7B,CAACA,GACL,CAEgB,SAAAM,EAAWN,EAA0BC,GACpDC,GAAU,KACT,IAAID,GAASM,SAGb,OADAf,EAAcW,IAAIH,GACX,KACNR,EAAcY,OAAOJ,EAAS,CAC9B,GACC,CAACA,GACL,CAEM,SAAUQ,EAAwBC,GACvC,MAAMC,EAAK,IAAIC,QACTC,EAAK,IAAIC,sBAAsBC,IACpCA,EAAQC,KAAKC,IACZ,MAAMC,EAAWP,EAAGQ,IAAIF,EAAMG,QAE9BF,IAAWD,EAAMG,OAAQH,EAAMI,eAAe,GAC7C,GACAX,GAkBH,MAAO,CACNY,QAjBD,SAAiBF,EAAqBF,GACjCP,EAAGQ,IAAIC,KAEXT,EAAGY,IAAIH,EAAQF,GACfE,GAAUP,EAAGS,QAAQF,KAcrBI,UAXD,SAAmBJ,GAClBA,GAAUP,EAAGW,UAAUJ,GACvBT,EAAGN,OAAOe,IAUVK,WAPD,WACCZ,EAAGY,cAQL,UAEgBC,IACf,MAAMf,EAAK,IAAIC,QACTC,EAAK,IAAIc,gBAAgBZ,IAC9BA,EAAQC,KAAKC,IACZ,MAAMC,EAAWP,EAAGQ,IAAIF,EAAMG,QAE9BF,IAAWD,EAAMG,OAAO,GACvB,IAmBH,MAAO,CACNE,QAjBD,SAAiBF,EAAqBF,GACjCP,EAAGQ,IAAIC,KAEXA,GAAUP,EAAGS,QAAQF,GACrBT,EAAGY,IAAIH,EAAQF,KAcfM,UAXD,SAAmBJ,GAClBA,GAAUP,EAAGW,UAAUJ,GACvBT,EAAGN,OAAOe,IAUVK,WAPD,WACCZ,EAAGY,cAQL,CAvHA9B,SAASiC,iBACRhC,EAAOC,MACNgC,IACA,IAAK,MAAM5B,KAAYX,EAAgBwC,SACtC7B,EAAS4B,KAGX,CAAEE,SAAS,IAGZpC,SAASiC,iBAAiBhC,EAAOE,IAAK+B,IACrC,IAAK,MAAM5B,KAAYT,EAAcsC,SACpC7B,EAAS4B,MAIXlC,SAASiC,iBAAiBhC,EAAOG,SAAU8B,IAC1C,IAAK,MAAM5B,KAAYR,EAAcqC,SACpC7B,EAAS4B"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsxs as r,Fragment as t,jsx as e}from"react/jsx-runtime";import"../../components/button/index.js";import n from"../../components/icon/icon.js";import{CloseRound as o,AspectRatioRound as a,OpenInNewRound as i,FileDownloadOutlined as c,RotateRightRound as l,RotateLeftRound as s,KeyboardArrowLeftRound as d,KeyboardArrowRightRound as u}from"@ricons/material";import{useReactive as m}from"ahooks";import p from"classnames";import{throttle as f}from"radash";import{useRef as g,useMemo as h}from"react";import{useMouseMove as k,useMouseUp as j}from"../hooks.js";import{getSuffixByUrl as v,getFileType as C}from"../utils.js";import x from"./renderFile.js";import{TFileType as q}from"./type.js";import b from"../../components/button/button.js";function y(y){const{items:H=[],initial:w=0,renderFile:N=x,onRotate:$,onChange:D,onClose:F,onZoom:Y}=y,M=m({current:w,rotate:0,scale:1,translate:[0,0],start:[0,0],dragging:!1,controlHidden:!0}),T=g(null),X=g([0,0]),_=g(null),A=h((()=>H.map((r=>{const t={src:""};return"string"==typeof r?t.src=r:Object.assign(t,r),t.suffix=v(t.src)||"",t.type=C(t.suffix,r.type),t}))),[H]),{file:E,content:G}=h((()=>{const r=A[M.current];return{file:r,content:N(r)}}),[M.current,H]),I=E.type===q.IMAGE,O=r=>{const t=A.length,{current:e}=M;M.current=r>=t?0:r<0?t-1:r,D?.(M.current,e),M.rotate=A[M.current].rotate||0,1!==M.scale&&(M.scale=1,Y?.(1)),$?.(M.rotate),M.translate=X.current=[0,0]},P=r=>{M.rotate+=r,$?.(M.rotate)},R=f({interval:60},(r=>{if(!I)return;let t=M.scale+(r.deltaY<0?.05:-.05);t>2&&(t=2),t<.25&&(t=.25),Y?.(t),M.scale=t})),W=f({interval:300},(()=>{M.controlHidden&&(M.controlHidden=!1,_.current&&!M.controlHidden&&(clearTimeout(_.current),_.current=null),_.current=setTimeout((()=>{M.controlHidden=!0}),1e3))}));return k((r=>{if(W(),!M.dragging)return;r.preventDefault();const[t,e]=X.current,[n,o]=M.start,a=r.pageX-n,i=r.pageY-o;M.translate=[t+a,e+i]})),j((()=>{M.dragging&&(M.dragging=!1,X.current=M.translate)})),r(t,{children:[e("div",{ref:T,className:p("i-preview-content",{"no-transition":M.dragging}),style:{transform:`translate(${M.translate.map((r=>`${r}px`)).join(",")}) rotate(${M.rotate}deg) scale(${M.scale})`},onWheel:R,onMouseDown:r=>{I&&(r.preventDefault(),M.dragging=!0,M.start=[r.pageX,r.pageY])},onClick:r=>r.stopPropagation(),children:G}),r("div",{className:p("i-preview-controls",{"i-preview-controls-hidden":M.controlHidden}),children:[e(b,{square:!0,flat:!0,onClick:F,children:e(n,{icon:e(o,{})})}),A.length>1&&r("span",{className:"px-8",children:[M.current+1," / ",A.length]}),1!==M.scale&&r(b,{flat:!0,onClick:()=>M.scale=1,children:[e(n,{icon:e(a,{})}),r("span",{className:"mt-2",children:[(100*M.scale).toFixed(0),"%"]})]}),e(b,{square:!0,flat:!0,href:E.src,target:"_blank",children:e(n,{icon:e(i,{})})}),e(b,{square:!0,flat:!0,href:E.src,download:!0,target:"_blank",children:e(n,{icon:e(c,{})})}),e(b,{square:!0,flat:!0,onClick:()=>P(90),children:e(n,{icon:e(l,{})})}),e(b,{square:!0,flat:!0,onClick:()=>P(-90),children:e(n,{icon:e(s,{})})}),A.length>1&&r(t,{children:[e(b,{square:!0,flat:!0,onClick:()=>O(M.current-1),children:e(n,{icon:e(d,{})})}),e(b,{square:!0,flat:!0,onClick:()=>O(M.current+1),children:e(n,{icon:e(u,{})})})]})]})]})}export{y as default};
|
|
2
|
-
//# sourceMappingURL=content.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sources":["../../../packages/js/usePreview/content.tsx"],"sourcesContent":["import Button from \"@p/components/button\";\nimport Icon from \"@p/components/icon\";\nimport {\n\tAspectRatioRound,\n\tCloseRound,\n\tFileDownloadOutlined,\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tOpenInNewRound,\n\tRotateLeftRound,\n\tRotateRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useMemo, useRef } from \"react\";\nimport { useMouseMove, useMouseUp } from \"../hooks\";\nimport { getFileType, getSuffixByUrl } from \"../utils\";\nimport DefaultRenderFile from \"./renderFile\";\nimport { IPreview, TFileType, TPreviewItem } from \"./type\";\n\nexport default function Content(props: IPreview) {\n\tconst {\n\t\titems = [],\n\t\tinitial = 0,\n\t\trenderFile = DefaultRenderFile,\n\t\tonRotate,\n\t\tonChange,\n\t\tonClose,\n\t\tonZoom,\n\t} = props;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\trotate: 0,\n\t\tscale: 1,\n\t\ttranslate: [0, 0],\n\t\tstart: [0, 0],\n\t\tdragging: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t\tstate.translate = translate.current = [0, 0];\n\t};\n\n\tconst handleRotate = (deg: number) => {\n\t\tstate.rotate += deg;\n\n\t\tonRotate?.(state.rotate);\n\t};\n\n\tconst handleMouseWheel = throttle({ interval: 60 }, (e) => {\n\t\tif (!isImage) return;\n\t\tlet after = state.scale + (e.deltaY < 0 ? 0.05 : -0.05);\n\t\tif (after > 2) after = 2;\n\t\tif (after < 0.25) after = 0.25;\n\n\t\tonZoom?.(after);\n\t\tstate.scale = after;\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!isImage) return;\n\t\te.preventDefault();\n\t\tstate.dragging = true;\n\t\tstate.start = [e.pageX, e.pageY];\n\t};\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current || state.controlHidden) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst throttleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tconst handleMouseMove = (e) => {\n\t\tthrottleMouseMove();\n\t\tif (!state.dragging) return;\n\t\te.preventDefault();\n\n\t\tconst [x, y] = translate.current;\n\t\tconst [ox, oy] = state.start;\n\t\tconst offsetX = e.pageX - ox;\n\t\tconst offsetY = e.pageY - oy;\n\n\t\tstate.translate = [x + offsetX, y + offsetY];\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging) return;\n\t\tstate.dragging = false;\n\t\ttranslate.current = state.translate;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName={classNames(\"i-preview-content\", {\n\t\t\t\t\t\"no-transition\": state.dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate(${state.translate\n\t\t\t\t\t\t.map((n) => `${n}px`)\n\t\t\t\t\t\t.join(\",\")}) rotate(${state.rotate}deg) scale(${\n\t\t\t\t\t\tstate.scale\n\t\t\t\t\t})`,\n\t\t\t\t}}\n\t\t\t\tonWheel={handleMouseWheel}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-preview-controls\", {\n\t\t\t\t\t\"i-preview-controls-hidden\": state.controlHidden,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Button square flat onClick={onClose}>\n\t\t\t\t\t<Icon icon={<CloseRound />} />\n\t\t\t\t</Button>\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<span className='px-8'>\n\t\t\t\t\t\t{state.current + 1} / {files.length}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{state.scale !== 1 && (\n\t\t\t\t\t<Button flat onClick={() => (state.scale = 1)}>\n\t\t\t\t\t\t<Icon icon={<AspectRatioRound />} />\n\t\t\t\t\t\t<span className='mt-2'>\n\t\t\t\t\t\t\t{(state.scale * 100).toFixed(0)}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button square flat href={file.src} target='_blank'>\n\t\t\t\t\t<Icon icon={<OpenInNewRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat href={file.src} download target='_blank'>\n\t\t\t\t\t<Icon icon={<FileDownloadOutlined />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(90)}>\n\t\t\t\t\t<Icon icon={<RotateRightRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(-90)}>\n\t\t\t\t\t<Icon icon={<RotateLeftRound />} />\n\t\t\t\t</Button>\n\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current - 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current + 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"names":["Content","props","items","initial","renderFile","DefaultRenderFile","onRotate","onChange","onClose","onZoom","state","useReactive","current","rotate","scale","translate","start","dragging","controlHidden","box","useRef","hiddenTO","files","useMemo","map","item","o","src","Object","assign","suffix","getSuffixByUrl","type","getFileType","file","content","isImage","TFileType","IMAGE","handleSwitch","next","l","length","before","handleRotate","deg","handleMouseWheel","throttle","interval","e","after","deltaY","throttleMouseMove","clearTimeout","setTimeout","useMouseMove","preventDefault","x","y","ox","oy","offsetX","pageX","offsetY","pageY","useMouseUp","_jsxs","_Fragment","children","_jsx","ref","className","classNames","style","transform","n","join","onWheel","onMouseDown","onClick","stopPropagation","Button","square","flat","Icon","icon","CloseRound","AspectRatioRound","toFixed","href","target","OpenInNewRound","download","FileDownloadOutlined","RotateRightRound","RotateLeftRound","KeyboardArrowLeftRound","KeyboardArrowRightRound"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import e from"../../components/modal/hookModal.js";import{useRef as t}from"react";import{renderNode as r}from"../utils.js";import i from"./content.js";function s(){const s=t(null);return t=>{const{items:m,modalProps:n,onClose:l,...a}=t,c=r(o(e,{ref:s,visible:!0,className:"i-preview",customized:!0,hideShadow:!0,...n,children:o(i,{...a,items:m,onClose:()=>{s.current?.update({visible:!1})}}),fixed:!0,onClose:()=>{l?.(),c?.()}}))}}export{s as default};
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../packages/js/usePreview/index.tsx"],"sourcesContent":["import HookModal from \"@p/components/modal/hookModal\";\nimport { RefHookModal } from \"@p/components/modal/type\";\nimport { useRef } from \"react\";\nimport { renderNode } from \"../utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPreview } from \"./type\";\n\nexport default function usePreview() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst preview = (config: IPreview) => {\n\t\tconst { items, modalProps, onClose, ...restProps } = config;\n\n\t\tconst handleClose = () => {\n\t\t\tonClose?.();\n\t\t\tunMount?.();\n\t\t};\n\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\tclassName='i-preview'\n\t\t\t\tcustomized\n\t\t\t\thideShadow\n\t\t\t\t{...modalProps}\n\t\t\t\tchildren={\n\t\t\t\t\t<Content\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tonClose={() => {\n\t\t\t\t\t\t\tref.current?.update({ visible: false });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tfixed\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn preview;\n}\n"],"names":["usePreview","ref","useRef","config","items","modalProps","onClose","restProps","unMount","renderNode","_jsx","HookModal","visible","className","customized","hideShadow","children","Content","current","update","fixed"],"mappings":"+LAQc,SAAUA,IACvB,MAAMC,EAAMC,EAAqB,MAiCjC,OA/BiBC,IAChB,MAAMC,MAAEA,EAAKC,WAAEA,EAAUC,QAAEA,KAAYC,GAAcJ,EAO/CK,EAAUC,EACfC,EAACC,EACA,CAAAV,IAAKA,EACLW,SAAO,EACPC,UAAU,YACVC,YACA,EAAAC,iBACIV,EACJW,SACCN,EAACO,EAAO,IACHV,EACJH,MAAOA,EACPE,QAAS,KACRL,EAAIiB,SAASC,OAAO,CAAEP,SAAS,GAAQ,IAI1CQ,OAAK,EACLd,QAvBkB,KACnBA,MACAE,KAAW,IAuBX,CAIH"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsxs as e,jsx as r}from"react/jsx-runtime";import o from"../../components/icon/icon.js";import i from"../../components/video/video.js";import{FeedOutlined as t}from"@ricons/material";import{TFileType as n}from"./type.js";function m(m){const{name:s,suffix:c,type:a}=m;switch(a){case n.IMAGE:return r("img",{src:m.src});case n.VIDEO:return r(i,{...m});default:return e("div",{className:"i-preview-unknown",children:[r(o,{icon:r(t,{}),size:"3em"}),r("h5",{className:"mt-4",children:s||c||"?"})]})}}export{m as default};
|
|
2
|
-
//# sourceMappingURL=renderFile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderFile.js","sources":["../../../packages/js/usePreview/renderFile.tsx"],"sourcesContent":["import Icon from \"@p/components/icon\";\nimport Video from \"@p/components/video\";\nimport { FeedOutlined } from \"@ricons/material\";\nimport { TFileType, TPreviewItem } from \"./type\";\n\nexport default function renderFile(props: TPreviewItem) {\n\tconst { name, suffix, type } = props;\n\n\tswitch (type) {\n\t\tcase TFileType.IMAGE:\n\t\t\treturn <img src={props.src} />;\n\t\tcase TFileType.VIDEO:\n\t\t\treturn <Video {...props} />;\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div className='i-preview-unknown'>\n\t\t\t\t\t<Icon icon={<FeedOutlined />} size='3em' />\n\t\t\t\t\t<h5 className='mt-4'>{name || suffix || \"?\"}</h5>\n\t\t\t\t</div>\n\t\t\t);\n\t}\n}\n"],"names":["renderFile","props","name","suffix","type","TFileType","IMAGE","_jsx","src","VIDEO","Video","_jsxs","className","children","Icon","icon","FeedOutlined","size"],"mappings":"oOAKwB,SAAAA,EAAWC,GAClC,MAAMC,KAAEA,EAAIC,OAAEA,EAAMC,KAAEA,GAASH,EAE/B,OAAQG,GACP,KAAKC,EAAUC,MACd,OAAOC,SAAKC,IAAKP,EAAMO,MACxB,KAAKH,EAAUI,MACd,OAAOF,EAACG,EAAU,IAAAT,IACnB,QACC,OACCU,EAAA,MAAA,CAAKC,UAAU,oBACdC,SAAA,CAAAN,EAACO,EAAI,CAACC,KAAMR,EAACS,MAAiBC,KAAK,QACnCV,EAAI,KAAA,CAAAK,UAAU,OAAMC,SAAEX,GAAQC,GAAU,SAI7C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type.js","sources":["../../../packages/js/usePreview/type.ts"],"sourcesContent":["import { CSSProperties, ReactNode } from \"react\";\nimport { IModal } from \"../../components/modal/type\";\n\nexport type TPreviewItem = {\n\tsrc: string;\n\tname?: ReactNode;\n\tthumb?: string;\n\trotate?: number;\n\tzoom?: number;\n\tstyle?: CSSProperties;\n\ttype?: TFileType;\n\tsuffix?: string;\n};\n\nexport enum TFileType {\n\tIMAGE = \"IMAGE\",\n\tVIDEO = \"VIDEO\",\n\tAUDIO = \"AUDIO\",\n\tPDF = \"PDF\",\n\tEXCEL = \"EXCEL\",\n\tTXT = \"TXT\",\n\tUNKNOWN = \"UNKNOWN\",\n}\n\nexport interface IPreview {\n\titems: (TPreviewItem | string)[];\n\tinitial?: number;\n\tcontrols?: boolean;\n\tloop?: boolean;\n\tclassName?: string;\n\tstyle?: CSSProperties;\n\tmodalProps?: IModal;\n\trenderImage?: (file: TPreviewItem) => ReactNode;\n\trenderFile?: (file: TPreviewItem) => ReactNode;\n\tonClose?: () => void;\n\tonChange?: (after: number, before?: number) => void;\n\tonZoom?: (scale: number) => void;\n\tonRotate?: (deg: number) => void;\n}\n"],"names":["TFileType"],"mappings":"IAcYA,GAAZ,SAAYA,GACXA,EAAA,MAAA,QACAA,EAAA,MAAA,QACAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,QAAA,SACA,CARD,CAAYA,IAAAA,EAQX,CAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=500,t=()=>{document.documentElement.dataset.useripple||(document.documentElement.dataset.useripple="enable",document.addEventListener("mousedown",n))};function n(t){const n=t.target,a=n.closest("[data-ripple]");n&&a&&function(t,n){const[a,i]=function(){const e=document.createElement("SPAN"),t=document.createElement("SPAN");return e.className="i-ripple-container",t.className="i-ripple",e.append(t),[e,t]}(),s=t.getBoundingClientRect(),o=2*Math.max(s.width,s.height);i.style.cssText=`\n left: ${n.pageX-s.left}px;\n top: ${n.pageY-s.top}px;\n width: ${o}px;\n height: ${o}px;\n transition: all 0.5s;\n `,t.insertAdjacentElement("afterbegin",a),t.offsetHeight,i.classList.add("i-ripple-active"),setTimeout((()=>{a.remove()}),e)}(a,t)}export{t as default};
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../packages/js/useRipple/index.ts"],"sourcesContent":["import \"./ripple.css\";\n\nconst TIMEOUT = 500;\n\nconst useRipple = () => {\n\tif (document.documentElement.dataset[\"useripple\"]) return;\n\tdocument.documentElement.dataset[\"useripple\"] = \"enable\";\n\n\tdocument.addEventListener(\"mousedown\", listener);\n};\n\nfunction listener(e: MouseEvent) {\n\tconst target = e.target as HTMLElement;\n\tconst parent = target.closest(\"[data-ripple]\") as HTMLElement;\n\n\tif (!target || !parent) return;\n\n\ttriggerRipple(parent, e);\n}\n\nfunction triggerRipple(target: HTMLElement, e: MouseEvent) {\n\tconst [$box, $ripple] = createRipple();\n\tconst rect = target.getBoundingClientRect();\n\tconst size = Math.max(rect.width, rect.height) * 2;\n\n\t$ripple.style.cssText = `\n left: ${e.pageX - rect.left}px;\n top: ${e.pageY - rect.top}px;\n width: ${size}px;\n height: ${size}px;\n transition: all ${TIMEOUT / 1000}s;\n `;\n\ttarget.insertAdjacentElement(\"afterbegin\", $box);\n\ttarget.offsetHeight;\n\t$ripple.classList.add(\"i-ripple-active\");\n\n\tsetTimeout(() => {\n\t\t$box.remove();\n\t}, TIMEOUT);\n}\n\nfunction createRipple() {\n\tconst $box = document.createElement(\"SPAN\");\n\tconst $ripple = document.createElement(\"SPAN\");\n\n\t$box.className = \"i-ripple-container\";\n\t$ripple.className = \"i-ripple\";\n\n\t$box.append($ripple);\n\n\treturn [$box, $ripple];\n}\n\nexport default useRipple;\n"],"names":["TIMEOUT","useRipple","document","documentElement","dataset","addEventListener","listener","e","target","parent","closest","$box","$ripple","createElement","className","append","createRipple","rect","getBoundingClientRect","size","Math","max","width","height","style","cssText","pageX","left","pageY","top","insertAdjacentElement","offsetHeight","classList","add","setTimeout","remove","triggerRipple"],"mappings":"AAEA,MAAMA,EAAU,IAEVC,EAAY,KACbC,SAASC,gBAAgBC,QAAmB,YAChDF,SAASC,gBAAgBC,QAAmB,UAAI,SAEhDF,SAASG,iBAAiB,YAAaC,GAAS,EAGjD,SAASA,EAASC,GACjB,MAAMC,EAASD,EAAEC,OACXC,EAASD,EAAOE,QAAQ,iBAEzBF,GAAWC,GAKjB,SAAuBD,EAAqBD,GAC3C,MAAOI,EAAMC,GAoBd,WACC,MAAMD,EAAOT,SAASW,cAAc,QAC9BD,EAAUV,SAASW,cAAc,QAOvC,OALAF,EAAKG,UAAY,qBACjBF,EAAQE,UAAY,WAEpBH,EAAKI,OAAOH,GAEL,CAACD,EAAMC,EACf,CA9ByBI,GAClBC,EAAOT,EAAOU,wBACdC,EAA2C,EAApCC,KAAKC,IAAIJ,EAAKK,MAAOL,EAAKM,QAEvCX,EAAQY,MAAMC,QAAU,mBACTlB,EAAEmB,MAAQT,EAAKU,yBAChBpB,EAAEqB,MAAQX,EAAKY,0BACbV,yBACCA,4CAGjBX,EAAOsB,sBAAsB,aAAcnB,GAC3CH,EAAOuB,aACPnB,EAAQoB,UAAUC,IAAI,mBAEtBC,YAAW,KACVvB,EAAKwB,QAAQ,GACXnC,EACJ,CAtBCoC,CAAc3B,EAAQF,EACvB"}
|
package/lib/js/utils.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRoot as t}from"react-dom/client";import{TFileType as e}from"./usePreview/type.js";function n(t,e,n={}){const{refWindow:o,gap:r=0,offset:c=0,position:s="top",align:a}=n;if(!t||!e)return[0,0,{arrowX:0,arrowY:0,arrowPos:"bottom"}];const u=t.getBoundingClientRect(),f=e.getBoundingClientRect();let l=window.innerWidth,g=window.innerHeight,{left:h,top:d,right:p,bottom:m,width:w,height:B}=u;const{height:b,width:z}=f;if(!o){const e=t.offsetParent?.getBoundingClientRect();l=e?.width||l,g=e?.height||g,h=t.offsetLeft,d=t.offsetTop,p=h+u.width,m=d+u.height}let M=0,S=0,$=0,v=0,F="bottom";switch(s){case"left":case"right":M=B!==b?i({containerSize:g,targetSize:B,targetOffset:d,contentSize:b,gap:r,align:a}):d,v=M<d?d-M+B/2:B/2;const t=h-c-z,e=p+c+z;if("left"===s){const n=t<0&&e<=l;S=n?p+c:t,$=n?0:z,F=n?"left":"right"}else{const n=l>e||t<0;S=n?p+c:t,$=n?0:z,F=n?"left":"right"}break;case"top":case"bottom":S=w!==z?i({containerSize:l,targetOffset:h,targetSize:w,contentSize:z,gap:r,align:a}):h,$=S>h?z/2:h-S+w/2;const n=d-c-b,o=m+c+b;if("top"===s){const t=n<0&&o<=g;M=t?m+c:n,v=t?0:b,F=t?"top":"bottom"}else{const t=g>o||n<0;M=t?m+c:n,v=t?0:b,F=t?"top":"bottom"}}return[S,M,{arrowX:$,arrowY:v,arrowPos:F}]}function o(t,e){const{width:n,height:o}=e.getBoundingClientRect(),i=e.offsetParent;let r,c,s=0,a=0;if(i){const{width:t,height:e,left:n,top:o}=i.getBoundingClientRect();r=t,c=e,a=o-(i.scrollTop??0),s=n}else r=window.innerWidth,c=window.innerHeight;const u=t.pageX-s,f=t.pageY-a;return[u+n>=r&&u-n>0?u-n:u,f+o>=c&&f-o>0?f-o:f]}function i({containerSize:t,targetSize:e,targetOffset:n,contentSize:o,gap:i,align:r="center"}){const c=n+e/2;switch(r){case"start":return n+o>t?t-o-i:n;case"center":return e>=o?c-o/2:c+o/2+i>t?n+e-o:c-o/2-i<0?i:c-o/2;case"end":const r=n+e-o;return r>0?r:i;default:return c-o/2}}function r(t){return t.map((t=>["string","number"].includes(typeof t)?{label:t,value:t}:t))}function c(t,e,n=1e3,o,i=t=>1-Math.pow(1-t,4)){const r=performance.now(),c=e-t;let s=requestAnimationFrame((function t(){s=requestAnimationFrame(t);let e=(performance.now()-r)/n;e>=1&&(e=1,cancelAnimationFrame(s));const a=c*i(e);o?.(a)}))}function s(t,e={}){const{precision:n,thousand:o}=e,i=t.toFixed(n);if(!o)return i;const r=i.split("."),c=r[0].replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g,`$&${o}`);return 1===r.length?c:`${c}.${r[1]}`}function a(e,n=document.body){const o=document.createElement("div");n.append(o);const i=t(o),r=setTimeout((()=>{i?.render(e)}),0);return()=>{o?.remove(),i?.unmount(),r&&clearTimeout(r)}}function u(t){return t.match(/\.([^\./\?]+)($|\?)/)?.[1]}function f(t,n){switch(!0){case["jpg","jpeg","png","webp","svg"].includes(t)||n?.startsWith("image/"):return e.IMAGE;case["mp4","avi"].includes(t)||n?.startsWith("video/"):return e.VIDEO;default:return e.UNKNOWN}}function l(t){t.requestFullscreen?.()}function g(){document.exitFullscreen?.()}function h(t,e){const n=[],{zero:o=!0,units:i=["",":",":"]}=e,r=i.length;let c=0;for(;c<r&&!(t<=0&&c>1);){const e=Math.round(t%60);t=Math.floor(t/60),n.unshift((o&&e<10?`0${e}`:e)+i[c++])}return n.join("")}function d(t,e,n){const o=["desc","asc"];if(t===n){const t=o.findIndex((t=>t===e))+1,i=o[t]||"";return[""===i?"":n,i]}return[n,"desc"]}function p(t,e=2){if(!+t)return"0 Bytes";const n=e<0?0:e,o=Math.floor(Math.log(t)/Math.log(1024));return`${parseFloat((t/Math.pow(1024,o)).toFixed(n))} ${["B","KB","MB","GB","TB","PB","EB","ZB","YB"][o]}`}function m(t,e,n){return t<e?e:t>n?n:t}const w=(t,e,n)=>{if(n>=t.length){let e=n-t.length+1;for(;e--;)t.push(void 0)}return t.splice(n,0,t.splice(e,1)[0]),t};export{c as animate,w as arrayMove,m as clamp,g as exitFullScreen,p as formatBytes,s as formatNumber,r as formatOption,h as formatTime,l as fullScreen,f as getFileType,d as getNextSorter,o as getPointPosition,n as getPosition,u as getSuffixByUrl,a as renderNode};
|
|
2
|
-
//# sourceMappingURL=utils.js.map
|
package/lib/js/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../packages/js/utils.ts"],"sourcesContent":["import { MouseEvent, ReactNode } from \"react\";\nimport { Root, createRoot } from \"react-dom/client\";\nimport { TFileType } from \"../js/usePreview/type\";\nimport { TOption, TOptions, TRelativeOptions } from \"../type\";\n\ntype TComputePosition = {\n\tcontainerSize: number;\n\ttargetSize: number;\n\ttargetOffset: number;\n\tcontentSize: number;\n\tgap: number;\n\talign?: \"start\" | \"center\" | \"end\";\n};\n\nexport function getPosition(\n\t$source?: HTMLElement | null,\n\t$popup?: HTMLElement | null,\n\toptions: TRelativeOptions = {}\n): [\n\tx: number,\n\ty: number,\n\tz: {\n\t\tarrowX: number;\n\t\tarrowY: number;\n\t\tarrowPos: string;\n\t}\n] {\n\tconst { refWindow, gap = 0, offset = 0, position = \"top\", align } = options;\n\n\tif (!$source || !$popup)\n\t\treturn [\n\t\t\t0,\n\t\t\t0,\n\t\t\t{\n\t\t\t\tarrowX: 0,\n\t\t\t\tarrowY: 0,\n\t\t\t\tarrowPos: \"bottom\",\n\t\t\t},\n\t\t];\n\n\tconst rectT = $source.getBoundingClientRect();\n\tconst rectC = $popup.getBoundingClientRect();\n\n\tlet w = window.innerWidth;\n\tlet h = window.innerHeight;\n\tlet {\n\t\tleft: tl,\n\t\ttop: tt,\n\t\tright: tr,\n\t\tbottom: tb,\n\t\twidth: tw,\n\t\theight: th,\n\t} = rectT;\n\tconst { height: ch, width: cw } = rectC;\n\n\tif (!refWindow) {\n\t\tconst rectPa = $source.offsetParent?.getBoundingClientRect();\n\n\t\tw = rectPa?.width || w;\n\t\th = rectPa?.height || h;\n\t\ttl = $source.offsetLeft;\n\t\ttt = $source.offsetTop;\n\t\ttr = tl + rectT.width;\n\t\ttb = tt + rectT.height;\n\t}\n\n\tlet y = 0;\n\tlet x = 0;\n\tlet arrowX = 0;\n\tlet arrowY = 0;\n\tlet arrowPos = \"bottom\";\n\n\tswitch (position) {\n\t\tcase \"left\":\n\t\tcase \"right\":\n\t\t\ty =\n\t\t\t\tth !== ch\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: h,\n\t\t\t\t\t\t\ttargetSize: th,\n\t\t\t\t\t\t\ttargetOffset: tt,\n\t\t\t\t\t\t\tcontentSize: ch,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tt;\n\t\t\tarrowY = y < tt ? tt - y + th / 2 : th / 2;\n\n\t\t\tconst xl = tl - offset - cw;\n\t\t\tconst xr = tr + offset + cw;\n\n\t\t\tif (position === \"left\") {\n\t\t\t\tconst R = xl < 0 && xr <= w;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tconst R = w > xr || xl < 0;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\tcase \"bottom\":\n\t\t\tx =\n\t\t\t\ttw !== cw\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: w,\n\t\t\t\t\t\t\ttargetOffset: tl,\n\t\t\t\t\t\t\ttargetSize: tw,\n\t\t\t\t\t\t\tcontentSize: cw,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tl;\n\t\t\tarrowX = x > tl ? cw / 2 : tl - x + tw / 2;\n\n\t\t\tconst yt = tt - offset - ch;\n\t\t\tconst yb = tb + offset + ch;\n\t\t\tif (position === \"top\") {\n\t\t\t\tconst T = yt < 0 && yb <= h;\n\t\t\t\ty = T ? tb + offset : yt;\n\t\t\t\tarrowY = T ? 0 : ch;\n\t\t\t\tarrowPos = T ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\tconst B = h > yb || yt < 0;\n\t\t\t\ty = B ? tb + offset : yt;\n\t\t\t\tarrowY = B ? 0 : ch;\n\t\t\t\tarrowPos = B ? \"top\" : \"bottom\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn [\n\t\tx,\n\t\ty,\n\t\t{\n\t\t\tarrowX,\n\t\t\tarrowY,\n\t\t\tarrowPos,\n\t\t},\n\t];\n}\n\nexport function getPointPosition(e: MouseEvent, content: HTMLElement) {\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst parent = content.offsetParent;\n\tlet pw,\n\t\tph,\n\t\tpl = 0,\n\t\tpt = 0;\n\n\tif (parent) {\n\t\tconst {\n\t\t\twidth: ow,\n\t\t\theight: oh,\n\t\t\tleft: ol,\n\t\t\ttop: ot,\n\t\t} = parent.getBoundingClientRect();\n\t\tconst st = parent.scrollTop ?? 0;\n\n\t\tpw = ow;\n\t\tph = oh;\n\t\tpt = ot - st;\n\t\tpl = ol;\n\t} else {\n\t\tpw = window.innerWidth;\n\t\tph = window.innerHeight;\n\t}\n\tconst x = e.pageX - pl;\n\tconst y = e.pageY - pt;\n\n\tconst left = x + w >= pw ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= ph ? (y - h > 0 ? y - h : y) : y;\n\n\treturn [left, top];\n}\n\nfunction computePosition({\n\tcontainerSize,\n\ttargetSize,\n\ttargetOffset,\n\tcontentSize,\n\tgap,\n\talign = \"center\",\n}: TComputePosition) {\n\tconst centerPoint = targetOffset + targetSize / 2;\n\n\tswitch (align) {\n\t\tcase \"start\":\n\t\t\treturn targetOffset + contentSize > containerSize\n\t\t\t\t? containerSize - contentSize - gap\n\t\t\t\t: targetOffset;\n\t\tcase \"center\":\n\t\t\tif (targetSize >= contentSize) {\n\t\t\t\treturn centerPoint - contentSize / 2;\n\t\t\t}\n\n\t\t\tif (centerPoint + contentSize / 2 + gap > containerSize) {\n\t\t\t\treturn targetOffset + targetSize - contentSize;\n\t\t\t}\n\n\t\t\tif (centerPoint - contentSize / 2 - gap < 0) {\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\treturn centerPoint - contentSize / 2;\n\t\tcase \"end\":\n\t\t\tconst result = targetOffset + targetSize - contentSize;\n\t\t\treturn result > 0 ? result : gap;\n\t\tdefault:\n\t\t\treturn centerPoint - contentSize / 2;\n\t}\n}\n\nexport function formatOption(options: TOptions): TOption[] {\n\treturn options.map((option) =>\n\t\t[\"string\", \"number\"].includes(typeof option)\n\t\t\t? { label: option, value: option }\n\t\t\t: option\n\t) as TOption[];\n}\n\nexport function animate(\n\tfrom: number,\n\tto: number,\n\tduration: number = 1000,\n\tcallback?: (v: number) => void,\n\teasing: (t: number) => number = (t) => 1 - Math.pow(1 - t, 4)\n) {\n\tconst start = performance.now();\n\tconst diff = to - from;\n\tlet raf = requestAnimationFrame(loop);\n\n\tfunction loop() {\n\t\traf = requestAnimationFrame(loop);\n\n\t\tconst past = performance.now() - start;\n\t\tlet percent = past / duration;\n\n\t\tif (percent >= 1) {\n\t\t\tpercent = 1;\n\t\t\tcancelAnimationFrame(raf);\n\t\t}\n\n\t\tconst pass = diff * easing(percent);\n\t\tcallback?.(pass);\n\t}\n}\n\nexport function formatNumber(\n\tvalue: number,\n\toptions: {\n\t\tprecision?: number;\n\t\tthousand?: string;\n\t} = {}\n) {\n\tconst { precision, thousand } = options;\n\n\tconst result = value.toFixed(precision);\n\n\tif (!thousand) return result;\n\n\tconst points = result.split(\".\");\n\tconst integer = points[0].replace(\n\t\t/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g,\n\t\t`$&${thousand}`\n\t);\n\n\tif (points.length === 1) return integer;\n\n\treturn `${integer}.${points[1]}`;\n}\n\nexport function renderNode(node: ReactNode, container = document.body) {\n\tconst div: HTMLDivElement | null = document.createElement(\"div\");\n\tcontainer.append(div);\n\n\tconst root: Root | null = createRoot(div);\n\tconst sto = setTimeout(() => {\n\t\troot?.render(node);\n\t}, 0);\n\n\treturn () => {\n\t\tdiv?.remove();\n\t\troot?.unmount();\n\t\tsto && clearTimeout(sto);\n\t};\n}\n\nexport function getSuffixByUrl(url: string) {\n\treturn url.match(/\\.([^\\./\\?]+)($|\\?)/)?.[1];\n}\n\nexport function getFileType(suffix: string, type?: string): TFileType {\n\tswitch (true) {\n\t\tcase [\"jpg\", \"jpeg\", \"png\", \"webp\", \"svg\"].includes(suffix) ||\n\t\t\ttype?.startsWith(\"image/\"):\n\t\t\treturn TFileType[\"IMAGE\"];\n\t\tcase [\"mp4\", \"avi\"].includes(suffix) || type?.startsWith(\"video/\"):\n\t\t\treturn TFileType[\"VIDEO\"];\n\t\tdefault:\n\t\t\treturn TFileType[\"UNKNOWN\"];\n\t}\n}\n\nexport function fullScreen(el: HTMLElement) {\n\tel.requestFullscreen?.();\n}\n\nexport function exitFullScreen() {\n\tdocument.exitFullscreen?.();\n}\n\nexport function formatTime(\n\ttime: number,\n\toptions?: {\n\t\tzero?: boolean;\n\t\tunits?: string[];\n\t}\n) {\n\tconst result: string[] = [];\n\tconst { zero = true, units = [\"\", \":\", \":\"] } = options || {};\n\n\tconst l = units.length;\n\tlet i = 0;\n\n\twhile (i < l) {\n\t\tif (time <= 0 && i > 1) break;\n\n\t\tconst n = Math.round(time % 60);\n\n\t\ttime = Math.floor(time / 60);\n\n\t\tresult.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);\n\t}\n\n\treturn result.join(\"\");\n}\n\nexport function getNextSorter(\n\tprevSortBy: string,\n\tprevSortType: string,\n\tsortBy: string\n): [sortBy: string, sortType: string] {\n\tconst types = [\"desc\", \"asc\"];\n\n\tif (prevSortBy === sortBy) {\n\t\tconst i = types.findIndex((t) => t === prevSortType) + 1;\n\t\tconst type = types[i] || \"\";\n\t\tconst by = type === \"\" ? \"\" : sortBy;\n\n\t\treturn [by, type];\n\t}\n\n\treturn [sortBy, \"desc\"];\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n\tif (!+bytes) return \"0 Bytes\";\n\n\tconst k = 1024;\n\tconst dm = decimals < 0 ? 0 : decimals;\n\tconst sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n\treturn value < min ? min : value > max ? max : value;\n}\n\nexport const arrayMove = (array, fromIndex: number, toIndex: number) => {\n\tif (toIndex >= array.length) {\n\t\tlet k = toIndex - array.length + 1;\n\t\twhile (k--) {\n\t\t\tarray.push(undefined);\n\t\t}\n\t}\n\tarray.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);\n\treturn array;\n};\n"],"names":["getPosition","$source","$popup","options","refWindow","gap","offset","position","align","arrowX","arrowY","arrowPos","rectT","getBoundingClientRect","rectC","w","window","innerWidth","h","innerHeight","left","tl","top","tt","right","tr","bottom","tb","width","tw","height","th","ch","cw","rectPa","offsetParent","offsetLeft","offsetTop","y","x","computePosition","containerSize","targetSize","targetOffset","contentSize","xl","xr","R","yt","yb","T","B","getPointPosition","e","content","parent","pw","ph","pl","pt","ow","oh","ol","ot","scrollTop","pageX","pageY","centerPoint","result","formatOption","map","option","includes","label","value","animate","from","to","duration","callback","easing","t","Math","pow","start","performance","now","diff","raf","requestAnimationFrame","loop","percent","cancelAnimationFrame","pass","formatNumber","precision","thousand","toFixed","points","split","integer","replace","length","renderNode","node","container","document","body","div","createElement","append","root","createRoot","sto","setTimeout","render","remove","unmount","clearTimeout","getSuffixByUrl","url","match","getFileType","suffix","type","startsWith","TFileType","fullScreen","el","requestFullscreen","exitFullScreen","exitFullscreen","formatTime","time","zero","units","l","i","n","round","floor","unshift","join","getNextSorter","prevSortBy","prevSortType","sortBy","types","findIndex","formatBytes","bytes","decimals","dm","log","parseFloat","clamp","min","max","arrayMove","array","fromIndex","toIndex","k","push","undefined","splice"],"mappings":"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"}
|