@ioca/react 1.5.13 → 1.5.15
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/dropdown/dropdown.js +6 -3
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
- package/lib/cjs/components/dropdown/item.js +20 -4
- package/lib/cjs/components/dropdown/item.js.map +1 -1
- package/lib/cjs/components/editor/editor.js +27 -11
- package/lib/cjs/components/editor/editor.js.map +1 -1
- package/lib/cjs/components/loading/loading.js +4 -3
- package/lib/cjs/components/loading/loading.js.map +1 -1
- package/lib/cjs/components/popup/popup.js +7 -17
- package/lib/cjs/components/popup/popup.js.map +1 -1
- package/lib/cjs/components/scroll/index.js +10 -0
- package/lib/cjs/components/scroll/index.js.map +1 -0
- package/lib/cjs/components/scroll/scroll.js +78 -0
- package/lib/cjs/components/scroll/scroll.js.map +1 -0
- package/lib/cjs/components/upload/upload.js +5 -5
- package/lib/cjs/components/upload/upload.js.map +1 -1
- package/lib/cjs/index.js +2 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/js/hooks.js +8 -6
- package/lib/cjs/js/hooks.js.map +1 -1
- package/lib/css/colors.css +784 -784
- package/lib/css/index.css +1 -1
- package/lib/css/index.css.map +1 -1
- package/lib/es/components/dropdown/dropdown.js +7 -5
- package/lib/es/components/dropdown/dropdown.js.map +1 -1
- package/lib/es/components/dropdown/item.js +20 -4
- package/lib/es/components/dropdown/item.js.map +1 -1
- package/lib/es/components/editor/editor.js +27 -11
- package/lib/es/components/editor/editor.js.map +1 -1
- package/lib/es/components/loading/loading.js +4 -3
- package/lib/es/components/loading/loading.js.map +1 -1
- package/lib/es/components/popup/popup.js +7 -17
- package/lib/es/components/popup/popup.js.map +1 -1
- package/lib/es/components/scroll/index.js +6 -0
- package/lib/es/components/scroll/index.js.map +1 -0
- package/lib/es/components/scroll/scroll.js +70 -0
- package/lib/es/components/scroll/scroll.js.map +1 -0
- package/lib/es/components/upload/upload.js +7 -7
- package/lib/es/components/upload/upload.js.map +1 -1
- package/lib/es/index.js +1 -0
- package/lib/es/index.js.map +1 -1
- package/lib/es/js/hooks.js +8 -6
- package/lib/es/js/hooks.js.map +1 -1
- package/lib/index.js +140 -51
- package/lib/types/components/dropdown/dropdown.d.ts +1 -1
- package/lib/types/components/editor/type.d.ts +1 -1
- package/lib/types/components/scroll/index.d.ts +5 -0
- package/lib/types/components/scroll/scroll.d.ts +6 -0
- package/lib/types/components/scroll/type.d.ts +7 -0
- package/lib/types/components/upload/type.d.ts +1 -0
- package/lib/types/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../../packages/components/editor/editor.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport Memtion, {\n filterMemtionOptions,\n getMemtionReplaceRange,\n getMemtionText,\n getSelectionRect,\n insertMemtionOption,\n removeAdjacentMemtionTag,\n sanitizePlaintextOnMemtionHtml,\n} from \"./memtion\";\nimport { IEditor, IEditorMemtionOption } from \"./type\";\n\nconst controlBtnProps: IButton = {\n square: true,\n flat: true,\n size: \"small\",\n};\n\nconst Editor = (props: IEditor) => {\n const {\n ref,\n value = \"\",\n width,\n height = \"10em\",\n placeholder,\n autosize,\n border = true,\n mode = \"rich\",\n hideControl,\n addtionControls,\n memtion,\n className,\n style,\n onChange,\n onEnter,\n onFocus,\n onBlur,\n onPaste,\n onMouseUp,\n onKeyUp,\n onKeyDown,\n ...restProps\n } = props;\n const editorRef = useRef<HTMLDivElement>(null);\n const selectionRef = useRef<Range | null>(null);\n const memtionTriggerRangeRef = useRef<Range | null>(null);\n const pendingMemtionRef = useRef(false);\n const isPlaintextMode = mode === \"plaintext\";\n const isRichMode = mode === \"rich\";\n const isPlaintextOnMemtionMode = mode === \"plaintextOnMemtion\";\n const [memtionVisible, setMemtionVisible] = useState(false);\n const [memtionRect, setMemtionRect] = useState<DOMRect | null>(null);\n const [memtionKeyword, setMemtionKeyword] = useState(\"\");\n const [memtionActiveIndex, setMemtionActiveIndex] = useState(0);\n const memtionOptions = useMemo(\n () => filterMemtionOptions(memtion?.options ?? [], memtionKeyword),\n [memtion?.options, memtionKeyword],\n );\n\n const sanitizeValue = (nextValue: string) => {\n if (isPlaintextMode) {\n return nextValue === \"\\n\" ? \"\" : nextValue;\n }\n\n const safeHtml = isPlaintextOnMemtionMode\n ? sanitizePlaintextOnMemtionHtml(xss(nextValue, xssOptions))\n : xss(nextValue, xssOptions);\n\n return safeHtml === \"<br>\" ? \"\" : safeHtml;\n };\n\n const syncHeight = () => {\n if (autosize && editorRef.current) {\n editorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n }\n };\n\n const rememberSelection = () => {\n if (!editorRef.current) return;\n\n const selection = window.getSelection();\n if (!selection?.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n const container = range.commonAncestorContainer;\n const parent =\n container.nodeType === Node.ELEMENT_NODE\n ? (container as Element)\n : container.parentElement;\n\n if (!parent || !editorRef.current.contains(parent)) return;\n\n selectionRef.current = range.cloneRange();\n };\n\n const setEditorValue = (nextValue: string) => {\n if (!editorRef.current) return;\n\n const safeValue = sanitizeValue(nextValue);\n\n if (isPlaintextMode) {\n editorRef.current.textContent = safeValue;\n return;\n }\n\n editorRef.current.innerHTML = safeValue;\n };\n\n const getEditorValue = (sanitize = false) => {\n const nextValue = !editorRef.current\n ? \"\"\n : isPlaintextMode\n ? (editorRef.current.textContent ?? \"\")\n : editorRef.current.innerHTML;\n\n return sanitize ? sanitizeValue(nextValue) : nextValue;\n };\n\n const hideMemtion = () => {\n pendingMemtionRef.current = false;\n memtionTriggerRangeRef.current = null;\n setMemtionVisible(false);\n setMemtionRect(null);\n setMemtionKeyword(\"\");\n setMemtionActiveIndex(0);\n };\n\n const syncEditorState = () => {\n selectionRef.current = null;\n hideMemtion();\n };\n\n const insertMemtion = (option: IEditorMemtionOption) => {\n const replaceRange = getMemtionReplaceRange(\n memtionTriggerRangeRef.current,\n selectionRef.current,\n );\n\n const range = insertMemtionOption({\n editor: editorRef.current,\n range: replaceRange,\n mode,\n memtion,\n option,\n sanitizeValue,\n });\n\n if (!range || !editorRef.current) return;\n\n selectionRef.current = range.cloneRange();\n hideMemtion();\n editorRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n };\n\n const handlePaste = (e) => {\n onPaste?.(e);\n\n if (e.defaultPrevented) return;\n\n e.preventDefault();\n\n const html = e.clipboardData.getData(\"text/html\");\n const text = e.clipboardData.getData(\"text/plain\");\n const pasteValue = isPlaintextMode\n ? text\n : html\n ? sanitizeValue(html)\n : text;\n\n exec(isPlaintextMode ? \"insertText\" : \"insertHTML\", false, pasteValue);\n };\n\n const handleKeyDown = (e) => {\n onKeyDown?.(e);\n\n if (e.defaultPrevented) return;\n\n if (\n !isPlaintextMode &&\n (e.key === \"Backspace\" || e.key === \"Delete\") &&\n removeAdjacentMemtionTag(editorRef.current, e.key)\n ) {\n e.preventDefault();\n rememberSelection();\n editorRef.current?.dispatchEvent(\n new Event(\"input\", { bubbles: true }),\n );\n return;\n }\n\n const memtionKey = memtion?.key ?? \"@\";\n if (memtionVisible && e.key === \" \") {\n hideMemtion();\n }\n\n if (memtionVisible && memtionOptions.length) {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setMemtionActiveIndex((index) =>\n index + 1 >= memtionOptions.length ? 0 : index + 1,\n );\n return;\n case \"ArrowUp\":\n e.preventDefault();\n setMemtionActiveIndex((index) =>\n index - 1 < 0 ? memtionOptions.length - 1 : index - 1,\n );\n return;\n case \"Enter\":\n e.preventDefault();\n insertMemtion(memtionOptions[memtionActiveIndex]);\n return;\n default:\n break;\n }\n }\n\n if (memtion && e.key === memtionKey) {\n rememberSelection();\n memtionTriggerRangeRef.current =\n selectionRef.current?.cloneRange() ?? null;\n pendingMemtionRef.current = true;\n }\n\n switch (e.key) {\n case \"Tab\":\n e.preventDefault();\n exec(\n isRichMode ? \"insertHTML\" : \"insertText\",\n false,\n isRichMode ? \"	\" : \"\\t\",\n );\n break;\n case \"Enter\":\n if (e.shiftKey) {\n break;\n }\n if (!onEnter) break;\n e.preventDefault();\n onEnter(e);\n break;\n default:\n break;\n }\n };\n\n useEffect(() => {\n if (!editorRef.current) return;\n const nextValue = sanitizeValue(value);\n if (getEditorValue(true) === nextValue) return;\n\n setEditorValue(nextValue);\n syncEditorState();\n syncHeight();\n }, [autosize, mode, value]);\n\n useEffect(() => {\n if (!memtionOptions.length) {\n setMemtionActiveIndex(0);\n return;\n }\n\n setMemtionActiveIndex((index) =>\n index >= memtionOptions.length ? 0 : index,\n );\n }, [memtionOptions]);\n\n const handleInput = (e) => {\n const rawValue = getEditorValue();\n let nextValue = sanitizeValue(rawValue);\n\n if (\n isPlaintextOnMemtionMode &&\n rawValue !== nextValue &&\n editorRef.current\n ) {\n setEditorValue(nextValue);\n }\n\n if (!nextValue && rawValue && editorRef.current) {\n nextValue = \"\";\n setEditorValue(nextValue);\n }\n\n rememberSelection();\n\n if (memtion && (pendingMemtionRef.current || memtionVisible)) {\n const memtionKey = memtion?.key ?? \"@\";\n const memtionText = getMemtionText(\n memtionTriggerRangeRef.current,\n selectionRef.current,\n );\n\n if (!memtionText.startsWith(memtionKey) || /\\s/.test(memtionText)) {\n hideMemtion();\n } else {\n const keyword = memtionText.slice(memtionKey.length);\n pendingMemtionRef.current = false;\n setMemtionRect(getSelectionRect(selectionRef.current));\n setMemtionKeyword(keyword);\n setMemtionActiveIndex(0);\n setMemtionVisible(true);\n }\n }\n\n syncHeight();\n\n onChange?.(nextValue, e);\n };\n\n const handleFocus = (e) => {\n rememberSelection();\n onFocus?.(e);\n };\n\n const handleBlur = (e) => {\n hideMemtion();\n onBlur?.(e);\n };\n\n const handleMouseUp = (e) => {\n rememberSelection();\n onMouseUp?.(e);\n };\n\n const handleKeyUp = (e) => {\n rememberSelection();\n onKeyUp?.(e);\n };\n\n const handleRef = (node: HTMLDivElement | null) => {\n editorRef.current = node;\n\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (ref) {\n ref.current = node;\n }\n };\n\n const getSelection = useCallback(\n () => selectionRef.current?.cloneRange() ?? null,\n [],\n );\n\n const controls = useMemo(\n () =>\n getControls({\n controlBtnProps,\n addtionControls,\n getSelection,\n }),\n [addtionControls, getSelection],\n );\n\n return (\n <div\n className={classNames(\"i-editor\", className, {\n \"i-editor-borderless\": !border,\n })}\n style={{\n ...style,\n [autosize ? \"minHeight\" : \"height\"]: height,\n width,\n }}\n >\n {!hideControl && (\n <div className=\"i-editor-controls\">{controls}</div>\n )}\n\n {memtion && (\n <Memtion\n visible={memtionVisible}\n rect={memtionRect}\n options={memtionOptions}\n activeIndex={memtionActiveIndex}\n onActiveChange={setMemtionActiveIndex}\n onSelect={insertMemtion}\n />\n )}\n\n <div\n ref={handleRef}\n className=\"i-editor-content\"\n data-placeholder={placeholder}\n contentEditable={isPlaintextMode ? \"plaintext-only\" : true}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onPaste={handlePaste}\n onInput={handleInput}\n onKeyUp={handleKeyUp}\n onKeyDown={handleKeyDown}\n {...restProps}\n />\n </div>\n );\n};\n\nexport default Editor;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../../../packages/components/editor/editor.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport Memtion, {\n filterMemtionOptions,\n getMemtionReplaceRange,\n getMemtionText,\n getSelectionRect,\n insertMemtionOption,\n removeAdjacentMemtionTag,\n sanitizePlaintextOnMemtionHtml,\n} from \"./memtion\";\nimport { IEditor, IEditorMemtionOption } from \"./type\";\n\nconst controlBtnProps: IButton = {\n square: true,\n flat: true,\n size: \"small\",\n};\n\nconst Editor = (props: IEditor) => {\n const {\n ref,\n value = \"\",\n width,\n height = \"10em\",\n placeholder,\n autosize,\n border = true,\n mode = \"rich\",\n hideControl,\n addtionControls,\n memtion,\n className,\n style,\n onChange,\n onEnter,\n onFocus,\n onBlur,\n onPaste,\n onMouseUp,\n onKeyUp,\n onKeyDown,\n ...restProps\n } = props;\n const editorRef = useRef<HTMLDivElement>(null);\n const selectionRef = useRef<Range | null>(null);\n const memtionTriggerRangeRef = useRef<Range | null>(null);\n const pendingMemtionRef = useRef(false);\n const isPlaintextMode = mode === \"plaintext\";\n const isRichMode = mode === \"rich\";\n const isPlaintextOnMemtionMode = mode === \"plaintextOnMemtion\";\n const [memtionVisible, setMemtionVisible] = useState(false);\n const [memtionRect, setMemtionRect] = useState<DOMRect | null>(null);\n const [memtionKeyword, setMemtionKeyword] = useState(\"\");\n const [memtionActiveIndex, setMemtionActiveIndex] = useState(0);\n const [activeMemtionIndex, setActiveMemtionIndex] = useState(-1);\n const memtionOptions = useMemo(\n () => {\n if (activeMemtionIndex < 0 || !memtion?.length) return [];\n const active = memtion?.[activeMemtionIndex];\n return filterMemtionOptions(active?.options ?? [], memtionKeyword);\n },\n [memtion, memtionKeyword, activeMemtionIndex],\n );\n\n const sanitizeValue = (nextValue: string) => {\n if (isPlaintextMode) {\n return nextValue === \"\\n\" ? \"\" : nextValue;\n }\n\n const safeHtml = isPlaintextOnMemtionMode\n ? sanitizePlaintextOnMemtionHtml(xss(nextValue, xssOptions))\n : xss(nextValue, xssOptions);\n\n return safeHtml === \"<br>\" ? \"\" : safeHtml;\n };\n\n const syncHeight = () => {\n if (autosize && editorRef.current) {\n editorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n }\n };\n\n const rememberSelection = () => {\n if (!editorRef.current) return;\n\n const selection = window.getSelection();\n if (!selection?.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n const container = range.commonAncestorContainer;\n const parent =\n container.nodeType === Node.ELEMENT_NODE\n ? (container as Element)\n : container.parentElement;\n\n if (!parent || !editorRef.current.contains(parent)) return;\n\n selectionRef.current = range.cloneRange();\n };\n\n const setEditorValue = (nextValue: string) => {\n if (!editorRef.current) return;\n\n const safeValue = sanitizeValue(nextValue);\n\n if (isPlaintextMode) {\n editorRef.current.textContent = safeValue;\n return;\n }\n\n editorRef.current.innerHTML = safeValue;\n };\n\n const getEditorValue = (sanitize = false) => {\n const nextValue = !editorRef.current\n ? \"\"\n : isPlaintextMode\n ? (editorRef.current.textContent ?? \"\")\n : editorRef.current.innerHTML;\n\n return sanitize ? sanitizeValue(nextValue) : nextValue;\n };\n\n const hideMemtion = () => {\n pendingMemtionRef.current = false;\n memtionTriggerRangeRef.current = null;\n setMemtionVisible(false);\n setMemtionRect(null);\n setMemtionKeyword(\"\");\n setMemtionActiveIndex(0);\n setActiveMemtionIndex(-1);\n };\n\n const syncEditorState = () => {\n selectionRef.current = null;\n hideMemtion();\n };\n\n const insertMemtion = (option: IEditorMemtionOption) => {\n const activeMemtion = memtion?.[activeMemtionIndex];\n const replaceRange = getMemtionReplaceRange(\n memtionTriggerRangeRef.current,\n selectionRef.current,\n );\n\n const range = insertMemtionOption({\n editor: editorRef.current,\n range: replaceRange,\n mode,\n memtion: activeMemtion,\n option,\n sanitizeValue,\n });\n\n if (!range || !editorRef.current) return;\n\n selectionRef.current = range.cloneRange();\n hideMemtion();\n editorRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n };\n\n const handlePaste = (e) => {\n onPaste?.(e);\n\n if (e.defaultPrevented) return;\n\n e.preventDefault();\n\n const html = e.clipboardData.getData(\"text/html\");\n const text = e.clipboardData.getData(\"text/plain\");\n const pasteValue = isPlaintextMode\n ? text\n : html\n ? sanitizeValue(html)\n : text;\n\n exec(isPlaintextMode ? \"insertText\" : \"insertHTML\", false, pasteValue);\n };\n\n const handleKeyDown = (e) => {\n onKeyDown?.(e);\n\n if (e.defaultPrevented) return;\n\n if (\n !isPlaintextMode &&\n (e.key === \"Backspace\" || e.key === \"Delete\") &&\n removeAdjacentMemtionTag(editorRef.current, e.key)\n ) {\n e.preventDefault();\n rememberSelection();\n editorRef.current?.dispatchEvent(\n new Event(\"input\", { bubbles: true }),\n );\n return;\n }\n\n if (memtionVisible && e.key === \" \") {\n hideMemtion();\n }\n\n if (memtionVisible && memtionOptions.length) {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setMemtionActiveIndex((index) =>\n index + 1 >= memtionOptions.length ? 0 : index + 1,\n );\n return;\n case \"ArrowUp\":\n e.preventDefault();\n setMemtionActiveIndex((index) =>\n index - 1 < 0 ? memtionOptions.length - 1 : index - 1,\n );\n return;\n case \"Enter\":\n e.preventDefault();\n insertMemtion(memtionOptions[memtionActiveIndex]);\n return;\n default:\n break;\n }\n }\n\n if (memtion?.length) {\n const matchedIndex = memtion.findIndex((m) => e.key === m.key);\n if (matchedIndex >= 0) {\n rememberSelection();\n memtionTriggerRangeRef.current =\n selectionRef.current?.cloneRange() ?? null;\n pendingMemtionRef.current = true;\n setActiveMemtionIndex(matchedIndex);\n }\n }\n\n switch (e.key) {\n case \"Tab\":\n e.preventDefault();\n exec(\n isRichMode ? \"insertHTML\" : \"insertText\",\n false,\n isRichMode ? \"	\" : \"\\t\",\n );\n break;\n case \"Enter\":\n if (e.shiftKey) {\n break;\n }\n if (!onEnter) break;\n e.preventDefault();\n onEnter(e);\n break;\n default:\n break;\n }\n };\n\n useEffect(() => {\n if (!editorRef.current) return;\n const nextValue = sanitizeValue(value);\n if (getEditorValue(true) === nextValue) return;\n\n setEditorValue(nextValue);\n syncEditorState();\n syncHeight();\n }, [autosize, mode, value]);\n\n useEffect(() => {\n if (!memtionOptions.length) {\n setMemtionActiveIndex(0);\n return;\n }\n\n setMemtionActiveIndex((index) =>\n index >= memtionOptions.length ? 0 : index,\n );\n }, [memtionOptions]);\n\n const handleInput = (e) => {\n const rawValue = getEditorValue();\n let nextValue = sanitizeValue(rawValue);\n\n if (\n isPlaintextOnMemtionMode &&\n rawValue !== nextValue &&\n editorRef.current\n ) {\n setEditorValue(nextValue);\n }\n\n if (!nextValue && rawValue && editorRef.current) {\n nextValue = \"\";\n setEditorValue(nextValue);\n }\n\n rememberSelection();\n\n if (activeMemtionIndex >= 0 && (pendingMemtionRef.current || memtionVisible)) {\n const active = memtion?.[activeMemtionIndex];\n if (!active) { hideMemtion(); return; }\n const memtionKey = active.key ?? \"@\";\n const memtionText = getMemtionText(\n memtionTriggerRangeRef.current,\n selectionRef.current,\n );\n\n if (!memtionText.startsWith(memtionKey) || /\\s/.test(memtionText)) {\n hideMemtion();\n } else {\n const keyword = memtionText.slice(memtionKey.length);\n pendingMemtionRef.current = false;\n setMemtionRect(getSelectionRect(selectionRef.current));\n setMemtionKeyword(keyword);\n setMemtionActiveIndex(0);\n setMemtionVisible(true);\n }\n }\n\n syncHeight();\n\n onChange?.(nextValue, e);\n };\n\n const handleFocus = (e) => {\n rememberSelection();\n onFocus?.(e);\n };\n\n const handleBlur = (e) => {\n hideMemtion();\n onBlur?.(e);\n };\n\n const handleMouseUp = (e) => {\n rememberSelection();\n onMouseUp?.(e);\n };\n\n const handleKeyUp = (e) => {\n rememberSelection();\n onKeyUp?.(e);\n };\n\n const handleRef = (node: HTMLDivElement | null) => {\n editorRef.current = node;\n\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (ref) {\n ref.current = node;\n }\n };\n\n const getSelection = useCallback(\n () => selectionRef.current?.cloneRange() ?? null,\n [],\n );\n\n const controls = useMemo(\n () =>\n getControls({\n controlBtnProps,\n addtionControls,\n getSelection,\n }),\n [addtionControls, getSelection],\n );\n\n return (\n <div\n className={classNames(\"i-editor\", className, {\n \"i-editor-borderless\": !border,\n })}\n style={{\n ...style,\n [autosize ? \"minHeight\" : \"height\"]: height,\n width,\n }}\n >\n {!hideControl && (\n <div className=\"i-editor-controls\">{controls}</div>\n )}\n\n {memtion?.length && (\n <Memtion\n visible={memtionVisible}\n rect={memtionRect}\n options={memtionOptions}\n activeIndex={memtionActiveIndex}\n onActiveChange={setMemtionActiveIndex}\n onSelect={insertMemtion}\n />\n )}\n\n <div\n ref={handleRef}\n className=\"i-editor-content\"\n data-placeholder={placeholder}\n contentEditable={isPlaintextMode ? \"plaintext-only\" : true}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onPaste={handlePaste}\n onInput={handleInput}\n onKeyUp={handleKeyUp}\n onKeyDown={handleKeyDown}\n {...restProps}\n />\n </div>\n );\n};\n\nexport default Editor;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -3,14 +3,15 @@ import classNames from 'classnames';
|
|
|
3
3
|
|
|
4
4
|
const Loading = (props) => {
|
|
5
5
|
const { icon, text, size, absolute, style, className, ...restProps } = props;
|
|
6
|
+
const iconSize = size != null
|
|
7
|
+
? { fontSize: typeof size === "number" ? `${size}px` : size }
|
|
8
|
+
: undefined;
|
|
6
9
|
return (jsxs("div", { className: classNames("i-loading-container", {
|
|
7
10
|
absolute,
|
|
8
11
|
}, className), style: {
|
|
9
12
|
...style,
|
|
10
13
|
inset: absolute ? 0 : "unset",
|
|
11
|
-
}, ...restProps, children: [icon ??
|
|
12
|
-
fontSize: size,
|
|
13
|
-
}, children: jsx("circle", { cx: '12', cy: '12', r: '9.5', fill: 'none', strokeWidth: '3', strokeLinecap: 'round', strokeDasharray: 40, strokeDashoffset: 0 }) })), text] }));
|
|
14
|
+
}, ...restProps, children: [icon ?? jsx("span", { className: "i-loading-icon", style: iconSize }), text] }));
|
|
14
15
|
};
|
|
15
16
|
|
|
16
17
|
export { Loading as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading.js","sources":["../../../../packages/components/loading/loading.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n
|
|
1
|
+
{"version":3,"file":"loading.js","sources":["../../../../packages/components/loading/loading.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n const { icon, text, size, absolute, style, className, ...restProps } =\n props;\n const iconSize = size != null\n ? { fontSize: typeof size === \"number\" ? `${size}px` : size }\n : undefined;\n\n return (\n <div\n className={classNames(\n \"i-loading-container\",\n {\n absolute,\n },\n className,\n )}\n style={{\n ...style,\n inset: absolute ? 0 : \"unset\",\n }}\n {...restProps}\n >\n {icon ?? <span className=\"i-loading-icon\" style={iconSize}></span>}\n\n {text}\n </div>\n );\n};\n\nexport default Loading;\n"],"names":["_jsxs","_jsx"],"mappings":";;;AAIA,MAAM,OAAO,GAAG,CAAC,KAAe,KAAI;AAChC,IAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAChE,KAAK;AACT,IAAA,MAAM,QAAQ,GAAG,IAAI,IAAI;AACrB,UAAE,EAAE,QAAQ,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,IAAI,CAAA,EAAA,CAAI,GAAG,IAAI;UACzD,SAAS;AAEf,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,UAAU,CACjB,qBAAqB,EACrB;YACI,QAAQ;AACX,SAAA,EACD,SAAS,CACZ,EACD,KAAK,EAAE;AACH,YAAA,GAAG,KAAK;YACR,KAAK,EAAE,QAAQ,GAAG,CAAC,GAAG,OAAO;AAChC,SAAA,EAAA,GACG,SAAS,EAAA,QAAA,EAAA,CAEZ,IAAI,IAAIC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,QAAQ,EAAA,CAAS,EAEjE,IAAI,CAAA,EAAA,CACH;AAEd;;;;"}
|
|
@@ -29,19 +29,7 @@ function Popup(props) {
|
|
|
29
29
|
const [show, setShow] = useState(false);
|
|
30
30
|
const showRef = useRef(false);
|
|
31
31
|
showRef.current = show;
|
|
32
|
-
const latestRef = useRef({
|
|
33
|
-
disabled,
|
|
34
|
-
trigger,
|
|
35
|
-
touchable,
|
|
36
|
-
showDelay,
|
|
37
|
-
hideDelay,
|
|
38
|
-
position,
|
|
39
|
-
gap,
|
|
40
|
-
offset,
|
|
41
|
-
align,
|
|
42
|
-
fitSize,
|
|
43
|
-
onVisibleChange,
|
|
44
|
-
});
|
|
32
|
+
const latestRef = useRef({});
|
|
45
33
|
latestRef.current = {
|
|
46
34
|
disabled,
|
|
47
35
|
trigger,
|
|
@@ -95,9 +83,8 @@ function Popup(props) {
|
|
|
95
83
|
};
|
|
96
84
|
const applyFitSize = () => {
|
|
97
85
|
const o = latestRef.current;
|
|
98
|
-
const triggerEl = triggerRef.current;
|
|
99
86
|
const contentEl = contentRef.current;
|
|
100
|
-
if (!
|
|
87
|
+
if (!contentEl)
|
|
101
88
|
return;
|
|
102
89
|
const vertical = ["top", "bottom"].includes(o.position);
|
|
103
90
|
const key = vertical ? "width" : "height";
|
|
@@ -105,6 +92,9 @@ function Popup(props) {
|
|
|
105
92
|
contentEl.style[key] = "";
|
|
106
93
|
return;
|
|
107
94
|
}
|
|
95
|
+
const triggerEl = triggerRef.current;
|
|
96
|
+
if (!triggerEl)
|
|
97
|
+
return;
|
|
108
98
|
const size = triggerEl[vertical ? "offsetWidth" : "offsetHeight"];
|
|
109
99
|
contentEl.style[key] =
|
|
110
100
|
typeof size === "number" ? `${size}px` : "";
|
|
@@ -341,8 +331,8 @@ function Popup(props) {
|
|
|
341
331
|
e.stopPropagation();
|
|
342
332
|
setTriggerEl(e);
|
|
343
333
|
pointRef.current = {
|
|
344
|
-
pageX: e.
|
|
345
|
-
pageY: e.
|
|
334
|
+
pageX: e.clientX,
|
|
335
|
+
pageY: e.clientY,
|
|
346
336
|
};
|
|
347
337
|
if (showRef.current) {
|
|
348
338
|
ensureBaseStyle();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popup.js","sources":["../../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tRef,\n\tcloneElement,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { useMouseUp, useResizeObserver } from \"../../js/hooks\";\nimport { getPointPosition, getPosition } from \"../../js/utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPopup } from \"./type\";\n\nconst REACT_FORWARD_REF = Symbol.for(\"react.forward_ref\");\nconst REACT_FRAGMENT = Symbol.for(\"react.fragment\");\n\nconst canAttachRef = (el: any) => {\n\tif (!isValidElement(el)) return false;\n\tconst t: any = el.type;\n\tif (typeof t === \"string\") return true;\n\tif (t?.prototype?.isReactComponent) return true;\n\tif (t?.$$typeof === REACT_FORWARD_REF) return true;\n\treturn false;\n};\n\nexport default function Popup(props: IPopup) {\n\tconst {\n\t\tvisible = false,\n\t\tcontent,\n\t\ttrigger = \"hover\",\n\t\tgap = 12,\n\t\toffset = 8,\n\t\tposition = \"top\",\n\t\tshowDelay = 16,\n\t\thideDelay = 12,\n\t\ttouchable,\n\t\tarrow = true,\n\t\talign = \"center\",\n\t\tfitSize,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonVisibleChange,\n\t} = props;\n\n\tconst triggerRef = useRef<HTMLElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst afterHideTimerRef = useRef<any>(null);\n\tconst rafRef = useRef<number | null>(null);\n\n\tconst [show, setShow] = useState(false);\n\tconst showRef = useRef(false);\n\tshowRef.current = show;\n\n\tconst latestRef = useRef({\n\t\tdisabled,\n\t\ttrigger,\n\t\ttouchable,\n\t\tshowDelay,\n\t\thideDelay,\n\t\tposition,\n\t\tgap,\n\t\toffset,\n\t\talign,\n\t\tfitSize,\n\t\tonVisibleChange,\n\t});\n\tlatestRef.current = {\n\t\tdisabled,\n\t\ttrigger,\n\t\ttouchable,\n\t\tshowDelay,\n\t\thideDelay,\n\t\tposition,\n\t\tgap,\n\t\toffset,\n\t\talign,\n\t\tfitSize,\n\t\tonVisibleChange,\n\t};\n\n\tconst phaseRef = useRef<\"\" | \"showing\" | \"hiding\">(\"\");\n\tconst lastPosRef = useRef<{ left: number; top: number } | null>(null);\n\tconst lastArrowRef = useRef<{\n\t\tleft: number;\n\t\ttop: number;\n\t\ttransform: string;\n\t} | null>(null);\n\tconst arrowElRef = useRef<HTMLElement | null>(null);\n\tconst pointRef = useRef<{ pageX: number; pageY: number } | null>(null);\n\n\tconst clearTimer = () => {\n\t\tif (!timerRef.current) return;\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t\tphaseRef.current = \"\";\n\t};\n\n\tconst clearAllTimers = () => {\n\t\tclearTimer();\n\t\tif (afterHideTimerRef.current) {\n\t\t\tclearTimeout(afterHideTimerRef.current);\n\t\t\tafterHideTimerRef.current = null;\n\t\t}\n\t\tif (rafRef.current !== null) {\n\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\trafRef.current = null;\n\t\t}\n\t};\n\n\tconst setContentVisible = (visible: boolean) => {\n\t\tconst el = contentRef.current;\n\t\tif (!el) return;\n\t\tel.style.opacity = visible ? \"1\" : \"0\";\n\t\tel.style.transform = visible ? \"none\" : \"translate(0, 2px)\";\n\t};\n\n\tconst ensureBaseStyle = () => {\n\t\tconst el = contentRef.current;\n\t\tif (!el) return;\n\t\tconst pos = \"fixed\";\n\t\tif (el.style.position !== pos) el.style.position = pos;\n\t};\n\n\tconst applyFitSize = () => {\n\t\tconst o = latestRef.current;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\n\t\tconst vertical = [\"top\", \"bottom\"].includes(o.position);\n\t\tconst key = vertical ? \"width\" : \"height\";\n\t\tif (!o.fitSize) {\n\t\t\t(contentEl.style as any)[key] = \"\";\n\t\t\treturn;\n\t\t}\n\n\t\tconst size = triggerEl[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n\t\t(contentEl.style as any)[key] =\n\t\t\ttypeof size === \"number\" ? `${size}px` : \"\";\n\t};\n\n\tconst applyArrow = (arrowX: number, arrowY: number, arrowPos: string) => {\n\t\tconst contentEl = contentRef.current;\n\t\tif (!contentEl) return;\n\n\t\tconst arrowEl =\n\t\t\tarrowElRef.current ??\n\t\t\t(contentEl.querySelector(\".i-popup-arrow\") as HTMLElement | null);\n\t\tarrowElRef.current = arrowEl;\n\t\tif (!arrowEl) return;\n\n\t\tlet left = arrowX ?? 0;\n\t\tlet top = arrowY ?? 0;\n\t\tlet transform = \"\";\n\n\t\tswitch (arrowPos) {\n\t\t\tcase \"left\":\n\t\t\t\tleft += 2;\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\t\tleft -= 2;\n\t\t\t\ttransform = `translate(0, -50%)`;\n\t\t\t\tbreak;\n\t\t\tcase \"top\":\n\t\t\t\ttop -= 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\ttop += 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst prev = lastArrowRef.current;\n\t\tif (\n\t\t\tprev &&\n\t\t\tprev.left === left &&\n\t\t\tprev.top === top &&\n\t\t\tprev.transform === transform\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tlastArrowRef.current = { left, top, transform };\n\t\tarrowEl.style.left = `${left}px`;\n\t\tarrowEl.style.top = `${top}px`;\n\t\tarrowEl.style.transform = transform;\n\t};\n\n\tconst applyLeftTop = (left: number, top: number) => {\n\t\tconst contentEl = contentRef.current;\n\t\tif (!contentEl) return;\n\n\t\tconst prev = lastPosRef.current;\n\t\tif (prev && prev.left === left && prev.top === top) return;\n\n\t\tlastPosRef.current = { left, top };\n\t\tcontentEl.style.left = `${left}px`;\n\t\tcontentEl.style.top = `${top}px`;\n\t};\n\n\tconst computeRelativePosition = () => {\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\n\t\tconst o = latestRef.current;\n\t\tapplyFitSize();\n\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\ttriggerEl,\n\t\t\tcontentEl,\n\t\t\t{\n\t\t\t\tposition: o.position,\n\t\t\t\tgap: o.gap,\n\t\t\t\toffset: o.offset,\n\t\t\t\talign: o.align,\n\t\t\t\trefWindow: true,\n\t\t\t},\n\t\t);\n\n\t\tapplyLeftTop(left, top);\n\t\tapplyArrow(arrowX, arrowY, arrowPos);\n\t};\n\n\tconst computePointPosition = () => {\n\t\tconst contentEl = contentRef.current as HTMLElement | null;\n\t\tif (!contentEl) return;\n\t\tconst point = pointRef.current;\n\t\tif (!point) return;\n\n\t\tconst [left, top] = getPointPosition(point as any, contentEl);\n\t\tapplyLeftTop(left, top);\n\t};\n\n\tconst scheduleComputePosition = () => {\n\t\tif (!showRef.current) return;\n\t\tif (rafRef.current !== null) return;\n\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\trafRef.current = null;\n\t\t\tif (!showRef.current) return;\n\t\t\tensureBaseStyle();\n\n\t\t\tif (latestRef.current.trigger === \"contextmenu\") {\n\t\t\t\tcomputePointPosition();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcomputeRelativePosition();\n\t\t});\n\t};\n\n\tconst handleShow = () => {\n\t\tconst opts = latestRef.current;\n\t\tif (opts.disabled) return;\n\t\tclearAllTimers();\n\t\tif (\n\t\t\tshowRef.current &&\n\t\t\t(opts.trigger !== \"hover\" ||\n\t\t\t\t(opts.trigger === \"hover\" && !opts.touchable))\n\t\t) {\n\t\t\tensureBaseStyle();\n\t\t\tcomputeRelativePosition();\n\t\t\tsetContentVisible(true);\n\t\t\treturn;\n\t\t}\n\n\t\tphaseRef.current = \"showing\";\n\t\tif (!showRef.current) {\n\t\t\tlastPosRef.current = null;\n\t\t\tlastArrowRef.current = null;\n\t\t\tarrowElRef.current = null;\n\t\t\tsetShow(true);\n\t\t}\n\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (phaseRef.current !== \"showing\") return;\n\n\t\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\t\trafRef.current = null;\n\t\t\t\tif (phaseRef.current !== \"showing\") return;\n\t\t\t\tif (!contentRef.current) return;\n\n\t\t\t\tensureBaseStyle();\n\t\t\t\tif (opts.trigger === \"contextmenu\") {\n\t\t\t\t\tcomputePointPosition();\n\t\t\t\t} else {\n\t\t\t\t\tcomputeRelativePosition();\n\t\t\t\t}\n\t\t\t\tsetContentVisible(true);\n\t\t\t\topts.onVisibleChange?.(true);\n\t\t\t\tclearTimer();\n\t\t\t\tphaseRef.current = \"\";\n\t\t\t});\n\t\t}, opts.showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!showRef.current) return;\n\n\t\tclearAllTimers();\n\t\tphaseRef.current = \"hiding\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (phaseRef.current !== \"hiding\") {\n\t\t\t\tclearTimer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetContentVisible(false);\n\n\t\t\tafterHideTimerRef.current = setTimeout(() => {\n\t\t\t\tafterHideTimerRef.current = null;\n\t\t\t\tsetShow(false);\n\t\t\t\tclearAllTimers();\n\t\t\t\tlatestRef.current.onVisibleChange?.(false);\n\t\t\t\tphaseRef.current = \"\";\n\t\t\t}, 160);\n\t\t}, latestRef.current.hideDelay);\n\t};\n\n\tconst handleToggle = (action?: boolean) => {\n\t\tif (action !== undefined) {\n\t\t\taction ? handleShow() : handleHide();\n\t\t\treturn;\n\t\t}\n\t\tshowRef.current ? handleHide() : handleShow();\n\t};\n\n\tconst hideRef = useRef(handleHide);\n\tconst toggleRef = useRef(handleToggle);\n\thideRef.current = handleHide;\n\ttoggleRef.current = handleToggle;\n\n\tconst doHide = useMemo(() => () => hideRef.current(), []);\n\tconst doToggle = useMemo(\n\t\t() => (action?: boolean) => toggleRef.current(action),\n\t\t[],\n\t);\n\n\tconst mergeRefs = useMemo(() => {\n\t\treturn (...refs: Array<Ref<HTMLElement> | undefined>) => {\n\t\t\treturn (node: HTMLElement | null) => {\n\t\t\t\tfor (const ref of refs) {\n\t\t\t\t\tif (!ref) continue;\n\t\t\t\t\tif (typeof ref === \"function\") {\n\t\t\t\t\t\tref(node);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t(ref as any).current = node;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t}, []);\n\n\tconst triggerEvents = useMemo(() => {\n\t\tconst setTriggerEl = (e: any) => {\n\t\t\tconst el = e?.currentTarget as HTMLElement | null | undefined;\n\t\t\tif (el) triggerRef.current = el;\n\t\t};\n\n\t\tswitch (trigger) {\n\t\t\tcase \"click\":\n\t\t\t\treturn {\n\t\t\t\t\tonClick: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(true);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"hover\":\n\t\t\t\treturn {\n\t\t\t\t\tonMouseEnter: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(true);\n\t\t\t\t\t},\n\t\t\t\t\tonMouseLeave: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(false);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"focus\":\n\t\t\t\treturn {\n\t\t\t\t\tonFocus: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(true);\n\t\t\t\t\t},\n\t\t\t\t\tonBlur: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(false);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"contextmenu\":\n\t\t\t\treturn {\n\t\t\t\t\tonContextMenu: (e: MouseEvent) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tsetTriggerEl(e);\n\n\t\t\t\t\t\tpointRef.current = {\n\t\t\t\t\t\t\tpageX: (e as any).pageX,\n\t\t\t\t\t\t\tpageY: (e as any).pageY,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (showRef.current) {\n\t\t\t\t\t\t\tensureBaseStyle();\n\t\t\t\t\t\t\tcomputePointPosition();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tclearAllTimers();\n\t\t\t\t\t\tphaseRef.current = \"showing\";\n\t\t\t\t\t\tlastPosRef.current = null;\n\t\t\t\t\t\tlastArrowRef.current = null;\n\t\t\t\t\t\tarrowElRef.current = null;\n\t\t\t\t\t\tsetShow(true);\n\n\t\t\t\t\t\ttimerRef.current = setTimeout(() => {\n\t\t\t\t\t\t\tif (phaseRef.current !== \"showing\") return;\n\t\t\t\t\t\t\tif (!contentRef.current) return;\n\n\t\t\t\t\t\t\tensureBaseStyle();\n\t\t\t\t\t\t\tcomputePointPosition();\n\t\t\t\t\t\t\tsetContentVisible(true);\n\t\t\t\t\t\t\tclearTimer();\n\t\t\t\t\t\t\tlatestRef.current.onVisibleChange?.(true);\n\t\t\t\t\t\t\tphaseRef.current = \"\";\n\t\t\t\t\t\t}, latestRef.current.showDelay);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn {};\n\t\t}\n\t}, [doToggle]);\n\n\tconst triggerNode = useMemo(() => {\n\t\tconst events = triggerEvents as any;\n\t\tconst eventKeys = Object.keys(events);\n\t\tconst items = Children.toArray(children);\n\n\t\tlet attachedRef = false;\n\t\tlet cloned = false;\n\n\t\tconst nextItems = items.map((item) => {\n\t\t\tif (!isValidElement(item)) return item;\n\t\t\tif ((item as any).type === REACT_FRAGMENT) return item;\n\n\t\t\tconst attachRef = !attachedRef && canAttachRef(item);\n\t\t\tif (attachRef) attachedRef = true;\n\n\t\t\tif (!attachRef && eventKeys.length === 0) return item;\n\n\t\t\tconst patchedProps: Record<string, any> = {};\n\n\t\t\tfor (const evt of eventKeys) {\n\t\t\t\tconst ours = events[evt];\n\t\t\t\tconst theirs = (item.props as any)?.[evt];\n\t\t\t\tpatchedProps[evt] =\n\t\t\t\t\ttypeof theirs === \"function\"\n\t\t\t\t\t\t? (e: any) => {\n\t\t\t\t\t\t\t\tours(e);\n\t\t\t\t\t\t\t\ttheirs(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: ours;\n\t\t\t}\n\n\t\t\tif (attachRef) {\n\t\t\t\tpatchedProps.ref = mergeRefs((item as any).ref, triggerRef as any);\n\t\t\t}\n\n\t\t\tcloned = true;\n\t\t\treturn cloneElement(item as any, patchedProps);\n\t\t});\n\n\t\tif (!cloned) return children;\n\t\treturn nextItems.length === 1 ? nextItems[0] : <>{nextItems}</>;\n\t}, [children, triggerEvents, mergeRefs]);\n\n\tconst contentTouch = useMemo(() => {\n\t\tif (!touchable) return {};\n\t\tconst events: { [key: string]: () => void } = {};\n\n\t\tif (trigger === \"hover\") {\n\t\t\tevents[\"onMouseEnter\"] = () => {\n\t\t\t\tclearTimer();\n\t\t\t};\n\t\t\tevents[\"onMouseLeave\"] = () => handleToggle(false);\n\t\t}\n\n\t\treturn events;\n\t}, [touchable, trigger]);\n\n\tconst { observe, unobserve, disconnect } = useResizeObserver();\n\tuseEffect(() => {\n\t\tif (!observe) return;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (triggerEl) observe(triggerEl, scheduleComputePosition);\n\t\tif (contentEl) observe(contentEl, scheduleComputePosition);\n\t\treturn () => {\n\t\t\tif (contentEl) unobserve(contentEl);\n\t\t\tif (triggerEl) unobserve(triggerEl);\n\t\t\tdisconnect();\n\t\t};\n\t}, [trigger, observe, unobserve, disconnect, show]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!show) return;\n\t\tensureBaseStyle();\n\t\tif (latestRef.current.trigger === \"contextmenu\") {\n\t\t\tcomputePointPosition();\n\t\t} else {\n\t\t\tcomputeRelativePosition();\n\t\t}\n\t}, [show]);\n\n\tuseLayoutEffect(() => {\n\t\tdoToggle(visible);\n\t}, [visible]);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tclearAllTimers();\n\t\t};\n\t}, []);\n\n\tconst mouseUpHandlerRef = useRef<(e: any) => void>(() => {});\n\tmouseUpHandlerRef.current = (e) => {\n\t\tif (!showRef.current) return;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\t\tconst tar = e.target as HTMLElement;\n\t\tif (triggerEl.contains(tar) || contentEl.contains(tar)) return;\n\t\tdoHide();\n\t};\n\tconst onGlobalMouseUp = useMemo(\n\t\t() => (e: any) => mouseUpHandlerRef.current(e),\n\t\t[],\n\t);\n\tuseMouseUp(onGlobalMouseUp);\n\n\tuseEffect(() => {\n\t\tif (!show) return;\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst onScrollOrResize = debounce({ delay: 160 }, () => {\n\t\t\tscheduleComputePosition();\n\t\t});\n\n\t\twindow.addEventListener(\"scroll\", onScrollOrResize, {\n\t\t\tpassive: true,\n\t\t\tcapture: true,\n\t\t});\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"scroll\", onScrollOrResize, true);\n\t\t};\n\t}, [show]);\n\n\treturn (\n\t\t<>\n\t\t\t{triggerNode}\n\n\t\t\t{show && (\n\t\t\t\t<Content\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\tposition: \"fixed\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\t{...contentTouch}\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Content>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"],"names":["_jsx","_Fragment","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"popup.js","sources":["../../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { debounce } from \"radash\";\nimport {\n Children,\n MouseEvent,\n Ref,\n cloneElement,\n isValidElement,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMouseUp, useResizeObserver } from \"../../js/hooks\";\nimport { getPointPosition, getPosition } from \"../../js/utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPopup } from \"./type\";\n\nconst REACT_FORWARD_REF = Symbol.for(\"react.forward_ref\");\nconst REACT_FRAGMENT = Symbol.for(\"react.fragment\");\n\nconst canAttachRef = (el: any) => {\n if (!isValidElement(el)) return false;\n const t: any = el.type;\n if (typeof t === \"string\") return true;\n if (t?.prototype?.isReactComponent) return true;\n if (t?.$$typeof === REACT_FORWARD_REF) return true;\n return false;\n};\n\nexport default function Popup(props: IPopup) {\n const {\n visible = false,\n content,\n trigger = \"hover\",\n gap = 12,\n offset = 8,\n position = \"top\",\n showDelay = 16,\n hideDelay = 12,\n touchable,\n arrow = true,\n align = \"center\",\n fitSize,\n disabled,\n style,\n className,\n children,\n onVisibleChange,\n } = props;\n\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const timerRef = useRef<any>(null);\n const afterHideTimerRef = useRef<any>(null);\n const rafRef = useRef<number | null>(null);\n\n const [show, setShow] = useState(false);\n const showRef = useRef(false);\n showRef.current = show;\n\n const latestRef = useRef<Record<string, any>>({});\n latestRef.current = {\n disabled,\n trigger,\n touchable,\n showDelay,\n hideDelay,\n position,\n gap,\n offset,\n align,\n fitSize,\n onVisibleChange,\n };\n\n const phaseRef = useRef<\"\" | \"showing\" | \"hiding\">(\"\");\n const lastPosRef = useRef<{ left: number; top: number } | null>(null);\n const lastArrowRef = useRef<{\n left: number;\n top: number;\n transform: string;\n } | null>(null);\n const arrowElRef = useRef<HTMLElement | null>(null);\n const pointRef = useRef<{ pageX: number; pageY: number } | null>(null);\n\n const clearTimer = () => {\n if (!timerRef.current) return;\n clearTimeout(timerRef.current);\n timerRef.current = null;\n phaseRef.current = \"\";\n };\n\n const clearAllTimers = () => {\n clearTimer();\n if (afterHideTimerRef.current) {\n clearTimeout(afterHideTimerRef.current);\n afterHideTimerRef.current = null;\n }\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n\n const setContentVisible = (visible: boolean) => {\n const el = contentRef.current;\n if (!el) return;\n el.style.opacity = visible ? \"1\" : \"0\";\n el.style.transform = visible ? \"none\" : \"translate(0, 2px)\";\n };\n\n const ensureBaseStyle = () => {\n const el = contentRef.current;\n if (!el) return;\n const pos = \"fixed\";\n if (el.style.position !== pos) el.style.position = pos;\n };\n\n const applyFitSize = () => {\n const o = latestRef.current;\n const contentEl = contentRef.current;\n if (!contentEl) return;\n\n const vertical = [\"top\", \"bottom\"].includes(o.position);\n const key = vertical ? \"width\" : \"height\";\n if (!o.fitSize) {\n (contentEl.style as any)[key] = \"\";\n return;\n }\n\n const triggerEl = triggerRef.current;\n if (!triggerEl) return;\n\n const size = triggerEl[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n (contentEl.style as any)[key] =\n typeof size === \"number\" ? `${size}px` : \"\";\n };\n\n const applyArrow = (arrowX: number, arrowY: number, arrowPos: string) => {\n const contentEl = contentRef.current;\n if (!contentEl) return;\n\n const arrowEl =\n arrowElRef.current ??\n (contentEl.querySelector(\".i-popup-arrow\") as HTMLElement | null);\n arrowElRef.current = arrowEl;\n if (!arrowEl) return;\n\n let left = arrowX ?? 0;\n let top = arrowY ?? 0;\n let transform = \"\";\n\n switch (arrowPos) {\n case \"left\":\n left += 2;\n transform = `translate(-100%, -50%) rotate(180deg)`;\n break;\n case \"right\":\n left -= 2;\n transform = `translate(0, -50%)`;\n break;\n case \"top\":\n top -= 2;\n transform = `translate(-50%, -50%) rotate(-90deg)`;\n break;\n case \"bottom\":\n top += 2;\n transform = `translate(-50%, -50%) rotate(90deg)`;\n break;\n default:\n break;\n }\n\n const prev = lastArrowRef.current;\n if (\n prev &&\n prev.left === left &&\n prev.top === top &&\n prev.transform === transform\n ) {\n return;\n }\n\n lastArrowRef.current = { left, top, transform };\n arrowEl.style.left = `${left}px`;\n arrowEl.style.top = `${top}px`;\n arrowEl.style.transform = transform;\n };\n\n const applyLeftTop = (left: number, top: number) => {\n const contentEl = contentRef.current;\n if (!contentEl) return;\n\n const prev = lastPosRef.current;\n if (prev && prev.left === left && prev.top === top) return;\n\n lastPosRef.current = { left, top };\n contentEl.style.left = `${left}px`;\n contentEl.style.top = `${top}px`;\n };\n\n const computeRelativePosition = () => {\n const triggerEl = triggerRef.current;\n const contentEl = contentRef.current;\n if (!triggerEl || !contentEl) return;\n\n const o = latestRef.current;\n applyFitSize();\n\n const [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n triggerEl,\n contentEl,\n {\n position: o.position,\n gap: o.gap,\n offset: o.offset,\n align: o.align,\n refWindow: true,\n },\n );\n\n applyLeftTop(left, top);\n applyArrow(arrowX, arrowY, arrowPos);\n };\n\n const computePointPosition = () => {\n const contentEl = contentRef.current as HTMLElement | null;\n if (!contentEl) return;\n const point = pointRef.current;\n if (!point) return;\n\n const [left, top] = getPointPosition(point as any, contentEl);\n applyLeftTop(left, top);\n };\n\n const scheduleComputePosition = () => {\n if (!showRef.current) return;\n if (rafRef.current !== null) return;\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n if (!showRef.current) return;\n ensureBaseStyle();\n\n if (latestRef.current.trigger === \"contextmenu\") {\n computePointPosition();\n return;\n }\n\n computeRelativePosition();\n });\n };\n\n const handleShow = () => {\n const opts = latestRef.current;\n if (opts.disabled) return;\n clearAllTimers();\n if (\n showRef.current &&\n (opts.trigger !== \"hover\" ||\n (opts.trigger === \"hover\" && !opts.touchable))\n ) {\n ensureBaseStyle();\n computeRelativePosition();\n setContentVisible(true);\n return;\n }\n\n phaseRef.current = \"showing\";\n if (!showRef.current) {\n lastPosRef.current = null;\n lastArrowRef.current = null;\n arrowElRef.current = null;\n setShow(true);\n }\n\n timerRef.current = setTimeout(() => {\n if (phaseRef.current !== \"showing\") return;\n\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n if (phaseRef.current !== \"showing\") return;\n if (!contentRef.current) return;\n\n ensureBaseStyle();\n if (opts.trigger === \"contextmenu\") {\n computePointPosition();\n } else {\n computeRelativePosition();\n }\n setContentVisible(true);\n opts.onVisibleChange?.(true);\n clearTimer();\n phaseRef.current = \"\";\n });\n }, opts.showDelay);\n };\n\n const handleHide = () => {\n if (!showRef.current) return;\n\n clearAllTimers();\n phaseRef.current = \"hiding\";\n timerRef.current = setTimeout(() => {\n if (phaseRef.current !== \"hiding\") {\n clearTimer();\n return;\n }\n\n setContentVisible(false);\n\n afterHideTimerRef.current = setTimeout(() => {\n afterHideTimerRef.current = null;\n setShow(false);\n clearAllTimers();\n latestRef.current.onVisibleChange?.(false);\n phaseRef.current = \"\";\n }, 160);\n }, latestRef.current.hideDelay);\n };\n\n const handleToggle = (action?: boolean) => {\n if (action !== undefined) {\n action ? handleShow() : handleHide();\n return;\n }\n showRef.current ? handleHide() : handleShow();\n };\n\n const hideRef = useRef(handleHide);\n const toggleRef = useRef(handleToggle);\n hideRef.current = handleHide;\n toggleRef.current = handleToggle;\n\n const doHide = useMemo(() => () => hideRef.current(), []);\n const doToggle = useMemo(\n () => (action?: boolean) => toggleRef.current(action),\n [],\n );\n\n const mergeRefs = useMemo(() => {\n return (...refs: Array<Ref<HTMLElement> | undefined>) => {\n return (node: HTMLElement | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") {\n ref(node);\n } else {\n (ref as any).current = node;\n }\n }\n };\n };\n }, []);\n\n const triggerEvents = useMemo(() => {\n const setTriggerEl = (e: any) => {\n const el = e?.currentTarget as HTMLElement | null | undefined;\n if (el) triggerRef.current = el;\n };\n\n switch (trigger) {\n case \"click\":\n return {\n onClick: (e: any) => {\n setTriggerEl(e);\n doToggle(true);\n },\n };\n case \"hover\":\n return {\n onMouseEnter: (e: any) => {\n setTriggerEl(e);\n doToggle(true);\n },\n onMouseLeave: (e: any) => {\n setTriggerEl(e);\n doToggle(false);\n },\n };\n case \"focus\":\n return {\n onFocus: (e: any) => {\n setTriggerEl(e);\n doToggle(true);\n },\n onBlur: (e: any) => {\n setTriggerEl(e);\n doToggle(false);\n },\n };\n case \"contextmenu\":\n return {\n onContextMenu: (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setTriggerEl(e);\n\n pointRef.current = {\n pageX: (e as any).clientX,\n pageY: (e as any).clientY,\n };\n\n if (showRef.current) {\n ensureBaseStyle();\n computePointPosition();\n return;\n }\n\n clearAllTimers();\n phaseRef.current = \"showing\";\n lastPosRef.current = null;\n lastArrowRef.current = null;\n arrowElRef.current = null;\n setShow(true);\n\n timerRef.current = setTimeout(() => {\n if (phaseRef.current !== \"showing\") return;\n if (!contentRef.current) return;\n\n ensureBaseStyle();\n computePointPosition();\n setContentVisible(true);\n clearTimer();\n latestRef.current.onVisibleChange?.(true);\n phaseRef.current = \"\";\n }, latestRef.current.showDelay);\n },\n };\n default:\n return {};\n }\n }, [doToggle]);\n\n const triggerNode = useMemo(() => {\n const events = triggerEvents as any;\n const eventKeys = Object.keys(events);\n const items = Children.toArray(children);\n\n let attachedRef = false;\n let cloned = false;\n\n const nextItems = items.map((item) => {\n if (!isValidElement(item)) return item;\n if ((item as any).type === REACT_FRAGMENT) return item;\n\n const attachRef = !attachedRef && canAttachRef(item);\n if (attachRef) attachedRef = true;\n\n if (!attachRef && eventKeys.length === 0) return item;\n\n const patchedProps: Record<string, any> = {};\n\n for (const evt of eventKeys) {\n const ours = events[evt];\n const theirs = (item.props as any)?.[evt];\n patchedProps[evt] =\n typeof theirs === \"function\"\n ? (e: any) => {\n ours(e);\n theirs(e);\n }\n : ours;\n }\n\n if (attachRef) {\n patchedProps.ref = mergeRefs(\n (item as any).ref,\n triggerRef as any,\n );\n }\n\n cloned = true;\n return cloneElement(item as any, patchedProps);\n });\n\n if (!cloned) return children;\n return nextItems.length === 1 ? nextItems[0] : <>{nextItems}</>;\n }, [children, triggerEvents, mergeRefs]);\n\n const contentTouch = useMemo(() => {\n if (!touchable) return {};\n const events: { [key: string]: () => void } = {};\n\n if (trigger === \"hover\") {\n events[\"onMouseEnter\"] = () => {\n clearTimer();\n };\n events[\"onMouseLeave\"] = () => handleToggle(false);\n }\n\n return events;\n }, [touchable, trigger]);\n\n const { observe, unobserve, disconnect } = useResizeObserver();\n useEffect(() => {\n if (!observe) return;\n const triggerEl = triggerRef.current;\n const contentEl = contentRef.current;\n if (triggerEl) observe(triggerEl, scheduleComputePosition);\n if (contentEl) observe(contentEl, scheduleComputePosition);\n return () => {\n if (contentEl) unobserve(contentEl);\n if (triggerEl) unobserve(triggerEl);\n disconnect();\n };\n }, [trigger, observe, unobserve, disconnect, show]);\n\n useLayoutEffect(() => {\n if (!show) return;\n ensureBaseStyle();\n if (latestRef.current.trigger === \"contextmenu\") {\n computePointPosition();\n } else {\n computeRelativePosition();\n }\n }, [show]);\n\n useLayoutEffect(() => {\n doToggle(visible);\n }, [visible]);\n\n useEffect(() => {\n return () => {\n clearAllTimers();\n };\n }, []);\n\n const mouseUpHandlerRef = useRef<((e: any) => void)>(() => {});\n mouseUpHandlerRef.current = (e) => {\n if (!showRef.current) return;\n const triggerEl = triggerRef.current;\n const contentEl = contentRef.current;\n if (!triggerEl || !contentEl) return;\n const tar = e.target as HTMLElement;\n if (triggerEl.contains(tar) || contentEl.contains(tar)) return;\n doHide();\n };\n const onGlobalMouseUp = useMemo(\n () => (e: any) => mouseUpHandlerRef.current(e),\n [],\n );\n useMouseUp(onGlobalMouseUp);\n\n useEffect(() => {\n if (!show) return;\n if (typeof window === \"undefined\") return;\n\n const onScrollOrResize = debounce({ delay: 160 }, () => {\n scheduleComputePosition();\n });\n\n window.addEventListener(\"scroll\", onScrollOrResize, {\n passive: true,\n capture: true,\n });\n\n return () => {\n window.removeEventListener(\"scroll\", onScrollOrResize, true);\n };\n }, [show]);\n\n return (\n <>\n {triggerNode}\n\n {show && (\n <Content\n ref={contentRef}\n arrow={arrow && trigger !== \"contextmenu\"}\n style={{\n ...style,\n position: \"fixed\",\n }}\n className={className}\n {...contentTouch}\n trigger={triggerRef.current as HTMLElement}\n >\n {content}\n </Content>\n )}\n </>\n );\n}\n"],"names":["_jsx","_Fragment","_jsxs"],"mappings":";;;;;;;AAmBA,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACzD,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAEnD,MAAM,YAAY,GAAG,CAAC,EAAO,KAAI;AAC7B,IAAA,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,KAAK;AACrC,IAAA,MAAM,CAAC,GAAQ,EAAE,CAAC,IAAI;IACtB,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI;AACtC,IAAA,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB;AAAE,QAAA,OAAO,IAAI;AAC/C,IAAA,IAAI,CAAC,EAAE,QAAQ,KAAK,iBAAiB;AAAE,QAAA,OAAO,IAAI;AAClD,IAAA,OAAO,KAAK;AAChB,CAAC;AAEa,SAAU,KAAK,CAAC,KAAa,EAAA;IACvC,MAAM,EACF,OAAO,GAAG,KAAK,EACf,OAAO,EACP,OAAO,GAAG,OAAO,EACjB,GAAG,GAAG,EAAE,EACR,MAAM,GAAG,CAAC,EACV,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,EAAE,EACd,SAAS,EACT,KAAK,GAAG,IAAI,EACZ,KAAK,GAAG,QAAQ,EAChB,OAAO,EACP,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,eAAe,GAClB,GAAG,KAAK;AAET,IAAA,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC;AAC/C,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAM,IAAI,CAAC;AAClC,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAM,IAAI,CAAC;AAC3C,IAAA,MAAM,MAAM,GAAG,MAAM,CAAgB,IAAI,CAAC;IAE1C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,IAAA,OAAO,CAAC,OAAO,GAAG,IAAI;AAEtB,IAAA,MAAM,SAAS,GAAG,MAAM,CAAsB,EAAE,CAAC;IACjD,SAAS,CAAC,OAAO,GAAG;QAChB,QAAQ;QACR,OAAO;QACP,SAAS;QACT,SAAS;QACT,SAAS;QACT,QAAQ;QACR,GAAG;QACH,MAAM;QACN,KAAK;QACL,OAAO;QACP,eAAe;KAClB;AAED,IAAA,MAAM,QAAQ,GAAG,MAAM,CAA4B,EAAE,CAAC;AACtD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAuC,IAAI,CAAC;AACrE,IAAA,MAAM,YAAY,GAAG,MAAM,CAIjB,IAAI,CAAC;AACf,IAAA,MAAM,UAAU,GAAG,MAAM,CAAqB,IAAI,CAAC;AACnD,IAAA,MAAM,QAAQ,GAAG,MAAM,CAA0C,IAAI,CAAC;IAEtE,MAAM,UAAU,GAAG,MAAK;QACpB,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE;AACvB,QAAA,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC9B,QAAA,QAAQ,CAAC,OAAO,GAAG,IAAI;AACvB,QAAA,QAAQ,CAAC,OAAO,GAAG,EAAE;AACzB,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,MAAK;AACxB,QAAA,UAAU,EAAE;AACZ,QAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC3B,YAAA,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACvC,YAAA,iBAAiB,CAAC,OAAO,GAAG,IAAI;QACpC;AACA,QAAA,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE;AACzB,YAAA,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;AACpC,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI;QACzB;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,OAAgB,KAAI;AAC3C,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO;AAC7B,QAAA,IAAI,CAAC,EAAE;YAAE;AACT,QAAA,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,GAAG,GAAG,GAAG;AACtC,QAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,mBAAmB;AAC/D,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,MAAK;AACzB,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO;AAC7B,QAAA,IAAI,CAAC,EAAE;YAAE;QACT,MAAM,GAAG,GAAG,OAAO;AACnB,QAAA,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,GAAG;AAAE,YAAA,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG;AAC1D,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,MAAK;AACtB,QAAA,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO;AAC3B,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ;AACzC,QAAA,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACX,YAAA,SAAS,CAAC,KAAa,CAAC,GAAG,CAAC,GAAG,EAAE;YAClC;QACJ;AAEA,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,GAAG,aAAa,GAAG,cAAc,CAAC;AAChE,QAAA,SAAS,CAAC,KAAa,CAAC,GAAG,CAAC;AACzB,YAAA,OAAO,IAAI,KAAK,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,GAAG,EAAE;AACnD,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,QAAgB,KAAI;AACpE,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,MAAM,OAAO,GACT,UAAU,CAAC,OAAO;AACjB,YAAA,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAwB;AACrE,QAAA,UAAU,CAAC,OAAO,GAAG,OAAO;AAC5B,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC;AACtB,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC;QACrB,IAAI,SAAS,GAAG,EAAE;QAElB,QAAQ,QAAQ;AACZ,YAAA,KAAK,MAAM;gBACP,IAAI,IAAI,CAAC;gBACT,SAAS,GAAG,uCAAuC;gBACnD;AACJ,YAAA,KAAK,OAAO;gBACR,IAAI,IAAI,CAAC;gBACT,SAAS,GAAG,oBAAoB;gBAChC;AACJ,YAAA,KAAK,KAAK;gBACN,GAAG,IAAI,CAAC;gBACR,SAAS,GAAG,sCAAsC;gBAClD;AACJ,YAAA,KAAK,QAAQ;gBACT,GAAG,IAAI,CAAC;gBACR,SAAS,GAAG,qCAAqC;gBACjD;;AAKR,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO;AACjC,QAAA,IACI,IAAI;YACJ,IAAI,CAAC,IAAI,KAAK,IAAI;YAClB,IAAI,CAAC,GAAG,KAAK,GAAG;AAChB,YAAA,IAAI,CAAC,SAAS,KAAK,SAAS,EAC9B;YACE;QACJ;QAEA,YAAY,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;QAC/C,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,IAAI;QAChC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,IAAI;AAC9B,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS;AACvC,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,GAAW,KAAI;AAC/C,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO;AAC/B,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG;YAAE;QAEpD,UAAU,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;QAClC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,IAAI;QAClC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,IAAI;AACpC,IAAA,CAAC;IAED,MAAM,uBAAuB,GAAG,MAAK;AACjC,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;YAAE;AAE9B,QAAA,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO;AAC3B,QAAA,YAAY,EAAE;AAEd,QAAA,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,WAAW,CACzD,SAAS,EACT,SAAS,EACT;YACI,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,YAAA,SAAS,EAAE,IAAI;AAClB,SAAA,CACJ;AAED,QAAA,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;AACvB,QAAA,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;AACxC,IAAA,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAK;AAC9B,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAA6B;AAC1D,QAAA,IAAI,CAAC,SAAS;YAAE;AAChB,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAY,EAAE,SAAS,CAAC;AAC7D,QAAA,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;AAC3B,IAAA,CAAC;IAED,MAAM,uBAAuB,GAAG,MAAK;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE;AACtB,QAAA,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;YAAE;AAC7B,QAAA,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAK;AACxC,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI;YACrB,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE;AACtB,YAAA,eAAe,EAAE;YAEjB,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE;AAC7C,gBAAA,oBAAoB,EAAE;gBACtB;YACJ;AAEA,YAAA,uBAAuB,EAAE;AAC7B,QAAA,CAAC,CAAC;AACN,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;AACpB,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO;QAC9B,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,cAAc,EAAE;QAChB,IACI,OAAO,CAAC,OAAO;AACf,aAAC,IAAI,CAAC,OAAO,KAAK,OAAO;AACrB,iBAAC,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EACpD;AACE,YAAA,eAAe,EAAE;AACjB,YAAA,uBAAuB,EAAE;YACzB,iBAAiB,CAAC,IAAI,CAAC;YACvB;QACJ;AAEA,QAAA,QAAQ,CAAC,OAAO,GAAG,SAAS;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAClB,YAAA,UAAU,CAAC,OAAO,GAAG,IAAI;AACzB,YAAA,YAAY,CAAC,OAAO,GAAG,IAAI;AAC3B,YAAA,UAAU,CAAC,OAAO,GAAG,IAAI;YACzB,OAAO,CAAC,IAAI,CAAC;QACjB;AAEA,QAAA,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AAC/B,YAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;gBAAE;AAEpC,YAAA,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAK;AACxC,gBAAA,MAAM,CAAC,OAAO,GAAG,IAAI;AACrB,gBAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;oBAAE;gBACpC,IAAI,CAAC,UAAU,CAAC,OAAO;oBAAE;AAEzB,gBAAA,eAAe,EAAE;AACjB,gBAAA,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,EAAE;AAChC,oBAAA,oBAAoB,EAAE;gBAC1B;qBAAO;AACH,oBAAA,uBAAuB,EAAE;gBAC7B;gBACA,iBAAiB,CAAC,IAAI,CAAC;AACvB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,gBAAA,UAAU,EAAE;AACZ,gBAAA,QAAQ,CAAC,OAAO,GAAG,EAAE;AACzB,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;AACtB,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;QACpB,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE;AAEtB,QAAA,cAAc,EAAE;AAChB,QAAA,QAAQ,CAAC,OAAO,GAAG,QAAQ;AAC3B,QAAA,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AAC/B,YAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC/B,gBAAA,UAAU,EAAE;gBACZ;YACJ;YAEA,iBAAiB,CAAC,KAAK,CAAC;AAExB,YAAA,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AACxC,gBAAA,iBAAiB,CAAC,OAAO,GAAG,IAAI;gBAChC,OAAO,CAAC,KAAK,CAAC;AACd,gBAAA,cAAc,EAAE;gBAChB,SAAS,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;AAC1C,gBAAA,QAAQ,CAAC,OAAO,GAAG,EAAE;YACzB,CAAC,EAAE,GAAG,CAAC;AACX,QAAA,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;AACnC,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,MAAgB,KAAI;AACtC,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;YACtB,MAAM,GAAG,UAAU,EAAE,GAAG,UAAU,EAAE;YACpC;QACJ;AACA,QAAA,OAAO,CAAC,OAAO,GAAG,UAAU,EAAE,GAAG,UAAU,EAAE;AACjD,IAAA,CAAC;AAED,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAClC,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AACtC,IAAA,OAAO,CAAC,OAAO,GAAG,UAAU;AAC5B,IAAA,SAAS,CAAC,OAAO,GAAG,YAAY;AAEhC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,OAAO,CACpB,MAAM,CAAC,MAAgB,KAAK,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EACrD,EAAE,CACL;AAED,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,MAAK;AAC3B,QAAA,OAAO,CAAC,GAAG,IAAyC,KAAI;YACpD,OAAO,CAAC,IAAwB,KAAI;AAChC,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,oBAAA,IAAI,CAAC,GAAG;wBAAE;AACV,oBAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;wBAC3B,GAAG,CAAC,IAAI,CAAC;oBACb;yBAAO;AACF,wBAAA,GAAW,CAAC,OAAO,GAAG,IAAI;oBAC/B;gBACJ;AACJ,YAAA,CAAC;AACL,QAAA,CAAC;IACL,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAK;AAC/B,QAAA,MAAM,YAAY,GAAG,CAAC,CAAM,KAAI;AAC5B,YAAA,MAAM,EAAE,GAAG,CAAC,EAAE,aAA+C;AAC7D,YAAA,IAAI,EAAE;AAAE,gBAAA,UAAU,CAAC,OAAO,GAAG,EAAE;AACnC,QAAA,CAAC;QAED,QAAQ,OAAO;AACX,YAAA,KAAK,OAAO;gBACR,OAAO;AACH,oBAAA,OAAO,EAAE,CAAC,CAAM,KAAI;wBAChB,YAAY,CAAC,CAAC,CAAC;wBACf,QAAQ,CAAC,IAAI,CAAC;oBAClB,CAAC;iBACJ;AACL,YAAA,KAAK,OAAO;gBACR,OAAO;AACH,oBAAA,YAAY,EAAE,CAAC,CAAM,KAAI;wBACrB,YAAY,CAAC,CAAC,CAAC;wBACf,QAAQ,CAAC,IAAI,CAAC;oBAClB,CAAC;AACD,oBAAA,YAAY,EAAE,CAAC,CAAM,KAAI;wBACrB,YAAY,CAAC,CAAC,CAAC;wBACf,QAAQ,CAAC,KAAK,CAAC;oBACnB,CAAC;iBACJ;AACL,YAAA,KAAK,OAAO;gBACR,OAAO;AACH,oBAAA,OAAO,EAAE,CAAC,CAAM,KAAI;wBAChB,YAAY,CAAC,CAAC,CAAC;wBACf,QAAQ,CAAC,IAAI,CAAC;oBAClB,CAAC;AACD,oBAAA,MAAM,EAAE,CAAC,CAAM,KAAI;wBACf,YAAY,CAAC,CAAC,CAAC;wBACf,QAAQ,CAAC,KAAK,CAAC;oBACnB,CAAC;iBACJ;AACL,YAAA,KAAK,aAAa;gBACd,OAAO;AACH,oBAAA,aAAa,EAAE,CAAC,CAAa,KAAI;wBAC7B,CAAC,CAAC,cAAc,EAAE;wBAClB,CAAC,CAAC,eAAe,EAAE;wBACnB,YAAY,CAAC,CAAC,CAAC;wBAEf,QAAQ,CAAC,OAAO,GAAG;4BACf,KAAK,EAAG,CAAS,CAAC,OAAO;4BACzB,KAAK,EAAG,CAAS,CAAC,OAAO;yBAC5B;AAED,wBAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACjB,4BAAA,eAAe,EAAE;AACjB,4BAAA,oBAAoB,EAAE;4BACtB;wBACJ;AAEA,wBAAA,cAAc,EAAE;AAChB,wBAAA,QAAQ,CAAC,OAAO,GAAG,SAAS;AAC5B,wBAAA,UAAU,CAAC,OAAO,GAAG,IAAI;AACzB,wBAAA,YAAY,CAAC,OAAO,GAAG,IAAI;AAC3B,wBAAA,UAAU,CAAC,OAAO,GAAG,IAAI;wBACzB,OAAO,CAAC,IAAI,CAAC;AAEb,wBAAA,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AAC/B,4BAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;gCAAE;4BACpC,IAAI,CAAC,UAAU,CAAC,OAAO;gCAAE;AAEzB,4BAAA,eAAe,EAAE;AACjB,4BAAA,oBAAoB,EAAE;4BACtB,iBAAiB,CAAC,IAAI,CAAC;AACvB,4BAAA,UAAU,EAAE;4BACZ,SAAS,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;AACzC,4BAAA,QAAQ,CAAC,OAAO,GAAG,EAAE;AACzB,wBAAA,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;oBACnC,CAAC;iBACJ;AACL,YAAA;AACI,gBAAA,OAAO,EAAE;;AAErB,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAEd,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,MAAK;QAC7B,MAAM,MAAM,GAAG,aAAoB;QACnC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;QAExC,IAAI,WAAW,GAAG,KAAK;QACvB,IAAI,MAAM,GAAG,KAAK;QAElB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,IAAI;AACtC,YAAA,IAAK,IAAY,CAAC,IAAI,KAAK,cAAc;AAAE,gBAAA,OAAO,IAAI;YAEtD,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC;AACpD,YAAA,IAAI,SAAS;gBAAE,WAAW,GAAG,IAAI;AAEjC,YAAA,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,IAAI;YAErD,MAAM,YAAY,GAAwB,EAAE;AAE5C,YAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACzB,gBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;gBACxB,MAAM,MAAM,GAAI,IAAI,CAAC,KAAa,GAAG,GAAG,CAAC;gBACzC,YAAY,CAAC,GAAG,CAAC;oBACb,OAAO,MAAM,KAAK;AACd,0BAAE,CAAC,CAAM,KAAI;4BACP,IAAI,CAAC,CAAC,CAAC;4BACP,MAAM,CAAC,CAAC,CAAC;wBACb;0BACA,IAAI;YAClB;YAEA,IAAI,SAAS,EAAE;gBACX,YAAY,CAAC,GAAG,GAAG,SAAS,CACvB,IAAY,CAAC,GAAG,EACjB,UAAiB,CACpB;YACL;YAEA,MAAM,GAAG,IAAI;AACb,YAAA,OAAO,YAAY,CAAC,IAAW,EAAE,YAAY,CAAC;AAClD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,QAAQ;AAC5B,QAAA,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAGA,GAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAG,SAAS,GAAI;IACnE,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAExC,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAK;AAC9B,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,EAAE;QACzB,MAAM,MAAM,GAAkC,EAAE;AAEhD,QAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AACrB,YAAA,MAAM,CAAC,cAAc,CAAC,GAAG,MAAK;AAC1B,gBAAA,UAAU,EAAE;AAChB,YAAA,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC;QACtD;AAEA,QAAA,OAAO,MAAM;AACjB,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAExB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE;IAC9D,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,IAAI,SAAS;AAAE,YAAA,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC;AAC1D,QAAA,IAAI,SAAS;AAAE,YAAA,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC;AAC1D,QAAA,OAAO,MAAK;AACR,YAAA,IAAI,SAAS;gBAAE,SAAS,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,SAAS;gBAAE,SAAS,CAAC,SAAS,CAAC;AACnC,YAAA,UAAU,EAAE;AAChB,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAEnD,eAAe,CAAC,MAAK;AACjB,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,eAAe,EAAE;QACjB,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE;AAC7C,YAAA,oBAAoB,EAAE;QAC1B;aAAO;AACH,YAAA,uBAAuB,EAAE;QAC7B;AACJ,IAAA,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEV,eAAe,CAAC,MAAK;QACjB,QAAQ,CAAC,OAAO,CAAC;AACrB,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEb,SAAS,CAAC,MAAK;AACX,QAAA,OAAO,MAAK;AACR,YAAA,cAAc,EAAE;AACpB,QAAA,CAAC;IACL,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,iBAAiB,GAAG,MAAM,CAAqB,MAAK,EAAE,CAAC,CAAC;AAC9D,IAAA,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC,KAAI;QAC9B,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE;AACtB,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;YAAE;AAC9B,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,MAAqB;AACnC,QAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE;AACxD,QAAA,MAAM,EAAE;AACZ,IAAA,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAC3B,MAAM,CAAC,CAAM,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAC9C,EAAE,CACL;IACD,UAAU,CAAC,eAAe,CAAC;IAE3B,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;QAEnC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,MAAK;AACnD,YAAA,uBAAuB,EAAE;AAC7B,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE;AAChD,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,IAAI;AAChB,SAAA,CAAC;AAEF,QAAA,OAAO,MAAK;YACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC;AAChE,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEV,QACIC,4BACK,WAAW,EAEX,IAAI,KACDF,GAAA,CAAC,OAAO,EAAA,EACJ,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,KAAK,IAAI,OAAO,KAAK,aAAa,EACzC,KAAK,EAAE;AACH,oBAAA,GAAG,KAAK;AACR,oBAAA,QAAQ,EAAE,OAAO;AACpB,iBAAA,EACD,SAAS,EAAE,SAAS,EAAA,GAChB,YAAY,EAChB,OAAO,EAAE,UAAU,CAAC,OAAsB,EAAA,QAAA,EAEzC,OAAO,GACF,CACb,CAAA,EAAA,CACF;AAEX;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { useRef, useState, useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
const Scroll = (props) => {
|
|
6
|
+
const { style, className, draggable, onScroll, children, ...restProps } = props;
|
|
7
|
+
const scrollRef = useRef(null);
|
|
8
|
+
const [dragging, setDragging] = useState(false);
|
|
9
|
+
const dragState = useRef({ down: false, startX: 0, scrollLeft: 0 });
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
const el = scrollRef.current;
|
|
12
|
+
if (!el)
|
|
13
|
+
return;
|
|
14
|
+
const onWheel = (e) => {
|
|
15
|
+
const canScroll = el.scrollWidth > el.clientWidth + 1;
|
|
16
|
+
if (!canScroll)
|
|
17
|
+
return;
|
|
18
|
+
e.preventDefault();
|
|
19
|
+
e.stopPropagation();
|
|
20
|
+
const delta = Math.abs(e.deltaX) > Math.abs(e.deltaY)
|
|
21
|
+
? e.deltaX
|
|
22
|
+
: e.deltaY;
|
|
23
|
+
el.scrollLeft += delta;
|
|
24
|
+
};
|
|
25
|
+
const opts = {
|
|
26
|
+
passive: false,
|
|
27
|
+
capture: true,
|
|
28
|
+
};
|
|
29
|
+
el.addEventListener("wheel", onWheel, opts);
|
|
30
|
+
return () => el.removeEventListener("wheel", onWheel, opts);
|
|
31
|
+
}, []);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!draggable)
|
|
34
|
+
return;
|
|
35
|
+
const handleMouseMove = (e) => {
|
|
36
|
+
if (!dragState.current.down || !scrollRef.current)
|
|
37
|
+
return;
|
|
38
|
+
const x = e.clientX - dragState.current.startX;
|
|
39
|
+
scrollRef.current.scrollLeft =
|
|
40
|
+
dragState.current.scrollLeft - x;
|
|
41
|
+
};
|
|
42
|
+
const handleMouseUp = () => {
|
|
43
|
+
dragState.current.down = false;
|
|
44
|
+
setDragging(false);
|
|
45
|
+
};
|
|
46
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
47
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
48
|
+
return () => {
|
|
49
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
50
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
51
|
+
};
|
|
52
|
+
}, [draggable]);
|
|
53
|
+
const handleMouseDown = (e) => {
|
|
54
|
+
if (!draggable || !scrollRef.current)
|
|
55
|
+
return;
|
|
56
|
+
setDragging(true);
|
|
57
|
+
dragState.current = {
|
|
58
|
+
down: true,
|
|
59
|
+
startX: e.clientX,
|
|
60
|
+
scrollLeft: scrollRef.current.scrollLeft,
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
return (jsx("div", { ref: scrollRef, className: classNames("i-scroll", className, {
|
|
64
|
+
"i-scroll-draggable": draggable,
|
|
65
|
+
"i-scroll-dragging": dragging,
|
|
66
|
+
}), style: style, onScroll: onScroll, onMouseDown: handleMouseDown, ...restProps, children: children }));
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { Scroll as default };
|
|
70
|
+
//# sourceMappingURL=scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.js","sources":["../../../../packages/components/scroll/scroll.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useEffect, useRef, useState } from \"react\";\nimport \"./index.css\";\nimport { IScroll } from \"./type\";\n\nconst Scroll = (props: IScroll) => {\n\tconst { style, className, draggable, onScroll, children, ...restProps } =\n\t\tprops;\n\tconst scrollRef = useRef<HTMLDivElement>(null);\n\tconst [dragging, setDragging] = useState(false);\n\tconst dragState = useRef({ down: false, startX: 0, scrollLeft: 0 });\n\n\tuseEffect(() => {\n\t\tconst el = scrollRef.current;\n\t\tif (!el) return;\n\n\t\tconst onWheel = (e: WheelEvent) => {\n\t\t\tconst canScroll = el.scrollWidth > el.clientWidth + 1;\n\t\t\tif (!canScroll) return;\n\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tconst delta =\n\t\t\t\tMath.abs(e.deltaX) > Math.abs(e.deltaY)\n\t\t\t\t\t? e.deltaX\n\t\t\t\t\t: e.deltaY;\n\t\t\tel.scrollLeft += delta;\n\t\t};\n\n\t\tconst opts: AddEventListenerOptions = {\n\t\t\tpassive: false,\n\t\t\tcapture: true,\n\t\t};\n\t\tel.addEventListener(\"wheel\", onWheel, opts);\n\t\treturn () => el.removeEventListener(\"wheel\", onWheel, opts);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!draggable) return;\n\n\t\tconst handleMouseMove = (e: MouseEvent) => {\n\t\t\tif (!dragState.current.down || !scrollRef.current) return;\n\t\t\tconst x = e.clientX - dragState.current.startX;\n\t\t\tscrollRef.current.scrollLeft =\n\t\t\t\tdragState.current.scrollLeft - x;\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tdragState.current.down = false;\n\t\t\tsetDragging(false);\n\t\t};\n\n\t\tdocument.addEventListener(\"mousemove\", handleMouseMove);\n\t\tdocument.addEventListener(\"mouseup\", handleMouseUp);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mousemove\", handleMouseMove);\n\t\t\tdocument.removeEventListener(\"mouseup\", handleMouseUp);\n\t\t};\n\t}, [draggable]);\n\n\tconst handleMouseDown = (e: React.MouseEvent) => {\n\t\tif (!draggable || !scrollRef.current) return;\n\t\tsetDragging(true);\n\t\tdragState.current = {\n\t\t\tdown: true,\n\t\t\tstartX: e.clientX,\n\t\t\tscrollLeft: scrollRef.current.scrollLeft,\n\t\t};\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={scrollRef}\n\t\t\tclassName={classNames(\"i-scroll\", className, {\n\t\t\t\t\"i-scroll-draggable\": draggable,\n\t\t\t\t\"i-scroll-dragging\": dragging,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t\tonScroll={onScroll}\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport default Scroll;\n"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { jsxs, Fragment
|
|
2
|
-
import { DriveFolderUploadOutlined
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { DriveFolderUploadOutlined } from '@ricons/material';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { uid } from 'radash';
|
|
5
5
|
import { useState, useMemo, useRef, useCallback } from 'react';
|
|
6
|
-
import { SortableItem } from 'react-easy-sort';
|
|
7
6
|
import { createPortal } from 'react-dom';
|
|
7
|
+
import { SortableItem } from 'react-easy-sort';
|
|
8
8
|
import usePreview from '../../js/usePreview/index.js';
|
|
9
9
|
import { arrayMove } from '../../js/utils.js';
|
|
10
10
|
import Button from '../button/button.js';
|
|
@@ -33,7 +33,7 @@ const normalizeFiles = (files) => (files ?? []).map((item) => {
|
|
|
33
33
|
};
|
|
34
34
|
});
|
|
35
35
|
const Upload = (props) => {
|
|
36
|
-
const { label, labelInline, value, files, placeholder, status = "normal", message, className, style, children, droppable, dropbox, getDropboxContainer, defaultButtonProps, mode = "default", cardSize = "3.2em", disabled, sortable, limit = props.multiple ? Infinity : 1, multiple, renderItem, shouldUpload = () => true, uploader, onChange, onFilesChange, onUpload, onRemove, ...restProps } = props;
|
|
36
|
+
const { label, labelInline, value, files, placeholder, status = "normal", message, icon = jsx(Icon, { icon: jsx(DriveFolderUploadOutlined, {}) }), className, style, children, droppable, dropbox, getDropboxContainer, defaultButtonProps, mode = "default", cardSize = "3.2em", disabled, sortable, limit = props.multiple ? Infinity : 1, multiple, renderItem, shouldUpload = () => true, uploader, onChange, onFilesChange, onUpload, onRemove, ...restProps } = props;
|
|
37
37
|
const [internalFileList, setInternalFileList] = useState([]);
|
|
38
38
|
const isControlled = useMemo(() => value !== undefined || files !== undefined, [value, files]);
|
|
39
39
|
const fileList = isControlled
|
|
@@ -43,7 +43,7 @@ const Upload = (props) => {
|
|
|
43
43
|
const inputRef = useRef(null);
|
|
44
44
|
const preview = usePreview();
|
|
45
45
|
const defBtnProps = useMemo(() => ({
|
|
46
|
-
children:
|
|
46
|
+
children: jsxs(Fragment, { children: [icon, " \u4E0A\u4F20"] }),
|
|
47
47
|
...defaultButtonProps,
|
|
48
48
|
}), [defaultButtonProps]);
|
|
49
49
|
const trigger = useMemo(() => {
|
|
@@ -51,11 +51,11 @@ const Upload = (props) => {
|
|
|
51
51
|
return children;
|
|
52
52
|
switch (mode) {
|
|
53
53
|
case "card":
|
|
54
|
-
return (jsx(Button, { className: "i-upload-card-btn color-5", square: true, flat: true, outline: true, disabled: disabled, children:
|
|
54
|
+
return (jsx(Button, { className: "i-upload-card-btn color-5", square: true, flat: true, outline: true, disabled: disabled, children: icon }));
|
|
55
55
|
default:
|
|
56
56
|
return (jsx(Button, { ...defBtnProps, className: classNames("i-upload-btn", defBtnProps.className), disabled: disabled }));
|
|
57
57
|
}
|
|
58
|
-
}, [mode, children, disabled, defBtnProps]);
|
|
58
|
+
}, [mode, children, disabled, defBtnProps, icon]);
|
|
59
59
|
const handleUpload = useCallback(async (files) => {
|
|
60
60
|
if (!uploader)
|
|
61
61
|
return;
|
|
@@ -1 +1 @@
|
|
|
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 { createPortal } from \"react-dom\";\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 getDropboxContainer,\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 (() => {\n const node = (\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 return getDropboxContainer\n ? createPortal(node, getDropboxContainer())\n : node;\n })()\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":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upload.js","sources":["../../../../packages/components/upload/upload.tsx"],"sourcesContent":["import { DriveFolderUploadOutlined } 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 { createPortal } from \"react-dom\";\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 icon = <Icon icon={<DriveFolderUploadOutlined />} />,\n className,\n style,\n children,\n droppable,\n dropbox,\n getDropboxContainer,\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: <>{icon} 上传</>,\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}\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, icon]);\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 (() => {\n const node = (\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 return getDropboxContainer\n ? createPortal(node, getDropboxContainer())\n : node;\n })()\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":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
package/lib/es/index.js
CHANGED
|
@@ -28,6 +28,7 @@ export { default as Progress } from './components/progress/progress.js';
|
|
|
28
28
|
export { default as Radio } from './components/radio/radio.js';
|
|
29
29
|
export { default as Resizable } from './components/resizable/resizable.js';
|
|
30
30
|
export { default as River } from './components/river/river.js';
|
|
31
|
+
export { default as Scroll } from './components/scroll/scroll.js';
|
|
31
32
|
export { default as Select } from './components/select/select.js';
|
|
32
33
|
export { default as Step } from './components/step/step.js';
|
|
33
34
|
export { default as Swiper } from './components/swiper/swiper.js';
|
package/lib/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|