@ioca/react 1.5.9 → 1.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +33 -31
- package/lib/cjs/components/affix/affix.js.map +1 -1
- package/lib/cjs/components/affix/totop.js.map +1 -1
- package/lib/cjs/components/badge/badge.js.map +1 -1
- package/lib/cjs/components/button/button.js.map +1 -1
- package/lib/cjs/components/button/confirm.js.map +1 -1
- package/lib/cjs/components/button/group.js.map +1 -1
- package/lib/cjs/components/button/toggle.js.map +1 -1
- package/lib/cjs/components/card/card.js.map +1 -1
- package/lib/cjs/components/checkbox/checkbox.js +1 -1
- package/lib/cjs/components/checkbox/checkbox.js.map +1 -1
- package/lib/cjs/components/checkbox/item.js.map +1 -1
- package/lib/cjs/components/collapse/collapse.js.map +1 -1
- package/lib/cjs/components/collapse/item.js.map +1 -1
- package/lib/cjs/components/datagrid/cell.js +5 -2
- package/lib/cjs/components/datagrid/cell.js.map +1 -1
- package/lib/cjs/components/datagrid/datagrid.js +148 -50
- package/lib/cjs/components/datagrid/datagrid.js.map +1 -1
- package/lib/cjs/components/datagrid/helper.js +83 -0
- package/lib/cjs/components/datagrid/helper.js.map +1 -0
- package/lib/cjs/components/datagrid/resize.js +35 -7
- package/lib/cjs/components/datagrid/resize.js.map +1 -1
- package/lib/cjs/components/datagrid/row.js +17 -3
- package/lib/cjs/components/datagrid/row.js.map +1 -1
- package/lib/cjs/components/datagrid/sorter.js.map +1 -1
- package/lib/cjs/components/datagrid/virtual.js +283 -0
- package/lib/cjs/components/datagrid/virtual.js.map +1 -0
- package/lib/cjs/components/description/description.js.map +1 -1
- package/lib/cjs/components/drawer/drawer.js.map +1 -1
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
- package/lib/cjs/components/dropdown/item.js.map +1 -1
- package/lib/cjs/components/editor/controls.js.map +1 -1
- package/lib/cjs/components/editor/editor.js +5 -0
- package/lib/cjs/components/editor/editor.js.map +1 -1
- package/lib/cjs/components/editor/memtion.js.map +1 -1
- package/lib/cjs/components/flex/flex.js.map +1 -1
- package/lib/cjs/components/form/context.js.map +1 -1
- package/lib/cjs/components/form/field.js.map +1 -1
- package/lib/cjs/components/form/form.js.map +1 -1
- package/lib/cjs/components/form/useConfig.js.map +1 -1
- package/lib/cjs/components/form/useForm.js.map +1 -1
- package/lib/cjs/components/icon/icon.js.map +1 -1
- package/lib/cjs/components/image/image.js.map +1 -1
- package/lib/cjs/components/image/list.js.map +1 -1
- package/lib/cjs/components/input/container.js.map +1 -1
- package/lib/cjs/components/input/input.js.map +1 -1
- package/lib/cjs/components/input/number.js.map +1 -1
- package/lib/cjs/components/input/range.js.map +1 -1
- package/lib/cjs/components/input/textarea.js.map +1 -1
- package/lib/cjs/components/list/item.js.map +1 -1
- package/lib/cjs/components/list/list.js.map +1 -1
- package/lib/cjs/components/loading/loading.js.map +1 -1
- package/lib/cjs/components/message/message.js.map +1 -1
- package/lib/cjs/components/modal/content.js.map +1 -1
- package/lib/cjs/components/modal/context.js.map +1 -1
- package/lib/cjs/components/modal/hookModal.js.map +1 -1
- package/lib/cjs/components/modal/modal.js.map +1 -1
- package/lib/cjs/components/modal/useModal.js.map +1 -1
- package/lib/cjs/components/pagination/page.js.map +1 -1
- package/lib/cjs/components/pagination/pagination.js.map +1 -1
- package/lib/cjs/components/picker/colors/footer.js.map +1 -1
- package/lib/cjs/components/picker/colors/handle.js.map +1 -1
- package/lib/cjs/components/picker/colors/index.js.map +1 -1
- package/lib/cjs/components/picker/dates/dates.js.map +1 -1
- package/lib/cjs/components/picker/dates/index.js.map +1 -1
- package/lib/cjs/components/picker/dates/panel.js.map +1 -1
- package/lib/cjs/components/picker/time/index.js.map +1 -1
- package/lib/cjs/components/picker/time/item.js.map +1 -1
- package/lib/cjs/components/picker/time/panel.js.map +1 -1
- package/lib/cjs/components/popconfirm/popconfirm.js.map +1 -1
- package/lib/cjs/components/popup/content.js.map +1 -1
- package/lib/cjs/components/popup/popup.js.map +1 -1
- package/lib/cjs/components/progress/circle.js.map +1 -1
- package/lib/cjs/components/progress/line.js.map +1 -1
- package/lib/cjs/components/progress/progress.js.map +1 -1
- package/lib/cjs/components/radio/item.js.map +1 -1
- package/lib/cjs/components/radio/radio.js +2 -2
- package/lib/cjs/components/radio/radio.js.map +1 -1
- package/lib/cjs/components/resizable/resizable.js.map +1 -1
- package/lib/cjs/components/river/river.js.map +1 -1
- package/lib/cjs/components/select/options.js.map +1 -1
- package/lib/cjs/components/select/select.js.map +1 -1
- package/lib/cjs/components/step/divider.js.map +1 -1
- package/lib/cjs/components/step/item.js.map +1 -1
- package/lib/cjs/components/step/step.js.map +1 -1
- package/lib/cjs/components/swiper/item.js.map +1 -1
- package/lib/cjs/components/swiper/swiper.js.map +1 -1
- package/lib/cjs/components/tabs/item.js.map +1 -1
- package/lib/cjs/components/tabs/tabs.js.map +1 -1
- package/lib/cjs/components/tag/tag.js.map +1 -1
- package/lib/cjs/components/text/highlight.js.map +1 -1
- package/lib/cjs/components/text/number.js.map +1 -1
- package/lib/cjs/components/text/text.js.map +1 -1
- package/lib/cjs/components/text/time.js.map +1 -1
- package/lib/cjs/components/tree/item.js.map +1 -1
- package/lib/cjs/components/tree/tree.js.map +1 -1
- package/lib/cjs/components/upload/dropbox.js +54 -0
- package/lib/cjs/components/upload/dropbox.js.map +1 -0
- package/lib/cjs/components/upload/renderFile.js +33 -36
- package/lib/cjs/components/upload/renderFile.js.map +1 -1
- package/lib/cjs/components/upload/upload.js +100 -69
- package/lib/cjs/components/upload/upload.js.map +1 -1
- package/lib/cjs/components/utils/empty/index.js.map +1 -1
- package/lib/cjs/components/utils/helpericon/helpericon.js.map +1 -1
- package/lib/cjs/components/video/video.js.map +1 -1
- package/lib/cjs/js/hooks.js +7 -0
- package/lib/cjs/js/hooks.js.map +1 -1
- package/lib/cjs/js/usePreview/content.js.map +1 -1
- package/lib/cjs/js/usePreview/index.js.map +1 -1
- package/lib/cjs/js/usePreview/renderFile.js +1 -1
- package/lib/cjs/js/usePreview/renderFile.js.map +1 -1
- package/lib/cjs/js/usePreview/type.js.map +1 -1
- package/lib/cjs/js/useRipple/index.js +6 -6
- package/lib/cjs/js/useRipple/index.js.map +1 -1
- package/lib/cjs/js/useTheme/index.js.map +1 -1
- package/lib/cjs/js/utils.js.map +1 -1
- package/lib/css/colors.css +784 -779
- package/lib/css/index.css +1 -2
- package/lib/css/index.css.map +1 -1
- package/lib/css/reset.css +59 -69
- package/lib/es/components/affix/affix.js.map +1 -1
- package/lib/es/components/affix/totop.js.map +1 -1
- package/lib/es/components/badge/badge.js.map +1 -1
- package/lib/es/components/button/button.js.map +1 -1
- package/lib/es/components/button/confirm.js.map +1 -1
- package/lib/es/components/button/group.js.map +1 -1
- package/lib/es/components/button/toggle.js.map +1 -1
- package/lib/es/components/card/card.js.map +1 -1
- package/lib/es/components/checkbox/checkbox.js +1 -1
- package/lib/es/components/checkbox/checkbox.js.map +1 -1
- package/lib/es/components/checkbox/item.js.map +1 -1
- package/lib/es/components/collapse/collapse.js.map +1 -1
- package/lib/es/components/collapse/item.js.map +1 -1
- package/lib/es/components/datagrid/cell.js +5 -2
- package/lib/es/components/datagrid/cell.js.map +1 -1
- package/lib/es/components/datagrid/datagrid.js +149 -51
- package/lib/es/components/datagrid/datagrid.js.map +1 -1
- package/lib/es/components/datagrid/helper.js +79 -0
- package/lib/es/components/datagrid/helper.js.map +1 -0
- package/lib/es/components/datagrid/resize.js +35 -7
- package/lib/es/components/datagrid/resize.js.map +1 -1
- package/lib/es/components/datagrid/row.js +17 -3
- package/lib/es/components/datagrid/row.js.map +1 -1
- package/lib/es/components/datagrid/sorter.js.map +1 -1
- package/lib/es/components/datagrid/virtual.js +275 -0
- package/lib/es/components/datagrid/virtual.js.map +1 -0
- package/lib/es/components/description/description.js.map +1 -1
- package/lib/es/components/drawer/drawer.js.map +1 -1
- package/lib/es/components/dropdown/dropdown.js.map +1 -1
- package/lib/es/components/dropdown/item.js.map +1 -1
- package/lib/es/components/editor/controls.js.map +1 -1
- package/lib/es/components/editor/editor.js +5 -0
- package/lib/es/components/editor/editor.js.map +1 -1
- package/lib/es/components/editor/memtion.js.map +1 -1
- package/lib/es/components/flex/flex.js.map +1 -1
- package/lib/es/components/form/context.js.map +1 -1
- package/lib/es/components/form/field.js.map +1 -1
- package/lib/es/components/form/form.js.map +1 -1
- package/lib/es/components/form/useConfig.js.map +1 -1
- package/lib/es/components/form/useForm.js.map +1 -1
- package/lib/es/components/icon/icon.js.map +1 -1
- package/lib/es/components/image/image.js.map +1 -1
- package/lib/es/components/image/list.js.map +1 -1
- package/lib/es/components/input/container.js.map +1 -1
- package/lib/es/components/input/input.js.map +1 -1
- package/lib/es/components/input/number.js.map +1 -1
- package/lib/es/components/input/range.js.map +1 -1
- package/lib/es/components/input/textarea.js.map +1 -1
- package/lib/es/components/list/item.js.map +1 -1
- package/lib/es/components/list/list.js.map +1 -1
- package/lib/es/components/loading/loading.js.map +1 -1
- package/lib/es/components/message/message.js.map +1 -1
- package/lib/es/components/modal/content.js.map +1 -1
- package/lib/es/components/modal/context.js.map +1 -1
- package/lib/es/components/modal/hookModal.js.map +1 -1
- package/lib/es/components/modal/modal.js.map +1 -1
- package/lib/es/components/modal/useModal.js.map +1 -1
- package/lib/es/components/pagination/page.js.map +1 -1
- package/lib/es/components/pagination/pagination.js.map +1 -1
- package/lib/es/components/picker/colors/footer.js.map +1 -1
- package/lib/es/components/picker/colors/handle.js.map +1 -1
- package/lib/es/components/picker/colors/index.js.map +1 -1
- package/lib/es/components/picker/dates/dates.js.map +1 -1
- package/lib/es/components/picker/dates/index.js.map +1 -1
- package/lib/es/components/picker/dates/panel.js.map +1 -1
- package/lib/es/components/picker/time/index.js.map +1 -1
- package/lib/es/components/picker/time/item.js.map +1 -1
- package/lib/es/components/picker/time/panel.js.map +1 -1
- package/lib/es/components/popconfirm/popconfirm.js.map +1 -1
- package/lib/es/components/popup/content.js.map +1 -1
- package/lib/es/components/popup/popup.js.map +1 -1
- package/lib/es/components/progress/circle.js.map +1 -1
- package/lib/es/components/progress/line.js.map +1 -1
- package/lib/es/components/progress/progress.js.map +1 -1
- package/lib/es/components/radio/item.js.map +1 -1
- package/lib/es/components/radio/radio.js +2 -2
- package/lib/es/components/radio/radio.js.map +1 -1
- package/lib/es/components/resizable/resizable.js.map +1 -1
- package/lib/es/components/river/river.js.map +1 -1
- package/lib/es/components/select/options.js.map +1 -1
- package/lib/es/components/select/select.js.map +1 -1
- package/lib/es/components/step/divider.js.map +1 -1
- package/lib/es/components/step/item.js.map +1 -1
- package/lib/es/components/step/step.js.map +1 -1
- package/lib/es/components/swiper/item.js.map +1 -1
- package/lib/es/components/swiper/swiper.js.map +1 -1
- package/lib/es/components/tabs/item.js.map +1 -1
- package/lib/es/components/tabs/tabs.js.map +1 -1
- package/lib/es/components/tag/tag.js.map +1 -1
- package/lib/es/components/text/highlight.js.map +1 -1
- package/lib/es/components/text/number.js.map +1 -1
- package/lib/es/components/text/text.js.map +1 -1
- package/lib/es/components/text/time.js.map +1 -1
- package/lib/es/components/tree/item.js.map +1 -1
- package/lib/es/components/tree/tree.js.map +1 -1
- package/lib/es/components/upload/dropbox.js +46 -0
- package/lib/es/components/upload/dropbox.js.map +1 -0
- package/lib/es/components/upload/renderFile.js +34 -37
- package/lib/es/components/upload/renderFile.js.map +1 -1
- package/lib/es/components/upload/upload.js +101 -70
- package/lib/es/components/upload/upload.js.map +1 -1
- package/lib/es/components/utils/empty/index.js.map +1 -1
- package/lib/es/components/utils/helpericon/helpericon.js.map +1 -1
- package/lib/es/components/video/video.js.map +1 -1
- package/lib/es/js/hooks.js +8 -1
- package/lib/es/js/hooks.js.map +1 -1
- package/lib/es/js/usePreview/content.js.map +1 -1
- package/lib/es/js/usePreview/index.js.map +1 -1
- package/lib/es/js/usePreview/renderFile.js +1 -1
- package/lib/es/js/usePreview/renderFile.js.map +1 -1
- package/lib/es/js/usePreview/type.js.map +1 -1
- package/lib/es/js/useRipple/index.js +6 -6
- package/lib/es/js/useRipple/index.js.map +1 -1
- package/lib/es/js/useTheme/index.js.map +1 -1
- package/lib/es/js/utils.js.map +1 -1
- package/lib/index.js +734 -177
- package/lib/types/components/datagrid/type.d.ts +10 -1
- package/lib/types/components/upload/type.d.ts +3 -8
- package/package.json +97 -98
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderFile.js","sources":["../../../../packages/components/upload/renderFile.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"renderFile.js","sources":["../../../../packages/components/upload/renderFile.tsx"],"sourcesContent":["import { FilePresentOutlined } from \"@ricons/material\";\nimport { memo, MouseEvent, RefObject, useCallback, useMemo } from \"react\";\nimport SortableContainer from \"react-easy-sort\";\nimport { TFileType } from \"../../js/usePreview/type\";\nimport { formatBytes, getFileType } from \"../../js/utils\";\nimport Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\ninterface ListContainerProps {\n sortable?: boolean;\n onSortEnd: (oldIndex: number, newIndex: number) => void;\n [key: string]: any;\n}\n\nexport const ListContainer = memo((props: ListContainerProps) => {\n const { sortable, onSortEnd, children, ...restProps } = props;\n\n if (!sortable) {\n return (\n <div\n className=\"i-upload-list\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n {...restProps}\n >\n {children}\n </div>\n );\n }\n return (\n <SortableContainer\n draggedItemClassName=\"i-upload-item-dragged\"\n onSortEnd={onSortEnd}\n className=\"i-upload-list\"\n {...restProps}\n >\n {children}\n </SortableContainer>\n );\n});\n\nconst CloseBtn = memo(\n ({ index, onRemove }: { index: number; onRemove: (i: number) => void }) => (\n <Helpericon\n active\n className=\"i-upload-delete\"\n onClick={(e: MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n e.preventDefault();\n onRemove(index);\n }}\n />\n ),\n);\n\nconst FileListItem = memo(\n (props: IUploadItem & { ref?: RefObject<HTMLDivElement | null> }) => {\n const { ref, mode, index, file, renderItem, onRemove, onPreview } =\n props;\n\n if (!file) return null;\n\n const { name, size, url, src } = file;\n const type = getFileType(name, file.type);\n\n const handleClick = useCallback(() => {\n onPreview?.(index);\n }, [onPreview, index]);\n\n if (renderItem) {\n return renderItem(file, index);\n }\n\n const node = useMemo(() => {\n switch (type) {\n case TFileType.IMAGE:\n return (\n <Image\n lazyload\n src={url || src}\n fit=\"cover\"\n onMouseDown={(e: MouseEvent<HTMLImageElement>) =>\n e.preventDefault()\n }\n />\n );\n case TFileType.VIDEO:\n return <video src={url || src} preload=\"none\" />;\n default:\n return (\n <>\n <Icon icon={<FilePresentOutlined />} size=\"1.5em\" />\n <span className=\"i-upload-file-name\">{name}</span>\n </>\n );\n }\n }, [type, url, src, name]);\n\n switch (mode) {\n case \"card\":\n return (\n <div\n ref={ref}\n className=\"i-upload-item-card\"\n onClick={handleClick}\n >\n {node}\n <CloseBtn index={index} onRemove={onRemove} />\n {name && (\n <span className=\"px-12 py-8 i-upload-tip\">\n {name}\n </span>\n )}\n </div>\n );\n default:\n return (\n <div\n ref={ref}\n className=\"i-upload-item\"\n onClick={handleClick}\n >\n <span>{name}</span>\n <i className=\"i-upload-size\">\n {formatBytes(size ?? 0)}\n </i>\n <CloseBtn index={index} onRemove={onRemove} />\n </div>\n );\n }\n },\n);\n\nexport default FileListItem;\n"],"names":["memo","_jsx","SortableContainer","Helpericon","type","getFileType","useCallback","useMemo","TFileType","Image","_jsxs","_Fragment","Icon","FilePresentOutlined","formatBytes"],"mappings":"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"}
|
|
@@ -13,113 +13,144 @@ var utils = require('../../js/utils.js');
|
|
|
13
13
|
var button = require('../button/button.js');
|
|
14
14
|
var icon = require('../icon/icon.js');
|
|
15
15
|
var container = require('../input/container.js');
|
|
16
|
+
var dropbox = require('./dropbox.js');
|
|
16
17
|
var renderFile = require('./renderFile.js');
|
|
17
18
|
|
|
18
19
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
|
|
19
20
|
|
|
20
21
|
var classNames__default = /*#__PURE__*/_interopDefaultCompat(classNames);
|
|
21
22
|
|
|
23
|
+
const normalizeFiles = (files) => (files ?? []).map((item) => {
|
|
24
|
+
const file = item;
|
|
25
|
+
if (item instanceof File) {
|
|
26
|
+
const src = file.src ?? URL.createObjectURL(item);
|
|
27
|
+
Object.assign(item, {
|
|
28
|
+
id: file.id ?? radash.uid(7),
|
|
29
|
+
src,
|
|
30
|
+
url: file.url ?? src,
|
|
31
|
+
});
|
|
32
|
+
return item;
|
|
33
|
+
}
|
|
34
|
+
const src = file.src ?? file.name;
|
|
35
|
+
return {
|
|
36
|
+
...file,
|
|
37
|
+
id: file.id ?? radash.uid(7),
|
|
38
|
+
src,
|
|
39
|
+
url: file.url ?? src,
|
|
40
|
+
};
|
|
41
|
+
});
|
|
22
42
|
const Upload = (props) => {
|
|
23
|
-
const {
|
|
24
|
-
const [
|
|
25
|
-
const
|
|
43
|
+
const { label, labelInline, value, files, placeholder, status = "normal", message, className, style, children, droppable, dropbox: dropbox$1, defaultButtonProps, mode = "default", cardSize = "3.2em", disabled, sortable, limit = props.multiple ? Infinity : 1, multiple, renderItem, shouldUpload = () => true, uploader, onChange, onFilesChange, onUpload, onRemove, ...restProps } = props;
|
|
44
|
+
const [internalFileList, setInternalFileList] = react.useState([]);
|
|
45
|
+
const isControlled = react.useMemo(() => value !== undefined || files !== undefined, [value, files]);
|
|
46
|
+
const fileList = isControlled
|
|
47
|
+
? normalizeFiles(value ?? files ?? [])
|
|
48
|
+
: internalFileList;
|
|
49
|
+
const uploadMessage = message;
|
|
26
50
|
const inputRef = react.useRef(null);
|
|
27
51
|
const preview = index.default();
|
|
28
|
-
const defBtnProps =
|
|
52
|
+
const defBtnProps = react.useMemo(() => ({
|
|
29
53
|
children: (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(icon.default, { icon: jsxRuntime.jsx(material.DriveFolderUploadOutlined, {}) }), " \u4E0A\u4F20"] })),
|
|
30
|
-
|
|
54
|
+
...defaultButtonProps,
|
|
55
|
+
}), [defaultButtonProps]);
|
|
31
56
|
const trigger = react.useMemo(() => {
|
|
32
57
|
if (children)
|
|
33
58
|
return children;
|
|
34
59
|
switch (mode) {
|
|
35
60
|
case "card":
|
|
36
|
-
return (jsxRuntime.jsx(button.default, { className:
|
|
61
|
+
return (jsxRuntime.jsx(button.default, { className: "i-upload-card-btn color-5", square: true, flat: true, outline: true, disabled: disabled, children: jsxRuntime.jsx(icon.default, { icon: jsxRuntime.jsx(material.PlusSharp, {}) }) }));
|
|
37
62
|
default:
|
|
38
63
|
return (jsxRuntime.jsx(button.default, { ...defBtnProps, className: classNames__default("i-upload-btn", defBtnProps.className), disabled: disabled }));
|
|
39
64
|
}
|
|
40
|
-
}, [mode, children]);
|
|
41
|
-
const
|
|
42
|
-
|
|
65
|
+
}, [mode, children, disabled, defBtnProps]);
|
|
66
|
+
const handleUpload = react.useCallback(async (files) => {
|
|
67
|
+
if (!uploader)
|
|
68
|
+
return;
|
|
69
|
+
const shouldUploadFiles = files.filter(shouldUpload);
|
|
70
|
+
const result = await Promise.all(shouldUploadFiles.map(uploader));
|
|
71
|
+
return onUpload?.(result);
|
|
72
|
+
}, [uploader, shouldUpload, onUpload]);
|
|
73
|
+
const processFiles = react.useCallback((inputFiles) => {
|
|
43
74
|
const before = fileList;
|
|
44
75
|
const changed = [];
|
|
45
|
-
|
|
46
|
-
const { id, name, size, type } =
|
|
47
|
-
const same = before.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
Object.assign(f, {
|
|
76
|
+
inputFiles.forEach((file) => {
|
|
77
|
+
const { id, name, size, type } = file;
|
|
78
|
+
const same = before.some((pf) => pf.name === name &&
|
|
79
|
+
pf.size === size &&
|
|
80
|
+
pf.type === type);
|
|
81
|
+
const src = URL.createObjectURL(file);
|
|
82
|
+
Object.assign(file, {
|
|
53
83
|
id: id ?? radash.uid(7),
|
|
54
|
-
src: src ??
|
|
55
|
-
url: src ??
|
|
84
|
+
src: src ?? file.name,
|
|
85
|
+
url: src ?? file.name,
|
|
56
86
|
});
|
|
57
|
-
!same
|
|
87
|
+
if (!same)
|
|
88
|
+
changed.push(file);
|
|
58
89
|
});
|
|
59
90
|
const after = [...before, ...changed];
|
|
60
91
|
const last = after.at(-1);
|
|
61
|
-
const nextFiles = multiple
|
|
62
|
-
|
|
63
|
-
|
|
92
|
+
const nextFiles = multiple
|
|
93
|
+
? after.slice(0, limit)
|
|
94
|
+
: last
|
|
95
|
+
? [last]
|
|
96
|
+
: [];
|
|
97
|
+
return { nextFiles, changed };
|
|
98
|
+
}, [fileList, multiple, limit]);
|
|
99
|
+
const applyFiles = react.useCallback((nextFiles, changed, e) => {
|
|
100
|
+
if (!isControlled)
|
|
101
|
+
setInternalFileList(nextFiles);
|
|
64
102
|
onFilesChange?.(nextFiles, changed, e);
|
|
65
103
|
onChange?.(nextFiles, e);
|
|
66
104
|
handleUpload(changed);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
105
|
+
}, [isControlled, onFilesChange, onChange, handleUpload]);
|
|
106
|
+
const handleChange = react.useCallback((e) => {
|
|
107
|
+
const inputFiles = Array.from(e.target.files || []);
|
|
108
|
+
const { nextFiles, changed } = processFiles(inputFiles);
|
|
109
|
+
applyFiles(nextFiles, changed, e);
|
|
110
|
+
if (inputRef.current)
|
|
111
|
+
inputRef.current.value = "";
|
|
112
|
+
}, [processFiles, applyFiles]);
|
|
113
|
+
const handleDropFiles = react.useCallback((files) => {
|
|
114
|
+
const { nextFiles, changed } = processFiles(files);
|
|
115
|
+
applyFiles(nextFiles, changed);
|
|
116
|
+
}, [processFiles, applyFiles]);
|
|
117
|
+
const handleRemove = react.useCallback((i) => {
|
|
118
|
+
const files = [...fileList];
|
|
71
119
|
const changed = files.splice(i, 1);
|
|
72
120
|
URL.revokeObjectURL(changed[0]?.src || "");
|
|
73
|
-
|
|
121
|
+
if (!isControlled)
|
|
122
|
+
setInternalFileList(files);
|
|
74
123
|
onFilesChange?.(files, changed);
|
|
75
124
|
onChange?.(files);
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const setFileList = (files) => {
|
|
89
|
-
if (!files)
|
|
90
|
-
return;
|
|
91
|
-
setFileListState(files.map((f) => {
|
|
92
|
-
const file = f;
|
|
93
|
-
return { ...file, id: file.id ?? radash.uid(7) };
|
|
94
|
-
}));
|
|
95
|
-
};
|
|
96
|
-
const handleSortEnd = (before, after) => {
|
|
97
|
-
const [...files] = fileList;
|
|
125
|
+
onRemove?.(changed[0]);
|
|
126
|
+
if (inputRef.current)
|
|
127
|
+
inputRef.current.value = "";
|
|
128
|
+
}, [fileList, isControlled, onFilesChange, onChange, onRemove]);
|
|
129
|
+
const handlePreview = react.useCallback((i) => {
|
|
130
|
+
preview({
|
|
131
|
+
items: fileList,
|
|
132
|
+
initial: i,
|
|
133
|
+
});
|
|
134
|
+
}, [fileList, preview]);
|
|
135
|
+
const handleSortEnd = react.useCallback((before, after) => {
|
|
136
|
+
const files = [...fileList];
|
|
98
137
|
const nextFiles = utils.arrayMove(files, before, after);
|
|
99
|
-
|
|
138
|
+
if (!isControlled)
|
|
139
|
+
setInternalFileList(nextFiles);
|
|
140
|
+
onFilesChange?.(nextFiles, []);
|
|
100
141
|
onChange?.(nextFiles);
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
setUploadMessage(message);
|
|
104
|
-
}, [status, message]);
|
|
105
|
-
react.useEffect(() => {
|
|
106
|
-
setFileListState(value?.filter?.((file) => !!file.id) ?? []);
|
|
107
|
-
}, [value]);
|
|
108
|
-
react.useEffect(() => {
|
|
109
|
-
setFileList(initialFiles);
|
|
110
|
-
}, []);
|
|
111
|
-
react.useImperativeHandle(ref, () => ({
|
|
112
|
-
getFileList: () => fileList,
|
|
113
|
-
setFileList,
|
|
114
|
-
}), [fileList]);
|
|
115
|
-
return (jsxRuntime.jsx(container.default, { as: 'div', label: label, labelInline: labelInline, className: classNames__default("i-input-label-file", className), style: style, children: jsxRuntime.jsxs("div", { className: classNames__default("i-upload-inner", {
|
|
142
|
+
}, [fileList, isControlled, onFilesChange, onChange]);
|
|
143
|
+
return (jsxRuntime.jsx(container.default, { as: "div", label: label, labelInline: labelInline, className: classNames__default("i-input-label-file", className), style: style, children: jsxRuntime.jsxs("div", { className: classNames__default("i-upload-inner", {
|
|
116
144
|
[`i-upload-${mode}`]: mode !== "default",
|
|
117
145
|
}), style: { ["--upload-card-size"]: cardSize }, children: [jsxRuntime.jsx(renderFile.ListContainer, { sortable: sortable, onSortEnd: handleSortEnd, children: fileList.map((file, i) => {
|
|
118
|
-
const
|
|
146
|
+
const f = file;
|
|
147
|
+
const key = f.id ?? i;
|
|
148
|
+
const node = (jsxRuntime.jsx(renderFile.default, { index: i, file: f, mode: mode, renderItem: renderItem, onRemove: handleRemove, onPreview: handlePreview }, key));
|
|
119
149
|
if (!sortable)
|
|
120
150
|
return node;
|
|
121
|
-
return jsxRuntime.jsx(SortableContainer.SortableItem, { children: node },
|
|
122
|
-
}) }), uploadMessage && (jsxRuntime.jsx("span", { className:
|
|
151
|
+
return jsxRuntime.jsx(SortableContainer.SortableItem, { children: node }, key);
|
|
152
|
+
}) }), uploadMessage && (jsxRuntime.jsx("span", { className: "i-upload-message", children: uploadMessage })), fileList.length < limit &&
|
|
153
|
+
(droppable ? (jsxRuntime.jsx(dropbox.default, { multiple: multiple, accept: restProps.accept, disabled: disabled, onChange: handleChange, onDropFiles: handleDropFiles, children: dropbox$1 })) : (jsxRuntime.jsxs("label", { children: [jsxRuntime.jsx("input", { ...restProps, disabled: disabled, ref: inputRef, type: "file", className: "i-input-file-hidden", multiple: multiple, onChange: handleChange }), trigger] })))] }) }));
|
|
123
154
|
};
|
|
124
155
|
|
|
125
156
|
exports.default = Upload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sources":["../../../../packages/components/upload/upload.tsx"],"sourcesContent":["import { DriveFolderUploadOutlined, PlusSharp } from \"@ricons/material\";\r\nimport classNames from \"classnames\";\r\nimport { uid } from \"radash\";\r\nimport {\r\n\tChangeEvent,\r\n\tCSSProperties,\r\n\tuseEffect,\r\n\tuseImperativeHandle,\r\n\tuseMemo,\r\n\tuseRef,\r\n\tuseState,\r\n} from \"react\";\r\nimport { SortableItem } from \"react-easy-sort\";\r\nimport usePreview from \"../../js/usePreview\";\r\nimport { TPreviewItem } from \"../../js/usePreview/type\";\r\nimport { arrayMove } from \"../../js/utils\";\r\nimport Button from \"../button\";\r\nimport Icon from \"../icon\";\r\nimport InputContainer from \"../input/container\";\r\nimport \"./index.css\";\r\nimport FileListItem, { ListContainer } from \"./renderFile\";\r\nimport { IFile, IUpload } from \"./type\";\r\n\r\nconst Upload = (props: IUpload) => {\r\n\tconst {\r\n\t\tref,\r\n\t\tlabel,\r\n\t\tlabelInline,\r\n\t\tvalue,\r\n\t\tfiles = [],\r\n\t\tinitialFiles,\r\n\t\tplaceholder,\r\n\t\tstatus = \"normal\",\r\n\t\tmessage,\r\n\t\tclassName,\r\n\t\tstyle,\r\n\t\tchildren,\r\n\t\tdefaultButtonProps,\r\n\t\tmode = \"default\",\r\n\t\tcardSize = \"4em\",\r\n\t\tdisabled,\r\n\t\tsortable,\r\n\t\tlimit = props.multiple ? Infinity : 1,\r\n\t\tmultiple,\r\n\t\trenderItem,\r\n\t\tshouldUpload = () => true,\r\n\t\tuploader,\r\n\t\tonChange,\r\n\t\tonFilesChange,\r\n\t\tonUpload,\r\n\t\t...restProps\r\n\t} = props;\r\n\r\n\tconst [fileList, setFileListState] = useState(files);\r\n\tconst [uploadMessage, setUploadMessage] = useState(message);\r\n\tconst inputRef = useRef<HTMLInputElement>(null);\r\n\tconst preview = usePreview();\r\n\tconst defBtnProps = Object.assign(\r\n\t\t{\r\n\t\t\tchildren: (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<Icon icon={<DriveFolderUploadOutlined />} /> 上传\r\n\t\t\t\t</>\r\n\t\t\t),\r\n\t\t},\r\n\t\tdefaultButtonProps,\r\n\t);\r\n\r\n\tconst trigger = useMemo(() => {\r\n\t\tif (children) return children;\r\n\r\n\t\tswitch (mode) {\r\n\t\t\tcase \"card\":\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\tclassName='i-upload-card-btn color-5'\r\n\t\t\t\t\t\tsquare\r\n\t\t\t\t\t\tflat\r\n\t\t\t\t\t\toutline\r\n\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Icon icon={<PlusSharp />} />\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t);\r\n\t\t\tdefault:\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\t{...defBtnProps}\r\n\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\"i-upload-btn\",\r\n\t\t\t\t\t\t\tdefBtnProps.className,\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t}\r\n\t}, [mode, children]);\r\n\r\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\r\n\t\tconst files = Array.from(e.target.files || []) as IFile[];\r\n\t\tconst before = fileList;\r\n\t\tconst changed: IFile[] = [];\r\n\r\n\t\tfiles.map((f) => {\r\n\t\t\tconst { id, name, size, type } = f;\r\n\t\t\tconst same = before.find((pf) => {\r\n\t\t\t\tconst { name: n, size: s, type: t } = pf;\r\n\t\t\t\treturn n === name && s === size && t === type;\r\n\t\t\t});\r\n\t\t\tconst src = URL.createObjectURL(f);\r\n\r\n\t\t\tObject.assign(f, {\r\n\t\t\t\tid: id ?? uid(7),\r\n\t\t\t\tsrc: src ?? f.name,\r\n\t\t\t\turl: src ?? f.name,\r\n\t\t\t});\r\n\t\t\t!same && changed.push(f);\r\n\t\t});\r\n\r\n\t\tconst after = [...before, ...changed];\r\n\t\tconst last = after.at(-1);\r\n\t\tconst nextFiles = multiple ? after.slice(0, limit) : last ? [last] : [];\r\n\r\n\t\tsetFileListState(nextFiles);\r\n\t\tsetUploadMessage(message);\r\n\r\n\t\tonFilesChange?.(nextFiles, changed, e);\r\n\t\tonChange?.(nextFiles, e);\r\n\r\n\t\thandleUpload(changed);\r\n\t\tinputRef.current && (inputRef.current.value = \"\");\r\n\t};\r\n\r\n\tconst handleRemove = (i: number) => {\r\n\t\tconst [...files] = fileList;\r\n\r\n\t\tconst changed = files.splice(i, 1);\r\n\t\tURL.revokeObjectURL(changed[0]?.src || \"\");\r\n\r\n\t\tsetFileListState(files);\r\n\t\tonFilesChange?.(files, changed);\r\n\t\tonChange?.(files);\r\n\r\n\t\tinputRef.current && (inputRef.current.value = \"\");\r\n\t};\r\n\r\n\tconst handleUpload = async (files: IFile[]) => {\r\n\t\tif (!uploader) return;\r\n\r\n\t\tconst shouldUploadFiles = files.filter(shouldUpload);\r\n\r\n\t\tconst result = Promise.all(shouldUploadFiles.map(uploader));\r\n\r\n\t\treturn onUpload?.(result);\r\n\t};\r\n\r\n\tconst handlePreview = (i: number) => {\r\n\t\tpreview({ items: fileList as TPreviewItem[], initial: i });\r\n\t};\r\n\r\n\tconst setFileList = (files?: IFile[] | File[]) => {\r\n\t\tif (!files) return;\r\n\r\n\t\tsetFileListState(\r\n\t\t\tfiles.map((f: IFile | File) => {\r\n\t\t\t\tconst file = f as IFile;\r\n\t\t\t\treturn { ...file, id: file.id ?? uid(7) };\r\n\t\t\t}),\r\n\t\t);\r\n\t};\r\n\r\n\tconst handleSortEnd = (before: number, after: number) => {\r\n\t\tconst [...files] = fileList;\r\n\r\n\t\tconst nextFiles = arrayMove(files, before, after);\r\n\t\tsetFileListState(nextFiles);\r\n\t\tonChange?.(nextFiles);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetUploadMessage(message);\r\n\t}, [status, message]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetFileListState(value?.filter?.((file: IFile) => !!file.id) ?? []);\r\n\t}, [value]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetFileList(initialFiles);\r\n\t}, []);\r\n\r\n\tuseImperativeHandle(\r\n\t\tref,\r\n\t\t() => ({\r\n\t\t\tgetFileList: () => fileList,\r\n\r\n\t\t\tsetFileList,\r\n\t\t}),\r\n\t\t[fileList],\r\n\t);\r\n\r\n\treturn (\r\n\t\t<InputContainer\r\n\t\t\tas='div'\r\n\t\t\tlabel={label}\r\n\t\t\tlabelInline={labelInline}\r\n\t\t\tclassName={classNames(\"i-input-label-file\", className)}\r\n\t\t\tstyle={style}\r\n\t\t>\r\n\t\t\t<div\r\n\t\t\t\tclassName={classNames(\"i-upload-inner\", {\r\n\t\t\t\t\t[`i-upload-${mode}`]: mode !== \"default\",\r\n\t\t\t\t})}\r\n\t\t\t\tstyle={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\r\n\t\t\t>\r\n\t\t\t\t<ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\r\n\t\t\t\t\t{fileList.map((file: IFile, i: number) => {\r\n\t\t\t\t\t\tconst node = (\r\n\t\t\t\t\t\t\t<FileListItem\r\n\t\t\t\t\t\t\t\tkey={i}\r\n\t\t\t\t\t\t\t\tindex={i}\r\n\t\t\t\t\t\t\t\tfile={file}\r\n\t\t\t\t\t\t\t\tmode={mode}\r\n\t\t\t\t\t\t\t\trenderItem={renderItem}\r\n\t\t\t\t\t\t\t\tonRemove={handleRemove}\r\n\t\t\t\t\t\t\t\tonPreview={handlePreview}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tif (!sortable) return node;\r\n\r\n\t\t\t\t\t\treturn <SortableItem key={i}>{node}</SortableItem>;\r\n\t\t\t\t\t})}\r\n\t\t\t\t</ListContainer>\r\n\r\n\t\t\t\t{uploadMessage && (\r\n\t\t\t\t\t<span className='i-upload-message'>{uploadMessage}</span>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{fileList.length < limit && (\r\n\t\t\t\t\t<label>\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t{...restProps}\r\n\t\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\t\tref={inputRef}\r\n\t\t\t\t\t\t\ttype='file'\r\n\t\t\t\t\t\t\tclassName='i-input-file-hidden'\r\n\t\t\t\t\t\t\tmultiple={multiple}\r\n\t\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{trigger}\r\n\t\t\t\t\t</label>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</InputContainer>\r\n\t);\r\n};\r\n\r\nexport default Upload;\r\n"],"names":["useState","useRef","usePreview","_jsxs","_Fragment","_jsx","Icon","DriveFolderUploadOutlined","useMemo","Button","PlusSharp","classNames","uid","arrayMove","useEffect","useImperativeHandle","InputContainer","ListContainer","FileListItem","SortableItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upload.js","sources":["../../../../packages/components/upload/upload.tsx"],"sourcesContent":["import { DriveFolderUploadOutlined, PlusSharp } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n ChangeEvent,\n CSSProperties,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { SortableItem } from \"react-easy-sort\";\nimport usePreview from \"../../js/usePreview\";\nimport { TPreviewItem } from \"../../js/usePreview/type\";\nimport { arrayMove } from \"../../js/utils\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport Dropbox from \"./dropbox\";\nimport \"./index.css\";\nimport FileListItem, { ListContainer } from \"./renderFile\";\nimport { IFile, IUpload } from \"./type\";\n\nconst normalizeFiles = (files?: IFile[] | File[]) =>\n (files ?? []).map((item) => {\n const file = item as IFile;\n if (item instanceof File) {\n const src = file.src ?? URL.createObjectURL(item);\n Object.assign(item, {\n id: file.id ?? uid(7),\n src,\n url: file.url ?? src,\n });\n return item;\n }\n const src = file.src ?? file.name;\n return {\n ...(file as object),\n id: file.id ?? uid(7),\n src,\n url: file.url ?? src,\n } as IFile;\n });\n\nconst Upload = (props: IUpload) => {\n const {\n label,\n labelInline,\n value,\n files,\n placeholder,\n status = \"normal\",\n message,\n className,\n style,\n children,\n droppable,\n dropbox,\n defaultButtonProps,\n mode = \"default\",\n cardSize = \"3.2em\",\n disabled,\n sortable,\n limit = props.multiple ? Infinity : 1,\n multiple,\n renderItem,\n shouldUpload = () => true,\n uploader,\n onChange,\n onFilesChange,\n onUpload,\n onRemove,\n ...restProps\n } = props;\n\n const [internalFileList, setInternalFileList] = useState<IFile[]>([]);\n const isControlled = useMemo(\n () => value !== undefined || files !== undefined,\n [value, files],\n );\n const fileList = isControlled\n ? normalizeFiles(value ?? files ?? [])\n : internalFileList;\n\n const uploadMessage = message;\n const inputRef = useRef<HTMLInputElement>(null);\n const preview = usePreview();\n const defBtnProps = useMemo(\n () => ({\n children: (\n <>\n <Icon icon={<DriveFolderUploadOutlined />} /> 上传\n </>\n ),\n ...defaultButtonProps,\n }),\n [defaultButtonProps],\n );\n\n const trigger = useMemo(() => {\n if (children) return children;\n\n switch (mode) {\n case \"card\":\n return (\n <Button\n className=\"i-upload-card-btn color-5\"\n square\n flat\n outline\n disabled={disabled}\n >\n <Icon icon={<PlusSharp />} />\n </Button>\n );\n default:\n return (\n <Button\n {...defBtnProps}\n className={classNames(\n \"i-upload-btn\",\n defBtnProps.className,\n )}\n disabled={disabled}\n />\n );\n }\n }, [mode, children, disabled, defBtnProps]);\n\n const handleUpload = useCallback(\n async (files: IFile[]) => {\n if (!uploader) return;\n\n const shouldUploadFiles = files.filter(shouldUpload);\n const result = await Promise.all(shouldUploadFiles.map(uploader));\n\n return onUpload?.(result);\n },\n [uploader, shouldUpload, onUpload],\n );\n\n const processFiles = useCallback(\n (inputFiles: IFile[]) => {\n const before = fileList;\n const changed: IFile[] = [];\n\n inputFiles.forEach((file) => {\n const { id, name, size, type } = file;\n const same = before.some(\n (pf) =>\n pf.name === name &&\n pf.size === size &&\n pf.type === type,\n );\n const src = URL.createObjectURL(file);\n\n Object.assign(file, {\n id: id ?? uid(7),\n src: src ?? file.name,\n url: src ?? file.name,\n });\n if (!same) changed.push(file);\n });\n\n const after = [...before, ...changed];\n const last = after.at(-1);\n const nextFiles: IFile[] = multiple\n ? (after.slice(0, limit) as IFile[])\n : last\n ? [last as IFile]\n : [];\n\n return { nextFiles, changed };\n },\n [fileList, multiple, limit],\n );\n\n const applyFiles = useCallback(\n (\n nextFiles: IFile[],\n changed: IFile[],\n e?: ChangeEvent<HTMLInputElement>,\n ) => {\n if (!isControlled) setInternalFileList(nextFiles as IFile[]);\n onFilesChange?.(nextFiles as IFile[], changed as IFile[], e);\n onChange?.(nextFiles, e);\n handleUpload(changed);\n },\n [isControlled, onFilesChange, onChange, handleUpload],\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const inputFiles = Array.from(e.target.files || []) as IFile[];\n const { nextFiles, changed } = processFiles(inputFiles);\n\n applyFiles(nextFiles, changed, e);\n if (inputRef.current) inputRef.current.value = \"\";\n },\n [processFiles, applyFiles],\n );\n\n const handleDropFiles = useCallback(\n (files: File[]) => {\n const { nextFiles, changed } = processFiles(files as IFile[]);\n applyFiles(nextFiles, changed);\n },\n [processFiles, applyFiles],\n );\n\n const handleRemove = useCallback(\n (i: number) => {\n const files = [...fileList];\n const changed = files.splice(i, 1);\n URL.revokeObjectURL((changed[0] as IFile)?.src || \"\");\n\n if (!isControlled) setInternalFileList(files as IFile[]);\n onFilesChange?.(files as IFile[], changed as IFile[]);\n onChange?.(files);\n onRemove?.(changed[0] as IFile);\n\n if (inputRef.current) inputRef.current.value = \"\";\n },\n [fileList, isControlled, onFilesChange, onChange, onRemove],\n );\n\n const handlePreview = useCallback(\n (i: number) => {\n preview({\n items: fileList as unknown as TPreviewItem[],\n initial: i,\n });\n },\n [fileList, preview],\n );\n\n const handleSortEnd = useCallback(\n (before: number, after: number) => {\n const files = [...fileList];\n const nextFiles = arrayMove(files, before, after);\n if (!isControlled) setInternalFileList(nextFiles);\n onFilesChange?.(nextFiles, []);\n onChange?.(nextFiles);\n },\n [fileList, isControlled, onFilesChange, onChange],\n );\n\n return (\n <InputContainer\n as=\"div\"\n label={label}\n labelInline={labelInline}\n className={classNames(\"i-input-label-file\", className)}\n style={style}\n >\n <div\n className={classNames(\"i-upload-inner\", {\n [`i-upload-${mode}`]: mode !== \"default\",\n })}\n style={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n >\n <ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\n {fileList.map((file, i) => {\n const f = file as IFile;\n const key = f.id ?? i;\n const node = (\n <FileListItem\n key={key}\n index={i}\n file={f}\n mode={mode}\n renderItem={renderItem}\n onRemove={handleRemove}\n onPreview={handlePreview}\n />\n );\n\n if (!sortable) return node;\n\n return <SortableItem key={key}>{node}</SortableItem>;\n })}\n </ListContainer>\n\n {uploadMessage && (\n <span className=\"i-upload-message\">{uploadMessage}</span>\n )}\n\n {fileList.length < limit &&\n (droppable ? (\n <Dropbox\n multiple={multiple}\n accept={restProps.accept}\n disabled={disabled}\n onChange={handleChange}\n onDropFiles={handleDropFiles}\n >\n {dropbox}\n </Dropbox>\n ) : (\n <label>\n <input\n {...restProps}\n disabled={disabled}\n ref={inputRef}\n type=\"file\"\n className=\"i-input-file-hidden\"\n multiple={multiple}\n onChange={handleChange}\n />\n {trigger}\n </label>\n ))}\n </div>\n </InputContainer>\n );\n};\n\nexport default Upload;\n"],"names":["uid","dropbox","useState","useMemo","useRef","usePreview","_jsxs","_Fragment","_jsx","Icon","DriveFolderUploadOutlined","Button","PlusSharp","classNames","useCallback","arrayMove","InputContainer","ListContainer","FileListItem","SortableItem","Dropbox"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../packages/components/utils/empty/index.tsx"],"sourcesContent":["import { InboxTwotone } from \"@ricons/material\";\
|
|
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":["_jsx","InboxTwotone","classNames"],"mappings":";;;;;;;;;;;;AAIc,SAAU,KAAK,CAAC,KAAK,EAAA;IAClC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK;AAEzC,IAAA,QACCA,cAAA,CAACC,qBAAY,EAAA,EACZ,SAAS,EAAEC,mBAAU,CAAC,SAAS,EAAE,SAAS,CAAC,EAAA,GACvC,SAAS,EAAA,CACZ;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpericon.js","sources":["../../../../../packages/components/utils/helpericon/helpericon.tsx"],"sourcesContent":["import { CloseRound } from \"@ricons/material\";\
|
|
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":["icon","_jsx","CloseRound","createElement","classNames","Icon","uid"],"mappings":";;;;;;;;;;;;;;;AAQA,MAAM,UAAU,GAAG,CAAC,KAAkB,KAAI;IACzC,MAAM,EACL,EAAE,GAAG,GAAG,EACR,MAAM,EACN,SAAS,QACTA,MAAI,GAAGC,cAAA,CAACC,mBAAU,KAAG,EACrB,GAAG,SAAS,EACZ,GAAG,KAAK;AAET,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAOD,uCAAK;IAEzB,OAAOE,mBAAa,CACnB,EAAE,EACF;AACC,QAAA,SAAS,EAAEC,mBAAU,CAAC,cAAc,EAAE,SAAS,CAAC;AAChD,QAAA,GAAG,SAAS;KACZ,EACD;QACCD,mBAAa,CAACE,YAAI,EAAE;AACnB,YAAA,GAAG,EAAEC,UAAG,CAAC,CAAC,CAAC;kBACXN,MAAI;SACJ,CAAC;AACF,KAAA,CACD;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.js","sources":["../../../../packages/components/video/video.tsx"],"sourcesContent":["import {\r\n\tFullscreenExitRound,\r\n\tFullscreenRound,\r\n\tPauseRound,\r\n\tPlayArrowRound,\r\n\tStopRound,\r\n\tVolumeDownRound,\r\n\tVolumeOffRound,\r\n} from \"@ricons/material\";\r\nimport classNames from \"classnames\";\r\nimport { throttle } from \"radash\";\r\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\r\nimport { useReactive } from \"../../js/hooks\";\r\nimport { exitFullScreen, fullScreen } from \"../../js/utils\";\r\nimport Button from \"../button\";\r\nimport Icon from \"../icon\";\r\nimport Progress from \"../progress\";\r\nimport Text from \"../text\";\r\nimport \"./index.css\";\r\nimport { IVideo } from \"./type\";\r\n\r\nconst Video = (props: IVideo) => {\r\n\tconst {\r\n\t\tref,\r\n\t\tstyle,\r\n\t\thideControls,\r\n\t\tautoplay,\r\n\t\tmuted,\r\n\t\tvolume = 50,\r\n\t\theight,\r\n\t\twidth,\r\n\t\tuseOriginControls,\r\n\t\ttimeProgressProps = {\r\n\t\t\tbarClass: \"bg-blue\",\r\n\t\t},\r\n\t\tvolumeProgressProps = {\r\n\t\t\tbarClass: \"bg-blue\",\r\n\t\t},\r\n\t\tclassName,\r\n\t\tonFullScreenChange,\r\n\t\t...restProps\r\n\t} = props;\r\n\tconst state = useReactive({\r\n\t\tplaying: autoplay,\r\n\t\tvolume: muted ? 0 : volume,\r\n\t\tvolumeCache: 0,\r\n\t\tmuted,\r\n\t\tcurrent: 0,\r\n\t\tduration: 0,\r\n\t\tisFullscreen: false,\r\n\t\tcontrolHidden: true,\r\n\t\tdraggingProgress: false,\r\n\t});\r\n\tconst videoRef = useRef<HTMLVideoElement>(null);\r\n\tconst hiddenTO = useRef<any>(null);\r\n\r\n\tconst timeUpdateListener = (e) => {\r\n\t\tconst tar = e.target;\r\n\t\tif (tar.paused || state.draggingProgress) return;\r\n\r\n\t\tObject.assign(state, {\r\n\t\t\tcurrent: tar.currentTime,\r\n\t\t});\r\n\t};\r\n\r\n\tconst playChangeListener = (e) => {\r\n\t\tstate.playing = !e.target.paused;\r\n\t};\r\n\r\n\tconst fsChangeListener = () => {\r\n\t\tif (typeof document === \"undefined\") return;\r\n\t\tconst tar = videoRef.current?.parentElement;\r\n\t\tif (!tar) return;\r\n\r\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\r\n\t};\r\n\r\n\tconst volumeChangeListener = (e) => {\r\n\t\tconst tar = e.target;\r\n\t\tObject.assign(state, {\r\n\t\t\tvolume: tar.volume * 100,\r\n\t\t\tmuted: tar.volume === 0,\r\n\t\t});\r\n\t};\r\n\r\n\tconst handlePlay = () => {\r\n\t\tconst v = videoRef.current;\r\n\t\tif (!v) return;\r\n\r\n\t\tv.paused ? v.play() : v.pause();\r\n\t};\r\n\r\n\tconst handleReady = (e) => {\r\n\t\tconst tar = e.target;\r\n\t\tObject.assign(state, {\r\n\t\t\tduration: tar.duration,\r\n\t\t\tcurrent: tar.currentTime,\r\n\t\t});\r\n\t\ttar.volume = state.volume / 100;\r\n\t};\r\n\r\n\tconst handleMuted = () => {\r\n\t\tconst v = videoRef.current;\r\n\t\tif (!v) return;\r\n\r\n\t\tif (v.volume > 0) {\r\n\t\t\tstate.volumeCache = v.volume;\r\n\t\t\tv.volume = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\r\n\t};\r\n\r\n\tconst handleStop = () => {\r\n\t\tconst v = videoRef.current;\r\n\t\tif (!v) return;\r\n\r\n\t\tv.currentTime = 0;\r\n\t\tv.pause();\r\n\t};\r\n\r\n\tconst handleFullscreen = () => {\r\n\t\tconst tar = videoRef.current?.parentElement;\r\n\t\tif (!tar) return;\r\n\r\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\r\n\t\tonFullScreenChange?.(!state.isFullscreen);\r\n\t};\r\n\r\n\tconst handleUpdateTime = (t) => {\r\n\t\tconst v = videoRef.current;\r\n\t\tif (!v) return;\r\n\r\n\t\tv.currentTime = (state.duration * t) / 100;\r\n\t};\r\n\r\n\tconst handleUpdateVolume = (t) => {\r\n\t\tconst v = videoRef.current;\r\n\t\tif (!v) return;\r\n\r\n\t\tv.volume = t / 100;\r\n\t};\r\n\r\n\tconst showControls = !hideControls && !useOriginControls;\r\n\r\n\tconst clearHiddenTO = () => {\r\n\t\tif (!hiddenTO.current) return;\r\n\t\tclearTimeout(hiddenTO.current);\r\n\t\thiddenTO.current = null;\r\n\t};\r\n\r\n\tconst setHiddenFalse = () => {\r\n\t\tif (!showControls || !state.controlHidden) return;\r\n\t\tstate.controlHidden = false;\r\n\r\n\t\tclearHiddenTO();\r\n\t\thiddenTO.current = setTimeout(() => {\r\n\t\t\tstate.controlHidden = true;\r\n\t\t}, 1000);\r\n\t};\r\n\r\n\tconst handleDraggingProgress = (dragging) => {\r\n\t\tstate.draggingProgress = dragging;\r\n\t};\r\n\r\n\tconst handleMouseMove = throttle({ interval: 900 }, setHiddenFalse);\r\n\r\n\tuseImperativeHandle(ref, () => ({\r\n\t\tplay: () => {\r\n\t\t\tconst v = videoRef.current;\r\n\t\t\tif (!v) return;\r\n\r\n\t\t\tv.play();\r\n\t\t},\r\n\t\tpause: () => {\r\n\t\t\tconst v = videoRef.current;\r\n\t\t\tif (!v) return;\r\n\r\n\t\t\tv.pause();\r\n\t\t},\r\n\t\tstop: handleStop,\r\n\t\tfullscreen: handleFullscreen,\r\n\t\tgetVideo: () => videoRef.current,\r\n\t}));\r\n\r\n\tuseEffect(() => {\r\n\t\tif (typeof document === \"undefined\") return;\r\n\r\n\t\tconst v = videoRef.current;\r\n\t\tif (!v) return;\r\n\r\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\r\n\t\tv.addEventListener(\"play\", playChangeListener);\r\n\t\tv.addEventListener(\"pause\", playChangeListener);\r\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\r\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\r\n\r\n\t\treturn () => {\r\n\t\t\tclearHiddenTO();\r\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\r\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\r\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\r\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\r\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tconst currentValue = (state.current / state.duration) * 100;\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={classNames(\"i-video\", className)}\r\n\t\t\tstyle={{ height, width, ...style }}\r\n\t\t\tonClick={handlePlay}\r\n\t\t\tonDoubleClick={() => handleFullscreen()}\r\n\t\t\tonMouseMove={handleMouseMove}\r\n\t\t>\r\n\t\t\t<video\r\n\t\t\t\tref={videoRef}\r\n\t\t\t\tonCanPlay={handleReady}\r\n\t\t\t\t{...restProps}\r\n\t\t\t\tcontrols={useOriginControls}\r\n\t\t\t/>\r\n\r\n\t\t\t{showControls && (\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\r\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\r\n\t\t\t\t\t})}\r\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Button.Toggle\r\n\t\t\t\t\t\tclassName='i-video-btn'\r\n\t\t\t\t\t\tflat\r\n\t\t\t\t\t\tsquare\r\n\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\r\n\t\t\t\t\t\tactive={state.playing}\r\n\t\t\t\t\t\tonClick={handlePlay}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\r\n\t\t\t\t\t</Button.Toggle>\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\tclassName='i-video-btn'\r\n\t\t\t\t\t\tflat\r\n\t\t\t\t\t\tsquare\r\n\t\t\t\t\t\tonClick={handleStop}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Icon icon={<StopRound />} />\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t\t<span className='i-video-times font-sm'>\r\n\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\r\n\t\t\t\t\t\t<Text.Time seconds={state.duration} />\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<Progress\r\n\t\t\t\t\t\t{...timeProgressProps}\r\n\t\t\t\t\t\tvalue={currentValue}\r\n\t\t\t\t\t\tonChange={handleUpdateTime}\r\n\t\t\t\t\t\tonDraggingChange={handleDraggingProgress}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<div className='i-video-control-volume'>\r\n\t\t\t\t\t\t<Button.Toggle\r\n\t\t\t\t\t\t\tclassName='i-video-btn'\r\n\t\t\t\t\t\t\tflat\r\n\t\t\t\t\t\t\tsquare\r\n\t\t\t\t\t\t\tactive={state.volume <= 0}\r\n\t\t\t\t\t\t\tafter={\r\n\t\t\t\t\t\t\t\t<Icon\r\n\t\t\t\t\t\t\t\t\ticon={<VolumeOffRound />}\r\n\t\t\t\t\t\t\t\t\tstyle={{ padding: \".125em\" }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonClick={handleMuted}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\r\n\t\t\t\t\t\t</Button.Toggle>\r\n\r\n\t\t\t\t\t\t<div className='i-video-volume'>\r\n\t\t\t\t\t\t\t<Progress\r\n\t\t\t\t\t\t\t\tstyle={{ height: 100 }}\r\n\t\t\t\t\t\t\t\tvertical\r\n\t\t\t\t\t\t\t\t{...volumeProgressProps}\r\n\t\t\t\t\t\t\t\tvalue={state.volume}\r\n\t\t\t\t\t\t\t\tonChange={handleUpdateVolume}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<Button.Toggle\r\n\t\t\t\t\t\tclassName='i-video-btn'\r\n\t\t\t\t\t\tflat\r\n\t\t\t\t\t\tsquare\r\n\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\r\n\t\t\t\t\t\tactive={state.isFullscreen}\r\n\t\t\t\t\t\tonClick={() => handleFullscreen()}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\r\n\t\t\t\t\t</Button.Toggle>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default Video;\r\n"],"names":["useReactive","useRef","exitFullScreen","fullScreen","throttle","useImperativeHandle","useEffect","_jsxs","classNames","_jsx","Button","Icon","PauseRound","PlayArrowRound","StopRound","Text","Progress","VolumeOffRound","VolumeDownRound","FullscreenExitRound","FullscreenRound"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"video.js","sources":["../../../../packages/components/video/video.tsx"],"sourcesContent":["import {\n\tFullscreenExitRound,\n\tFullscreenRound,\n\tPauseRound,\n\tPlayArrowRound,\n\tStopRound,\n\tVolumeDownRound,\n\tVolumeOffRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport { useReactive } from \"../../js/hooks\";\nimport { exitFullScreen, fullScreen } from \"../../js/utils\";\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\tif (typeof document === \"undefined\") return;\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\tif (typeof document === \"undefined\") return;\n\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":["useReactive","useRef","exitFullScreen","fullScreen","throttle","useImperativeHandle","useEffect","_jsxs","classNames","_jsx","Button","Icon","PauseRound","PlayArrowRound","StopRound","Text","Progress","VolumeOffRound","VolumeDownRound","FullscreenExitRound","FullscreenRound"],"mappings":"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"}
|
package/lib/cjs/js/hooks.js
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
var react = require('react');
|
|
4
4
|
|
|
5
|
+
const os = window.navigator.platform;
|
|
6
|
+
if (os.toLowerCase().includes("mac")) {
|
|
7
|
+
document.documentElement.classList.add("os-mac");
|
|
8
|
+
}
|
|
9
|
+
else if (os.toLowerCase().includes("win")) {
|
|
10
|
+
document.documentElement.classList.add("os-windows");
|
|
11
|
+
}
|
|
5
12
|
const MouseMoveEvents = new Set();
|
|
6
13
|
const MouseUpEvents = new Set();
|
|
7
14
|
const KeydownEvents = new Set();
|
package/lib/cjs/js/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../packages/js/hooks.ts"],"sourcesContent":["import {\r\n DependencyList,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\n\r\ntype TMouseEvent = (e: MouseEvent) => void;\r\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\r\ntype TEventOption = {\r\n disabled?: boolean;\r\n};\r\n\r\nconst MouseMoveEvents = new Set<TMouseEvent>();\r\nconst MouseUpEvents = new Set<TMouseEvent>();\r\nconst KeydownEvents = new Set<TKeyboardEvent>();\r\n\r\nlet initialized = false;\r\n\r\nconst initEvents = () => {\r\n if (typeof document === \"undefined\" || initialized) return;\r\n initialized = true;\r\n\r\n const touchable = \"ontouchend\" in document;\r\n const EVENTS: Record<string, any> = {\r\n MOVE: touchable ? \"touchmove\" : \"mousemove\",\r\n UP: touchable ? \"touchend\" : \"mouseup\",\r\n KEYDOWN: \"keydown\",\r\n };\r\n\r\n document.addEventListener(\r\n EVENTS.MOVE,\r\n (e) => {\r\n for (const listener of MouseMoveEvents.values()) {\r\n listener(e);\r\n }\r\n },\r\n { passive: false },\r\n );\r\n\r\n document.addEventListener(EVENTS.UP, (e) => {\r\n for (const listener of MouseUpEvents.values()) {\r\n listener(e);\r\n }\r\n });\r\n\r\n document.addEventListener(EVENTS.KEYDOWN, (e) => {\r\n for (const listener of KeydownEvents.values()) {\r\n listener(e);\r\n }\r\n });\r\n};\r\n\r\nfunction initEventsOnce() {\r\n useEffect(initEvents, []);\r\n}\r\n\r\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n MouseMoveEvents.add(listener);\r\n return () => {\r\n MouseMoveEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n MouseUpEvents.add(listener);\r\n return () => {\r\n MouseUpEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n KeydownEvents.add(listener);\r\n return () => {\r\n KeydownEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useCreation<T>(factory: () => T, deps: DependencyList) {\r\n return useMemo(factory, deps);\r\n}\r\n\r\nexport function useReactive<T extends object>(initialState: T): T {\r\n const [, setFlag] = useState(0);\r\n const scheduledRef = useRef(false);\r\n const proxyCacheRef = useRef(new WeakMap<object, any>());\r\n const rootRef = useRef<T | null>(null);\r\n const proxyRef = useRef<T | null>(null);\r\n\r\n const notify = () => {\r\n if (scheduledRef.current) return;\r\n scheduledRef.current = true;\r\n\r\n const flush = () => {\r\n scheduledRef.current = false;\r\n setFlag((n) => n + 1);\r\n };\r\n\r\n if (typeof queueMicrotask !== \"undefined\") {\r\n queueMicrotask(flush);\r\n return;\r\n }\r\n\r\n Promise.resolve().then(flush);\r\n };\r\n\r\n const createProxy = (target: any): any => {\r\n if (!target || typeof target !== \"object\") return target;\r\n\r\n if (!Array.isArray(target)) {\r\n const proto = Object.getPrototypeOf(target);\r\n const isPlainObject = proto === Object.prototype || proto === null;\r\n if (!isPlainObject) return target;\r\n }\r\n\r\n const cached = proxyCacheRef.current.get(target);\r\n if (cached) return cached;\r\n\r\n const proxy = new Proxy(target, {\r\n get(t, p, r) {\r\n return createProxy(Reflect.get(t, p, r));\r\n },\r\n set(t, p, v, r) {\r\n const prev = Reflect.get(t, p, r);\r\n const ok = Reflect.set(t, p, v, r);\r\n if (prev !== v) notify();\r\n return ok;\r\n },\r\n deleteProperty(t, p) {\r\n const had = Object.prototype.hasOwnProperty.call(t, p);\r\n const ok = Reflect.deleteProperty(t, p);\r\n if (had) notify();\r\n return ok;\r\n },\r\n });\r\n\r\n proxyCacheRef.current.set(target, proxy);\r\n return proxy;\r\n };\r\n\r\n if (!proxyRef.current) {\r\n rootRef.current = initialState;\r\n proxyRef.current = createProxy(rootRef.current);\r\n }\r\n\r\n return proxyRef.current as T;\r\n}\r\n\r\ntype TSetState<T> = (\r\n value: T | undefined | ((prev: T | undefined) => T),\r\n) => void;\r\n\r\ntype TLocalStorageOptions<T> = {\r\n defaultValue?: T | (() => T);\r\n listenStorageChange?: boolean;\r\n};\r\n\r\nexport function useLocalStorageState<T>(\r\n key: string,\r\n options?: TLocalStorageOptions<T>,\r\n): [T | undefined, TSetState<T>] {\r\n const { defaultValue, listenStorageChange } = options ?? {};\r\n\r\n const getDefault = () => {\r\n return typeof defaultValue === \"function\"\r\n ? (defaultValue as () => T)()\r\n : defaultValue;\r\n };\r\n\r\n const read = (): T | undefined => {\r\n if (typeof window === \"undefined\") return getDefault();\r\n\r\n const raw = window.localStorage.getItem(key);\r\n if (raw === null) return getDefault();\r\n\r\n try {\r\n return JSON.parse(raw) as T;\r\n } catch (e) {\r\n return raw as unknown as T;\r\n }\r\n };\r\n\r\n const [state, setState] = useState<T | undefined>(() => read());\r\n\r\n const set: TSetState<T> = (value) => {\r\n setState((prev) => {\r\n const next =\r\n typeof value === \"function\"\r\n ? (value as (prev: T | undefined) => T)(prev)\r\n : value;\r\n\r\n if (typeof window !== \"undefined\") {\r\n if (next === undefined) {\r\n window.localStorage.removeItem(key);\r\n } else {\r\n window.localStorage.setItem(key, JSON.stringify(next));\r\n }\r\n }\r\n\r\n return next;\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (!listenStorageChange) return;\r\n if (typeof window === \"undefined\") return;\r\n\r\n const onStorage = (e: StorageEvent) => {\r\n if (e.key !== key) return;\r\n\r\n if (e.newValue === null) {\r\n setState(getDefault());\r\n return;\r\n }\r\n\r\n try {\r\n setState(JSON.parse(e.newValue) as T);\r\n } catch (err) {\r\n setState(e.newValue as unknown as T);\r\n }\r\n };\r\n\r\n window.addEventListener(\"storage\", onStorage);\r\n return () => {\r\n window.removeEventListener(\"storage\", onStorage);\r\n };\r\n }, [key, listenStorageChange]);\r\n\r\n return [state, set];\r\n}\r\n\r\ntype TResponsiveConfig = Record<string, number>;\r\n\r\nlet responsiveConfig: TResponsiveConfig = {};\r\n\r\nexport function configResponsive(config: TResponsiveConfig) {\r\n responsiveConfig = config;\r\n}\r\n\r\nexport function useResponsive() {\r\n const compute = () => {\r\n if (typeof window === \"undefined\") return {};\r\n const w = window.innerWidth;\r\n const result: Record<string, boolean> = {};\r\n\r\n for (const key in responsiveConfig) {\r\n result[key] = w >= responsiveConfig[key];\r\n }\r\n\r\n return result;\r\n };\r\n\r\n const [state, setState] = useState<Record<string, boolean>>(() =>\r\n compute(),\r\n );\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const onResize = () => {\r\n const next = compute();\r\n setState((prev) => {\r\n const prevKeys = Object.keys(prev);\r\n const nextKeys = Object.keys(next);\r\n if (prevKeys.length !== nextKeys.length) return next;\r\n\r\n for (const k of nextKeys) {\r\n if (prev[k] !== next[k]) return next;\r\n }\r\n\r\n return prev;\r\n });\r\n };\r\n\r\n onResize();\r\n window.addEventListener(\"resize\", onResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", onResize);\r\n };\r\n }, []);\r\n\r\n return state;\r\n}\r\n\r\ntype TSize = { width: number; height: number };\r\n\r\nexport function useSize(target: any): TSize | undefined {\r\n const [size, setSize] = useState<TSize>();\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const resolveTarget = () => {\r\n if (!target) return null;\r\n if (typeof target === \"function\") return target();\r\n if (typeof target === \"object\" && \"current\" in target) {\r\n return target.current;\r\n }\r\n return target;\r\n };\r\n\r\n const el = resolveTarget() as HTMLElement | null;\r\n if (!el) return;\r\n\r\n const update = () => {\r\n const rect = el.getBoundingClientRect();\r\n setSize({ width: rect.width, height: rect.height });\r\n };\r\n\r\n update();\r\n\r\n let ro: ResizeObserver | undefined;\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n ro = new ResizeObserver(update);\r\n ro.observe(el);\r\n }\r\n\r\n window.addEventListener(\"resize\", update);\r\n return () => {\r\n window.removeEventListener(\"resize\", update);\r\n ro?.disconnect();\r\n };\r\n }, [target]);\r\n\r\n return size;\r\n}\r\n\r\nconst defaultObserver = {\r\n observe: undefined,\r\n unobserve: undefined,\r\n disconnect: undefined,\r\n};\r\n\r\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\r\n const wmRef = useRef(new WeakMap());\r\n const ioRef = useRef<IntersectionObserver | undefined>(undefined);\r\n\r\n if (typeof window !== \"undefined\" && !ioRef.current) {\r\n ioRef.current = new IntersectionObserver((entries) => {\r\n entries.map((entry) => {\r\n const callback = wmRef.current.get(entry.target);\r\n callback?.(entry.target, entry.isIntersecting);\r\n });\r\n }, configs);\r\n }\r\n\r\n const observe = useCallback((target: HTMLElement, callback: Function) => {\r\n if (!target || !ioRef.current || wmRef.current.get(target)) return;\r\n wmRef.current.set(target, callback);\r\n ioRef.current.observe(target);\r\n }, []);\r\n\r\n const unobserve = useCallback((target: HTMLElement) => {\r\n if (!target || !ioRef.current) return;\r\n ioRef.current.unobserve(target);\r\n wmRef.current.delete(target);\r\n }, []);\r\n\r\n const disconnect = useCallback(() => {\r\n ioRef.current?.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n ioRef.current?.disconnect();\r\n };\r\n }, []);\r\n\r\n if (typeof window === \"undefined\") {\r\n return {\r\n ...defaultObserver,\r\n };\r\n }\r\n\r\n return {\r\n observe,\r\n unobserve,\r\n disconnect,\r\n };\r\n}\r\n\r\nexport function useResizeObserver() {\r\n const wmRef = useRef(new WeakMap());\r\n const ioRef = useRef<ResizeObserver | undefined>(undefined);\r\n\r\n if (typeof window !== \"undefined\" && !ioRef.current) {\r\n ioRef.current = new ResizeObserver((entries) => {\r\n entries.map((entry) => {\r\n const callback = wmRef.current.get(entry.target);\r\n callback?.(entry.target);\r\n });\r\n });\r\n }\r\n\r\n const observe = useCallback((target: HTMLElement, callback: Function) => {\r\n if (!target || !ioRef.current || wmRef.current.get(target)) return;\r\n ioRef.current.observe(target);\r\n wmRef.current.set(target, callback);\r\n }, []);\r\n\r\n const unobserve = useCallback((target: HTMLElement) => {\r\n if (!target || !ioRef.current) return;\r\n ioRef.current.unobserve(target);\r\n wmRef.current.delete(target);\r\n }, []);\r\n\r\n const disconnect = useCallback(() => {\r\n ioRef.current?.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n ioRef.current?.disconnect();\r\n };\r\n }, []);\r\n\r\n if (typeof window === \"undefined\") {\r\n return {\r\n ...defaultObserver,\r\n };\r\n }\r\n\r\n return {\r\n observe,\r\n unobserve,\r\n disconnect,\r\n };\r\n}\r\n"],"names":["useEffect","useState","useRef","useCallback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../packages/js/hooks.ts"],"sourcesContent":["import {\n\tDependencyList,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from \"react\";\n\ntype TMouseEvent = (e: MouseEvent) => void;\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\ntype TEventOption = {\n\tdisabled?: boolean;\n};\n\nconst os = window.navigator.platform;\n\nif (os.toLowerCase().includes(\"mac\")) {\n\tdocument.documentElement.classList.add(\"os-mac\");\n} else if (os.toLowerCase().includes(\"win\")) {\n\tdocument.documentElement.classList.add(\"os-windows\");\n}\n\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst KeydownEvents = new Set<TKeyboardEvent>();\n\nlet initialized = false;\n\nconst initEvents = () => {\n\tif (typeof document === \"undefined\" || initialized) return;\n\tinitialized = true;\n\n\tconst touchable = \"ontouchend\" in document;\n\tconst EVENTS: Record<string, any> = {\n\t\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\t\tUP: touchable ? \"touchend\" : \"mouseup\",\n\t\tKEYDOWN: \"keydown\",\n\t};\n\n\tdocument.addEventListener(\n\t\tEVENTS.MOVE,\n\t\t(e) => {\n\t\t\tfor (const listener of MouseMoveEvents.values()) {\n\t\t\t\tlistener(e);\n\t\t\t}\n\t\t},\n\t\t{ passive: false },\n\t);\n\n\tdocument.addEventListener(EVENTS.UP, (e) => {\n\t\tfor (const listener of MouseUpEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t});\n\n\tdocument.addEventListener(EVENTS.KEYDOWN, (e) => {\n\t\tfor (const listener of KeydownEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t});\n};\n\nfunction initEventsOnce() {\n\tuseEffect(initEvents, []);\n}\n\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\n\tinitEventsOnce();\n\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}, []);\n}\n\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\n\tinitEventsOnce();\n\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}, []);\n}\n\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\n\tinitEventsOnce();\n\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}, []);\n}\n\nexport function useCreation<T>(factory: () => T, deps: DependencyList) {\n\treturn useMemo(factory, deps);\n}\n\nexport function useReactive<T extends object>(initialState: T): T {\n\tconst [, setFlag] = useState(0);\n\tconst scheduledRef = useRef(false);\n\tconst proxyCacheRef = useRef(new WeakMap<object, any>());\n\tconst rootRef = useRef<T | null>(null);\n\tconst proxyRef = useRef<T | null>(null);\n\n\tconst notify = () => {\n\t\tif (scheduledRef.current) return;\n\t\tscheduledRef.current = true;\n\n\t\tconst flush = () => {\n\t\t\tscheduledRef.current = false;\n\t\t\tsetFlag((n) => n + 1);\n\t\t};\n\n\t\tif (typeof queueMicrotask !== \"undefined\") {\n\t\t\tqueueMicrotask(flush);\n\t\t\treturn;\n\t\t}\n\n\t\tPromise.resolve().then(flush);\n\t};\n\n\tconst createProxy = (target: any): any => {\n\t\tif (!target || typeof target !== \"object\") return target;\n\n\t\tif (!Array.isArray(target)) {\n\t\t\tconst proto = Object.getPrototypeOf(target);\n\t\t\tconst isPlainObject = proto === Object.prototype || proto === null;\n\t\t\tif (!isPlainObject) return target;\n\t\t}\n\n\t\tconst cached = proxyCacheRef.current.get(target);\n\t\tif (cached) return cached;\n\n\t\tconst proxy = new Proxy(target, {\n\t\t\tget(t, p, r) {\n\t\t\t\treturn createProxy(Reflect.get(t, p, r));\n\t\t\t},\n\t\t\tset(t, p, v, r) {\n\t\t\t\tconst prev = Reflect.get(t, p, r);\n\t\t\t\tconst ok = Reflect.set(t, p, v, r);\n\t\t\t\tif (prev !== v) notify();\n\t\t\t\treturn ok;\n\t\t\t},\n\t\t\tdeleteProperty(t, p) {\n\t\t\t\tconst had = Object.prototype.hasOwnProperty.call(t, p);\n\t\t\t\tconst ok = Reflect.deleteProperty(t, p);\n\t\t\t\tif (had) notify();\n\t\t\t\treturn ok;\n\t\t\t},\n\t\t});\n\n\t\tproxyCacheRef.current.set(target, proxy);\n\t\treturn proxy;\n\t};\n\n\tif (!proxyRef.current) {\n\t\trootRef.current = initialState;\n\t\tproxyRef.current = createProxy(rootRef.current);\n\t}\n\n\treturn proxyRef.current as T;\n}\n\ntype TSetState<T> = (\n\tvalue: T | undefined | ((prev: T | undefined) => T),\n) => void;\n\ntype TLocalStorageOptions<T> = {\n\tdefaultValue?: T | (() => T);\n\tlistenStorageChange?: boolean;\n};\n\nexport function useLocalStorageState<T>(\n\tkey: string,\n\toptions?: TLocalStorageOptions<T>,\n): [T | undefined, TSetState<T>] {\n\tconst { defaultValue, listenStorageChange } = options ?? {};\n\n\tconst getDefault = () => {\n\t\treturn typeof defaultValue === \"function\"\n\t\t\t? (defaultValue as () => T)()\n\t\t\t: defaultValue;\n\t};\n\n\tconst read = (): T | undefined => {\n\t\tif (typeof window === \"undefined\") return getDefault();\n\n\t\tconst raw = window.localStorage.getItem(key);\n\t\tif (raw === null) return getDefault();\n\n\t\ttry {\n\t\t\treturn JSON.parse(raw) as T;\n\t\t} catch (e) {\n\t\t\treturn raw as unknown as T;\n\t\t}\n\t};\n\n\tconst [state, setState] = useState<T | undefined>(() => read());\n\n\tconst set: TSetState<T> = (value) => {\n\t\tsetState((prev) => {\n\t\t\tconst next =\n\t\t\t\ttypeof value === \"function\"\n\t\t\t\t\t? (value as (prev: T | undefined) => T)(prev)\n\t\t\t\t\t: value;\n\n\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\tif (next === undefined) {\n\t\t\t\t\twindow.localStorage.removeItem(key);\n\t\t\t\t} else {\n\t\t\t\t\twindow.localStorage.setItem(key, JSON.stringify(next));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn next;\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!listenStorageChange) return;\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst onStorage = (e: StorageEvent) => {\n\t\t\tif (e.key !== key) return;\n\n\t\t\tif (e.newValue === null) {\n\t\t\t\tsetState(getDefault());\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tsetState(JSON.parse(e.newValue) as T);\n\t\t\t} catch (err) {\n\t\t\t\tsetState(e.newValue as unknown as T);\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"storage\", onStorage);\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"storage\", onStorage);\n\t\t};\n\t}, [key, listenStorageChange]);\n\n\treturn [state, set];\n}\n\ntype TResponsiveConfig = Record<string, number>;\n\nlet responsiveConfig: TResponsiveConfig = {};\n\nexport function configResponsive(config: TResponsiveConfig) {\n\tresponsiveConfig = config;\n}\n\nexport function useResponsive() {\n\tconst compute = () => {\n\t\tif (typeof window === \"undefined\") return {};\n\t\tconst w = window.innerWidth;\n\t\tconst result: Record<string, boolean> = {};\n\n\t\tfor (const key in responsiveConfig) {\n\t\t\tresult[key] = w >= responsiveConfig[key];\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconst [state, setState] = useState<Record<string, boolean>>(() =>\n\t\tcompute(),\n\t);\n\n\tuseEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst onResize = () => {\n\t\t\tconst next = compute();\n\t\t\tsetState((prev) => {\n\t\t\t\tconst prevKeys = Object.keys(prev);\n\t\t\t\tconst nextKeys = Object.keys(next);\n\t\t\t\tif (prevKeys.length !== nextKeys.length) return next;\n\n\t\t\t\tfor (const k of nextKeys) {\n\t\t\t\t\tif (prev[k] !== next[k]) return next;\n\t\t\t\t}\n\n\t\t\t\treturn prev;\n\t\t\t});\n\t\t};\n\n\t\tonResize();\n\t\twindow.addEventListener(\"resize\", onResize);\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"resize\", onResize);\n\t\t};\n\t}, []);\n\n\treturn state;\n}\n\ntype TSize = { width: number; height: number };\n\nexport function useSize(target: any): TSize | undefined {\n\tconst [size, setSize] = useState<TSize>();\n\n\tuseEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst resolveTarget = () => {\n\t\t\tif (!target) return null;\n\t\t\tif (typeof target === \"function\") return target();\n\t\t\tif (typeof target === \"object\" && \"current\" in target) {\n\t\t\t\treturn target.current;\n\t\t\t}\n\t\t\treturn target;\n\t\t};\n\n\t\tconst el = resolveTarget() as HTMLElement | null;\n\t\tif (!el) return;\n\n\t\tconst update = () => {\n\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\tsetSize({ width: rect.width, height: rect.height });\n\t\t};\n\n\t\tupdate();\n\n\t\tlet ro: ResizeObserver | undefined;\n\t\tif (typeof ResizeObserver !== \"undefined\") {\n\t\t\tro = new ResizeObserver(update);\n\t\t\tro.observe(el);\n\t\t}\n\n\t\twindow.addEventListener(\"resize\", update);\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"resize\", update);\n\t\t\tro?.disconnect();\n\t\t};\n\t}, [target]);\n\n\treturn size;\n}\n\nconst defaultObserver = {\n\tobserve: undefined,\n\tunobserve: undefined,\n\tdisconnect: undefined,\n};\n\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\n\tconst wmRef = useRef(new WeakMap());\n\tconst ioRef = useRef<IntersectionObserver | undefined>(undefined);\n\n\tif (typeof window !== \"undefined\" && !ioRef.current) {\n\t\tioRef.current = new IntersectionObserver((entries) => {\n\t\t\tentries.map((entry) => {\n\t\t\t\tconst callback = wmRef.current.get(entry.target);\n\t\t\t\tcallback?.(entry.target, entry.isIntersecting);\n\t\t\t});\n\t\t}, configs);\n\t}\n\n\tconst observe = useCallback((target: HTMLElement, callback: Function) => {\n\t\tif (!target || !ioRef.current || wmRef.current.get(target)) return;\n\t\twmRef.current.set(target, callback);\n\t\tioRef.current.observe(target);\n\t}, []);\n\n\tconst unobserve = useCallback((target: HTMLElement) => {\n\t\tif (!target || !ioRef.current) return;\n\t\tioRef.current.unobserve(target);\n\t\twmRef.current.delete(target);\n\t}, []);\n\n\tconst disconnect = useCallback(() => {\n\t\tioRef.current?.disconnect();\n\t}, []);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tioRef.current?.disconnect();\n\t\t};\n\t}, []);\n\n\tif (typeof window === \"undefined\") {\n\t\treturn {\n\t\t\t...defaultObserver,\n\t\t};\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n\nexport function useResizeObserver() {\n\tconst wmRef = useRef(new WeakMap());\n\tconst ioRef = useRef<ResizeObserver | undefined>(undefined);\n\n\tif (typeof window !== \"undefined\" && !ioRef.current) {\n\t\tioRef.current = new ResizeObserver((entries) => {\n\t\t\tentries.map((entry) => {\n\t\t\t\tconst callback = wmRef.current.get(entry.target);\n\t\t\t\tcallback?.(entry.target);\n\t\t\t});\n\t\t});\n\t}\n\n\tconst observe = useCallback((target: HTMLElement, callback: Function) => {\n\t\tif (!target || !ioRef.current || wmRef.current.get(target)) return;\n\t\tioRef.current.observe(target);\n\t\twmRef.current.set(target, callback);\n\t}, []);\n\n\tconst unobserve = useCallback((target: HTMLElement) => {\n\t\tif (!target || !ioRef.current) return;\n\t\tioRef.current.unobserve(target);\n\t\twmRef.current.delete(target);\n\t}, []);\n\n\tconst disconnect = useCallback(() => {\n\t\tioRef.current?.disconnect();\n\t}, []);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tioRef.current?.disconnect();\n\t\t};\n\t}, []);\n\n\tif (typeof window === \"undefined\") {\n\t\treturn {\n\t\t\t...defaultObserver,\n\t\t};\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n"],"names":["useEffect","useState","useRef","useCallback"],"mappings":"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"}
|