@ioca/react 1.2.9 → 1.3.0
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/css/index.css +1 -1
- package/lib/css/index.css.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/types/index.d.ts +14 -3
- package/package.json +1 -1
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../packages/js/useRipple/index.ts","../packages/components/loading/loading.tsx","../packages/components/button/button.tsx","../packages/components/button/index.tsx","../packages/components/button/toggle.tsx","../packages/components/button/group.tsx","../packages/components/icon/icon.tsx","../packages/components/affix/totop.tsx","../packages/components/affix/affix.tsx","../packages/components/badge/badge.tsx","../packages/components/card/card.tsx","../packages/js/usePreview/type.ts","../packages/js/utils.ts","../packages/components/checkbox/item.tsx","../packages/components/checkbox/checkbox.tsx","../packages/components/utils/helpericon/helpericon.tsx","../packages/components/collapse/collapse.tsx","../packages/components/utils/empty/index.tsx","../packages/components/datagrid/cell.tsx","../packages/components/collapse/item.tsx","../packages/js/hooks.ts","../packages/components/datagrid/resize.tsx","../packages/components/datagrid/sorter.tsx","../packages/components/datagrid/row.tsx","../packages/components/datagrid/datagrid.tsx","../packages/components/description/description.tsx","../packages/components/drawer/drawer.tsx","../packages/components/list/item.tsx","../packages/components/list/list.tsx","../packages/components/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/dropdown/item.tsx","../packages/components/dropdown/dropdown.tsx","../packages/components/editor/controls.tsx","../packages/components/editor/editor.tsx","../packages/components/flex/flex.tsx","../packages/components/form/context.tsx","../packages/components/form/useForm.ts","../packages/components/form/form.tsx","../packages/components/modal/modal.tsx","../packages/components/form/field.tsx","../packages/components/modal/hookModal.tsx","../packages/components/text/text.tsx","../packages/components/progress/circle.tsx","../packages/components/text/index.tsx","../packages/components/text/number.tsx","../packages/components/text/time.tsx","../packages/components/text/highlight.tsx","../packages/components/progress/line.tsx","../packages/components/progress/progress.tsx","../packages/components/video/video.tsx","../packages/js/usePreview/renderFile.tsx","../packages/js/usePreview/content.tsx","../packages/js/usePreview/index.tsx","../packages/components/image/image.tsx","../packages/components/input/container.tsx","../packages/components/image/index.tsx","../packages/components/image/list.tsx","../packages/components/input/input.tsx","../packages/components/input/index.tsx","../packages/components/input/textarea.tsx","../packages/components/input/number.tsx","../packages/components/input/range.tsx","../packages/components/message/message.tsx","../packages/components/modal/index.tsx","../packages/components/modal/useModal.tsx","../packages/components/pagination/page.tsx","../packages/components/pagination/pagination.tsx","../packages/components/tag/tag.tsx","../packages/components/select/options.tsx","../packages/components/select/select.tsx","../packages/components/picker/colors/footer.tsx","../packages/components/picker/colors/handle.tsx","../packages/components/picker/colors/index.tsx","../packages/components/picker/dates/dates.tsx","../packages/components/picker/dates/panel.tsx","../packages/components/picker/dates/index.tsx","../packages/components/picker/time/item.tsx","../packages/components/picker/time/panel.tsx","../packages/components/picker/time/index.tsx","../packages/components/popconfirm/popconfirm.tsx","../packages/components/radio/item.tsx","../packages/components/radio/radio.tsx","../packages/components/resizable/resizable.tsx","../packages/components/step/divider.tsx","../packages/components/step/item.tsx","../packages/components/step/step.tsx","../packages/components/swiper/item.tsx","../packages/components/swiper/swiper.tsx","../packages/components/tabs/item.tsx","../packages/components/tabs/tabs.tsx","../packages/components/tree/item.tsx","../packages/components/tree/tree.tsx","../packages/components/upload/renderFile.tsx","../packages/components/upload/upload.tsx"],"sourcesContent":["import \"./ripple.css\";\n\nconst TIMEOUT = 500;\n\nconst useRipple = () => {\n\tif (document.documentElement.dataset[\"useripple\"]) return;\n\tdocument.documentElement.dataset[\"useripple\"] = \"enable\";\n\n\tdocument.addEventListener(\"mousedown\", listener);\n};\n\nfunction listener(e: MouseEvent) {\n\tconst target = e.target as HTMLElement;\n\tconst parent = target.closest(\"[data-ripple]\") as HTMLElement;\n\n\tif (!target || !parent) return;\n\n\ttriggerRipple(parent, e);\n}\n\nfunction triggerRipple(target: HTMLElement, e: MouseEvent) {\n\tconst [$box, $ripple] = createRipple();\n\tconst rect = target.getBoundingClientRect();\n\tconst size = Math.max(rect.width, rect.height) * 2;\n\n\t$ripple.style.cssText = `\n left: ${e.pageX - rect.left}px;\n top: ${e.pageY - rect.top}px;\n width: ${size}px;\n height: ${size}px;\n transition: all ${TIMEOUT / 1000}s;\n `;\n\ttarget.insertAdjacentElement(\"afterbegin\", $box);\n\ttarget.offsetHeight;\n\t$ripple.classList.add(\"i-ripple-active\");\n\n\tsetTimeout(() => {\n\t\t$box.remove();\n\t}, TIMEOUT);\n}\n\nfunction createRipple() {\n\tconst $box = document.createElement(\"SPAN\");\n\tconst $ripple = document.createElement(\"SPAN\");\n\n\t$box.className = \"i-ripple-container\";\n\t$ripple.className = \"i-ripple\";\n\n\t$box.append($ripple);\n\n\treturn [$box, $ripple];\n}\n\nexport default useRipple;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n","import useRipple from \"@p/js/useRipple\";\nimport classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tonClick?.(e);\n\t};\n\n\tif (!children) return <></>;\n\n\tconst childNodes = [\n\t\tloading && <Loading key='loading' />,\n\t\tcreateElement(\n\t\t\t\"span\",\n\t\t\t{ key: \"content\", className: \"i-btn-content\" },\n\t\t\tchildren\n\t\t),\n\t];\n\n\tconst attrs = {\n\t\tclassName: formatClass(props),\n\t\t[\"data-ripple\"]:\n\t\t\tripple && !loading && !restProps.disabled ? \"\" : undefined,\n\t\tonClick: handleClick,\n\t};\n\n\tuseEffect(() => {\n\t\tripple && useRipple();\n\t}, [ripple]);\n\n\tif (typeof As === \"string\") {\n\t\treturn createElement(\n\t\t\tAs,\n\t\t\t{\n\t\t\t\tref,\n\t\t\t\thref,\n\t\t\t\t...attrs,\n\t\t\t\t...restProps,\n\t\t\t},\n\t\t\tchildNodes\n\t\t);\n\t}\n\n\treturn createElement(\n\t\tAs,\n\t\t{\n\t\t\tto: href || \"\",\n\t\t\t...attrs,\n\t\t\t...restProps,\n\t\t},\n\t\tchildNodes\n\t);\n};\n\nexport default Button as CompositionButton;\n","import Button from \"./button\";\nimport Group from \"./group\";\nimport Toggle from \"./toggle\";\n\nButton.Toggle = Toggle;\nButton.Group = Group;\n\nexport default Button;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useEffect } from \"react\";\nimport Button from \"./button\";\nimport { IButtonToggle } from \"./type\";\n\nexport default function Toggle(props: IButtonToggle) {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\tactiveClass,\n\t\tafter,\n\t\tdisabled,\n\t\tchildren,\n\t\tclassName,\n\t\ttoggable,\n\t\tonClick,\n\t\tonToggle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t\tdone: true,\n\t});\n\n\tconst toggle = async () => {\n\t\tconst hasAfter = !!after;\n\t\tconst nextActive = !state.active;\n\n\t\tconst canToggle = toggable ? await toggable() : true;\n\t\tif (!canToggle) return;\n\n\t\tObject.assign(state, {\n\t\t\tactive: nextActive,\n\t\t\tdone: !hasAfter,\n\t\t});\n\t\tonToggle?.(nextActive);\n\n\t\tif (!hasAfter) return;\n\n\t\tsetTimeout(() => {\n\t\t\tstate.done = true;\n\t\t}, 16);\n\t};\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tonClick?.(e);\n\n\t\t!disabled && toggle();\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tactive,\n\t\t\tdone: true,\n\t\t});\n\t}, [active]);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\t{ [activeClass || \"\"]: state.active },\n\t\t\t\t\"i-btn-toggle\"\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-btn-toggle-content\", {\n\t\t\t\t\t\"i-btn-toggle-active\": state.done,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{state.active ? after ?? children : children}\n\t\t\t</div>\n\t\t</Button>\n\t);\n}\n","import classNames from \"classnames\";\nimport { Children, cloneElement, useMemo } from \"react\";\nimport Button from \"./button\";\nimport { IButtonGroup } from \"./type\";\n\nexport default function Group(props: IButtonGroup) {\n\tconst { children, vertical, buttonProps, className, style } = props;\n\n\tconst nodes = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tconst { type } = node;\n\n\t\t\tif (type === Button) {\n\t\t\t\treturn cloneElement(\n\t\t\t\t\tnode,\n\t\t\t\t\tObject.assign({}, node.props, buttonProps)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\tvertical ? \"i-btn-group-vertical\" : \"i-btn-group-horizonal\"\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{nodes}\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\nimport { cloneElement, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = (props: IIcon) => {\n\tconst {\n\t\tref,\n\t\ticon,\n\t\tsize = \"1.425em\",\n\t\trotate,\n\t\tstyle,\n\t\tclassName,\n\t\t...restProps\n\t} = props;\n\n\tif (!isValidElement(icon)) return icon;\n\n\tconst iconProps = {\n\t\tref,\n\t\tstyle: {\n\t\t\ttransform: rotate ? `rotate(${rotate}deg)` : undefined,\n\t\t\t...style,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t},\n\t\tclassName: classNames(\"i-icon\", className),\n\t\t...restProps,\n\t};\n\n\treturn cloneElement(icon, iconProps);\n};\n\nexport default Icon;\n","import { SkipPreviousRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport { IAffix } from \"./type\";\n\nfunction ToTop(props: IAffix) {\n\tconst { style, className, onClick } = props;\n\n\treturn (\n\t\t<Button\n\t\t\tsquare\n\t\t\tclassName={classNames(\"i-affix-totop\", className)}\n\t\t\tstyle={{ ...style }}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Icon icon={<SkipPreviousRound />} rotate={90} />\n\t\t</Button>\n\t);\n}\n\nexport default ToTop;\n","import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => document.body,\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst {\n\t\thideShadow,\n\t\tborder,\n\t\tclassName,\n\t\tchildren,\n\t\theader,\n\t\tfooter,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n","import { CSSProperties, ReactNode } from \"react\";\nimport { IModal } from \"../../components/modal/type\";\n\nexport type TPreviewItem = {\n\tsrc: string;\n\tname?: ReactNode;\n\tthumb?: string;\n\trotate?: number;\n\tzoom?: number;\n\tstyle?: CSSProperties;\n\ttype?: TFileType;\n\tsuffix?: string;\n};\n\nexport enum TFileType {\n\tIMAGE = \"IMAGE\",\n\tVIDEO = \"VIDEO\",\n\tAUDIO = \"AUDIO\",\n\tPDF = \"PDF\",\n\tEXCEL = \"EXCEL\",\n\tTXT = \"TXT\",\n\tUNKNOWN = \"UNKNOWN\",\n}\n\nexport interface IPreview {\n\titems: (TPreviewItem | string)[];\n\tinitial?: number;\n\tcontrols?: boolean;\n\tloop?: boolean;\n\tclassName?: string;\n\tstyle?: CSSProperties;\n\tmodalProps?: IModal;\n\trenderImage?: (file: TPreviewItem) => ReactNode;\n\trenderFile?: (file: TPreviewItem) => ReactNode;\n\tonClose?: () => void;\n\tonChange?: (after: number, before?: number) => void;\n\tonZoom?: (scale: number) => void;\n\tonRotate?: (deg: number) => void;\n}\n","import { MouseEvent, ReactNode } from \"react\";\nimport { Root, createRoot } from \"react-dom/client\";\nimport { TFileType } from \"../js/usePreview/type\";\nimport { TOption, TOptions, TRelativeOptions } from \"../type\";\n\ntype TComputePosition = {\n\tcontainerSize: number;\n\ttargetSize: number;\n\ttargetOffset: number;\n\tcontentSize: number;\n\tgap: number;\n\talign?: \"start\" | \"center\" | \"end\";\n};\n\nexport function getPosition(\n\t$source?: HTMLElement | null,\n\t$popup?: HTMLElement | null,\n\toptions: TRelativeOptions = {}\n): [\n\tx: number,\n\ty: number,\n\tz: {\n\t\tarrowX: number;\n\t\tarrowY: number;\n\t\tarrowPos: string;\n\t}\n] {\n\tconst { refWindow, gap = 0, offset = 0, position = \"top\", align } = options;\n\n\tif (!$source || !$popup)\n\t\treturn [\n\t\t\t0,\n\t\t\t0,\n\t\t\t{\n\t\t\t\tarrowX: 0,\n\t\t\t\tarrowY: 0,\n\t\t\t\tarrowPos: \"bottom\",\n\t\t\t},\n\t\t];\n\n\tconst rectT = $source.getBoundingClientRect();\n\tconst rectC = $popup.getBoundingClientRect();\n\n\tlet w = window.innerWidth;\n\tlet h = window.innerHeight;\n\tlet {\n\t\tleft: tl,\n\t\ttop: tt,\n\t\tright: tr,\n\t\tbottom: tb,\n\t\twidth: tw,\n\t\theight: th,\n\t} = rectT;\n\tconst { height: ch, width: cw } = rectC;\n\n\tif (!refWindow) {\n\t\tconst rectPa = $source.offsetParent?.getBoundingClientRect();\n\n\t\tw = rectPa?.width || w;\n\t\th = rectPa?.height || h;\n\t\ttl = $source.offsetLeft;\n\t\ttt = $source.offsetTop;\n\t\ttr = tl + rectT.width;\n\t\ttb = tt + rectT.height;\n\t}\n\n\tlet y = 0;\n\tlet x = 0;\n\tlet arrowX = 0;\n\tlet arrowY = 0;\n\tlet arrowPos = \"bottom\";\n\n\tswitch (position) {\n\t\tcase \"left\":\n\t\tcase \"right\":\n\t\t\ty =\n\t\t\t\tth !== ch\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: h,\n\t\t\t\t\t\t\ttargetSize: th,\n\t\t\t\t\t\t\ttargetOffset: tt,\n\t\t\t\t\t\t\tcontentSize: ch,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tt;\n\t\t\tarrowY = y < tt ? tt - y + th / 2 : th / 2;\n\n\t\t\tconst xl = tl - offset - cw;\n\t\t\tconst xr = tr + offset + cw;\n\n\t\t\tif (position === \"left\") {\n\t\t\t\tconst R = xl < 0 && xr <= w;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tconst R = w > xr || xl < 0;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\tcase \"bottom\":\n\t\t\tx =\n\t\t\t\ttw !== cw\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: w,\n\t\t\t\t\t\t\ttargetOffset: tl,\n\t\t\t\t\t\t\ttargetSize: tw,\n\t\t\t\t\t\t\tcontentSize: cw,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tl;\n\t\t\tarrowX = x > tl ? cw / 2 : tl - x + tw / 2;\n\n\t\t\tconst yt = tt - offset - ch;\n\t\t\tconst yb = tb + offset + ch;\n\t\t\tif (position === \"top\") {\n\t\t\t\tconst T = yt < 0 && yb <= h;\n\t\t\t\ty = T ? tb + offset : yt;\n\t\t\t\tarrowY = T ? 0 : ch;\n\t\t\t\tarrowPos = T ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\tconst B = h > yb || yt < 0;\n\t\t\t\ty = B ? tb + offset : yt;\n\t\t\t\tarrowY = B ? 0 : ch;\n\t\t\t\tarrowPos = B ? \"top\" : \"bottom\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn [\n\t\tx,\n\t\ty,\n\t\t{\n\t\t\tarrowX,\n\t\t\tarrowY,\n\t\t\tarrowPos,\n\t\t},\n\t];\n}\n\nexport function getPointPosition(e: MouseEvent, content: HTMLElement) {\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst parent = content.offsetParent;\n\tlet pw,\n\t\tph,\n\t\tpl = 0,\n\t\tpt = 0;\n\n\tif (parent) {\n\t\tconst {\n\t\t\twidth: ow,\n\t\t\theight: oh,\n\t\t\tleft: ol,\n\t\t\ttop: ot,\n\t\t} = parent.getBoundingClientRect();\n\t\tconst st = parent.scrollTop ?? 0;\n\n\t\tpw = ow;\n\t\tph = oh;\n\t\tpt = ot - st;\n\t\tpl = ol;\n\t} else {\n\t\tpw = window.innerWidth;\n\t\tph = window.innerHeight;\n\t}\n\tconst x = e.pageX - pl;\n\tconst y = e.pageY - pt;\n\n\tconst left = x + w >= pw ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= ph ? (y - h > 0 ? y - h : y) : y;\n\n\treturn [left, top];\n}\n\nfunction computePosition({\n\tcontainerSize,\n\ttargetSize,\n\ttargetOffset,\n\tcontentSize,\n\tgap,\n\talign = \"center\",\n}: TComputePosition) {\n\tconst centerPoint = targetOffset + targetSize / 2;\n\n\tswitch (align) {\n\t\tcase \"start\":\n\t\t\treturn targetOffset + contentSize > containerSize\n\t\t\t\t? containerSize - contentSize - gap\n\t\t\t\t: targetOffset;\n\t\tcase \"center\":\n\t\t\tif (targetSize >= contentSize) {\n\t\t\t\treturn centerPoint - contentSize / 2;\n\t\t\t}\n\n\t\t\tif (centerPoint + contentSize / 2 + gap > containerSize) {\n\t\t\t\treturn targetOffset + targetSize - contentSize;\n\t\t\t}\n\n\t\t\tif (centerPoint - contentSize / 2 - gap < 0) {\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\treturn centerPoint - contentSize / 2;\n\t\tcase \"end\":\n\t\t\tconst result = targetOffset + targetSize - contentSize;\n\t\t\treturn result > 0 ? result : gap;\n\t\tdefault:\n\t\t\treturn centerPoint - contentSize / 2;\n\t}\n}\n\nexport function formatOption(options: TOptions): TOption[] {\n\treturn options.map((option) =>\n\t\t[\"string\", \"number\"].includes(typeof option)\n\t\t\t? { label: option, value: option }\n\t\t\t: option\n\t) as TOption[];\n}\n\nexport function animate(\n\tfrom: number,\n\tto: number,\n\tduration: number = 1000,\n\tcallback?: (v: number) => void,\n\teasing: (t: number) => number = (t) => 1 - Math.pow(1 - t, 4)\n) {\n\tconst start = performance.now();\n\tconst diff = to - from;\n\tlet raf = requestAnimationFrame(loop);\n\n\tfunction loop() {\n\t\traf = requestAnimationFrame(loop);\n\n\t\tconst past = performance.now() - start;\n\t\tlet percent = past / duration;\n\n\t\tif (percent >= 1) {\n\t\t\tpercent = 1;\n\t\t\tcancelAnimationFrame(raf);\n\t\t}\n\n\t\tconst pass = diff * easing(percent);\n\t\tcallback?.(pass);\n\t}\n}\n\nexport function formatNumber(\n\tvalue: number,\n\toptions: {\n\t\tprecision?: number;\n\t\tthousand?: string;\n\t} = {}\n) {\n\tconst { precision, thousand } = options;\n\n\tconst result = value.toFixed(precision);\n\n\tif (!thousand) return result;\n\n\tconst points = result.split(\".\");\n\tconst integer = points[0].replace(\n\t\t/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g,\n\t\t`$&${thousand}`\n\t);\n\n\tif (points.length === 1) return integer;\n\n\treturn `${integer}.${points[1]}`;\n}\n\nexport function renderNode(node: ReactNode, container = document.body) {\n\tconst div: HTMLDivElement | null = document.createElement(\"div\");\n\tcontainer.append(div);\n\n\tconst root: Root | null = createRoot(div);\n\tconst sto = setTimeout(() => {\n\t\troot?.render(node);\n\t}, 0);\n\n\treturn () => {\n\t\tdiv?.remove();\n\t\troot?.unmount();\n\t\tsto && clearTimeout(sto);\n\t};\n}\n\nexport function getSuffixByUrl(url: string) {\n\treturn url.match(/\\.([^\\./\\?]+)($|\\?)/)?.[1];\n}\n\nexport function getFileType(suffix: string, type?: string): TFileType {\n\tswitch (true) {\n\t\tcase [\"jpg\", \"jpeg\", \"png\", \"webp\", \"svg\"].includes(suffix) ||\n\t\t\ttype?.startsWith(\"image/\"):\n\t\t\treturn TFileType[\"IMAGE\"];\n\t\tcase [\"mp4\", \"avi\"].includes(suffix) || type?.startsWith(\"video/\"):\n\t\t\treturn TFileType[\"VIDEO\"];\n\t\tdefault:\n\t\t\treturn TFileType[\"UNKNOWN\"];\n\t}\n}\n\nexport function fullScreen(el: HTMLElement) {\n\tel.requestFullscreen?.();\n}\n\nexport function exitFullScreen() {\n\tdocument.exitFullscreen?.();\n}\n\nexport function formatTime(\n\ttime: number,\n\toptions?: {\n\t\tzero?: boolean;\n\t\tunits?: string[];\n\t}\n) {\n\tconst result: string[] = [];\n\tconst { zero = true, units = [\"\", \":\", \":\"] } = options || {};\n\n\tconst l = units.length;\n\tlet i = 0;\n\n\twhile (i < l) {\n\t\tif (time <= 0 && i > 1) break;\n\n\t\tconst n = Math.round(time % 60);\n\n\t\ttime = Math.floor(time / 60);\n\n\t\tresult.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);\n\t}\n\n\treturn result.join(\"\");\n}\n\nexport function getNextSorter(\n\tprevSortBy: string,\n\tprevSortType: string,\n\tsortBy: string\n): [sortBy: string, sortType: string] {\n\tconst types = [\"desc\", \"asc\"];\n\n\tif (prevSortBy === sortBy) {\n\t\tconst i = types.findIndex((t) => t === prevSortType) + 1;\n\t\tconst type = types[i] || \"\";\n\t\tconst by = type === \"\" ? \"\" : sortBy;\n\n\t\treturn [by, type];\n\t}\n\n\treturn [sortBy, \"desc\"];\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n\tif (!+bytes) return \"0 Bytes\";\n\n\tconst k = 1024;\n\tconst dm = decimals < 0 ? 0 : decimals;\n\tconst sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n\treturn value < min ? min : value > max ? max : value;\n}\n\nexport const arrayMove = (array, fromIndex: number, toIndex: number) => {\n\tif (toIndex >= array.length) {\n\t\tlet k = toIndex - array.length + 1;\n\t\twhile (k--) {\n\t\t\tarray.push(undefined);\n\t\t}\n\t}\n\tarray.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);\n\treturn array;\n};\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport { ICheckboxItem } from \"./type\";\n\nexport default function CheckboxItem(props: ICheckboxItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = false,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tdisabled,\n\t\tpartof,\n\t\tchildren,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst checked = e.target.checked;\n\n\t\tObject.assign(state, {\n\t\t\tvalue: checked,\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonChange?.(checked, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${state.status}`]: state.status !== \"normal\",\n\t\t\t\t\tdisabled,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype='checkbox'\n\t\t\t\tname={name}\n\t\t\t\tclassName={classNames(\"i-checkbox-input\", {\n\t\t\t\t\t[`i-checkbox-${type}`]: !partof,\n\t\t\t\t\t\"i-checkbox-partof\": partof,\n\t\t\t\t})}\n\t\t\t\tchecked={state.value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-checkbox-text'>{children || label}</span>\n\n\t\t\t{state.message && (\n\t\t\t\t<span className='i-checkbox-message'>*{state.message}</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{\n\t\tvalue: any;\n\t}>({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...state.value];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tstate.value = group;\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-checkbox-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CheckboxItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={state.value.includes(option.value)}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n","import { CloseRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { createElement } from \"react\";\nimport Icon from \"../../icon\";\nimport \"./index.css\";\nimport { IHelperIcon } from \"./type\";\n\nconst Helpericon = (props: IHelperIcon) => {\n\tconst {\n\t\tas = \"a\",\n\t\tactive,\n\t\tclassName,\n\t\ticon = <CloseRound />,\n\t\t...restProps\n\t} = props;\n\n\tif (!active) return <></>;\n\n\treturn createElement(\n\t\tas,\n\t\t{\n\t\t\tclassName: classNames(\"i-helpericon\", className),\n\t\t\t...restProps,\n\t\t},\n\t\t[\n\t\t\tcreateElement(Icon, {\n\t\t\t\tkey: uid(3),\n\t\t\t\ticon,\n\t\t\t}),\n\t\t]\n\t);\n};\n\nexport default Helpericon;\n","import { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { ICollapse, ICollapseItem, TKey } from \"./type\";\n\nconst Collapse = (props: ICollapse) => {\n\tconst {\n\t\tactive,\n\t\titems,\n\t\tmultiple,\n\t\tborder,\n\t\theaderClickable,\n\t\tclassName,\n\t\tchildren,\n\t\trenderToggle = (active: boolean) =>\n\t\t\tactive ? <MinusRound /> : <PlusRound />,\n\t\tonCollapse,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t});\n\n\tconst collapses = useMemo(() => {\n\t\tif (!items) {\n\t\t\tif (!children) return [];\n\n\t\t\treturn (\n\t\t\t\tChildren.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: TKey;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst { title, children, content, disabled, ...restProps } =\n\t\t\t\t\t\tnodeProps;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...restProps,\n\t\t\t\t\t\tkey: key || i,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tcontent: children || content,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t};\n\t\t\t\t}) || []\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t}, [children]);\n\n\tconst handleHeaderClick = (item: ICollapseItem) => {\n\t\tif (!headerClickable) return;\n\n\t\thandleToggle(item);\n\t};\n\n\tconst handleToggle = (item: ICollapseItem, e?) => {\n\t\tconst { key, disabled } = item;\n\t\te?.stopPropagation();\n\t\tif (disabled) return;\n\n\t\tif (!multiple) {\n\t\t\tstate.active = state.active === key ? undefined : key;\n\t\t\tonCollapse?.(key as TKey, state.active !== undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Array.isArray(state.active)) state.active = [];\n\n\t\tconst i = state.active.findIndex((k) => k === key);\n\n\t\tif (i > -1) {\n\t\t\tstate.active.splice(i, 1);\n\t\t} else {\n\t\t\tkey !== undefined && state.active.push(key);\n\t\t}\n\t\tonCollapse?.(key as TKey, i < 0);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-collapse\",\n\t\t\t\t{\n\t\t\t\t\t\"i-collapse-bordered\": border,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{collapses.map((item) => {\n\t\t\t\tconst {\n\t\t\t\t\tkey,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps\n\t\t\t\t} = item;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? ((state.active as TKey[]) || []).includes(key)\n\t\t\t\t\t: state.active === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tclassName={classNames(\"i-collapse-item\", className, {\n\t\t\t\t\t\t\t\"i-collapse-active\": isActive,\n\t\t\t\t\t\t\t\"i-collapse-disabled\": disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='i-collapse-header'\n\t\t\t\t\t\t\tonClick={() => handleHeaderClick(item)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\tclassName='i-collapse-toggle'\n\t\t\t\t\t\t\t\ticon={renderToggle(isActive)}\n\t\t\t\t\t\t\t\tonClick={(e) => handleToggle(item, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className='i-collapse-content'>{content}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCollapse.Item = Item;\n\nexport default Collapse;\n","import { InboxTwotone } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport default function Empty(props) {\n\tconst { className, ...restProps } = props;\n\n\treturn (\n\t\t<InboxTwotone\n\t\t\tclassName={classNames(\"i-empty\", className)}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\nimport { ICell, IColumn } from \"./type\";\n\nexport function getCellStyle({\n\tjustify,\n\tcol,\n\trow,\n\tcolSpan = 1,\n\trowSpan = 1,\n}: Pick<IColumn, \"justify\" | \"fixed\"> & {\n\tcol: number;\n\trow: number;\n\tcolSpan?: number;\n\trowSpan?: number;\n\tisHeader?: boolean;\n}) {\n\tconst style = {\n\t\t\"--datagrid-justify\": justify,\n\t\tgridArea: `${row + 1} / ${col + 1} / ${row + 1 + rowSpan} / ${\n\t\t\tcol + 1 + colSpan\n\t\t}`,\n\t\tinsetInline: `var(--datagrid-cell-inset-${col})`,\n\t};\n\n\treturn style;\n}\n\nexport function Cell(props: ICell) {\n\tconst {\n\t\tcolumn,\n\t\trow,\n\t\tcol,\n\t\tdata,\n\t\tcellEllipsis,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\tconst { id, fixed, justify, rowSpan, render } = column;\n\tconst style = getCellStyle({ justify, fixed, col, row, rowSpan });\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t[`i-datagrid-cell-fixed-${fixed}`]: fixed,\n\t\t\t})}\n\t\t\tdata-col={id}\n\t\t\tstyle={style}\n\t\t\tonClick={(e) => onCellClick?.(data, column, row, col, e)}\n\t\t\tonDoubleClick={(e) =>\n\t\t\t\tonCellDoubleClick?.(data, column, row, col, e)\n\t\t\t}\n\t\t>\n\t\t\t{render?.(data[id], data, col) ?? (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-datagrid-cell-content\", {\n\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\": cellEllipsis,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{data[id]}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { ICollapseItem } from \"./type\";\n\nexport default function Item(props: ICollapseItem) {\n\treturn <></>;\n}\n","import { useEffect } from \"react\";\n\ntype TMouseEvent = (e: MouseEvent) => void;\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\ntype TEventOption = {\n\tdisabled?: boolean;\n};\n\nconst ClickEvents = new Set<TMouseEvent>();\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst KeydownEvents = new Set<TKeyboardEvent>();\n\nconst touchable = \"ontouchend\" in document;\nconst EVENTS: any = {\n\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\tUP: touchable ? \"touchend\" : \"mouseup\",\n\tKEYDOWN: \"keydown\",\n};\n\ndocument.addEventListener(\n\tEVENTS.MOVE,\n\t(e: MouseEvent) => {\n\t\tfor (const listener of MouseMoveEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t},\n\t{ passive: false }\n);\n\ndocument.addEventListener(EVENTS.UP, (e) => {\n\tfor (const listener of MouseUpEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\ndocument.addEventListener(EVENTS.KEYDOWN, (e) => {\n\tfor (const listener of KeydownEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseMoveEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseMoveEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tKeydownEvents.add(listener);\n\t\treturn () => {\n\t\t\tKeydownEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\n\tconst WM = new WeakMap();\n\tconst IO = new IntersectionObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\n\t\t});\n\t}, configs);\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\tWM.set(target, callback);\n\t\ttarget && IO.observe(target);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n\nexport function useResizeObserver() {\n\tconst WM = new WeakMap();\n\tconst IO = new ResizeObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target);\n\t\t});\n\t});\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\ttarget && IO.observe(target);\n\t\tWM.set(target, callback);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\n\nexport default function Resize(props) {\n\tconst { index, onWidthChange } = props;\n\tconst state = useReactive({\n\t\tresizing: false,\n\t\tx: 0,\n\t\twidth: 0,\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst width = (tar.offsetParent as HTMLElement).offsetWidth;\n\n\t\tObject.assign(state, {\n\t\t\tx: e.pageX,\n\t\t\tresizing: true,\n\t\t\twidth,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tconst after = state.width + e.pageX - state.x;\n\t\tif (after <= 24) return;\n\n\t\tonWidthChange(index, after);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<i\n\t\t\tclassName='i-datagrid-resizor'\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Arrow = (props) => (\n\t<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n\t\t<g fill='none'>\n\t\t\t<path\n\t\t\t\td='M9 17.898c0 1.074 1.265 1.648 2.073.941l6.31-5.522a1.75 1.75 0 0 0 0-2.634l-6.31-5.522C10.265 4.454 9 5.028 9 6.102v11.796z'\n\t\t\t\tfill='currentColor'\n\t\t\t></path>\n\t\t</g>\n\t</svg>\n);\n\nexport default function Sorter(props) {\n\tconst { type } = props;\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-datagrid-sorter\", {\n\t\t\t\t[`i-datagrid-sorter-${type}`]: type,\n\t\t\t})}\n\t\t>\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t</a>\n\t);\n}\n","import classNames from \"classnames\";\nimport { Cell, getCellStyle } from \"./cell\";\nimport Resize from \"./resize\";\nimport Sorter from \"./sorter\";\nimport { IHeader, IRow } from \"./type\";\n\nexport default function Row(props: IRow) {\n\tconst {\n\t\trow,\n\t\tdata,\n\t\tcolumns,\n\t\tcellEllipsis,\n\t\tonRowClick,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-row' onClick={() => onRowClick?.(data, row)}>\n\t\t\t{columns.map((col, i) => (\n\t\t\t\t<Cell\n\t\t\t\t\tkey={i}\n\t\t\t\t\tcolumn={col}\n\t\t\t\t\tcol={i}\n\t\t\t\t\trow={row}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function Header(props: IHeader) {\n\tconst {\n\t\tcolumns,\n\t\tresizable,\n\t\tcellEllipsis,\n\t\tsortBy,\n\t\tsortType,\n\t\tonWidthChange,\n\t\tonHeaderClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-header i-datagrid-row'>\n\t\t\t{columns.map((column, col) => {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\ttitle,\n\t\t\t\t\tfixed,\n\t\t\t\t\tcolSpan,\n\t\t\t\t\tsorter,\n\t\t\t\t\tjustify,\n\t\t\t\t\trenderHeader,\n\t\t\t\t} = column;\n\t\t\t\tconst style = getCellStyle({\n\t\t\t\t\tjustify,\n\t\t\t\t\trow: 0,\n\t\t\t\t\tcol,\n\t\t\t\t\tcolSpan,\n\t\t\t\t});\n\n\t\t\t\tconst order = sortBy === id ? sortType : \"\";\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\tdata-col={id}\n\t\t\t\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t\t\t\t\"i-datagrid-has-sorter\": sorter,\n\t\t\t\t\t\t\t\"i-datagrid-cell-fixed\": fixed,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{ ...style, insetBlockStart: 0 }}\n\t\t\t\t\t\tonClick={(e) => onHeaderClick?.(column, e)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderHeader?.(column, col) ?? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content\",\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\":\n\t\t\t\t\t\t\t\t\t\t\tcellEllipsis,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title || id}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{sorter && <Sorter type={order} />}\n\n\t\t\t\t\t\t{resizable && (\n\t\t\t\t\t\t\t<Resize index={col} onWidthChange={onWidthChange} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","import { getNextSorter } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport ScrollContainer, { Scrollbars } from \"react-custom-scrollbars-2\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => <Loading size='1.5em' className='color-3' />,\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst scrollbar = useRef<Scrollbars>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && scrollbar.current?.scrollTop(0);\n\t}, [loading]);\n\n\tconst scrollBarStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<ScrollContainer\n\t\t\tref={scrollbar}\n\t\t\tautoHide\n\t\t\tautoHeight\n\t\t\tautoHeightMax={height}\n\t\t\tstyle={scrollBarStyle}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t\trenderView={(props) => (\n\t\t\t\t<div\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={classNames({ \"i-datagrid-loading\": loading })}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tonScroll={onScroll}\n\t\t>\n\t\t\t<div ref={container} className='i-datagrid'>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</ScrollContainer>\n\t);\n};\n\nexport default Datagrid;\n","import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n","import { useKeydown } from \"@/packages/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tdisabledEsc,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t\tinit: false,\n\t});\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tstate.active = true;\n\t\t\ttoggable.current = true;\n\t\t\tstate.init = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tstate.active = false;\n\t\tsetTimeout(() => {\n\t\t\tif (!keepDOM) {\n\t\t\t\tstate.show = false;\n\t\t\t}\n\t\t\tonVisibleChange?.(false);\n\t\t\ttoggable.current = true;\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{\n\t\t\tdisabled: disabledEsc,\n\t\t}\n\t);\n\n\treturn createPortal(\n\t\tstate.show && (\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\t\"i-active\": state.active,\n\t\t\t\t})}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</header>\n\n\t\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t\t<div className='i-drawer-footer'>{footer}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n","import classNames from \"classnames\";\nimport { IListItem } from \"./type\";\n\nconst Item = (props: IListItem) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttype,\n\t\talign,\n\t\tdisabled,\n\t\tlabel,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<li\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-list-item\", className, {\n\t\t\t\t\"i-list-item-active\": active,\n\t\t\t\t\"i-list-option\": type === \"option\",\n\t\t\t\tdisabled,\n\t\t\t})}\n\t\t\tstyle={{ alignItems: align, ...style }}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label !== undefined && (\n\t\t\t\t<span className='i-list-item-label'>{label}</span>\n\t\t\t)}\n\t\t\t{children}\n\t\t</li>\n\t);\n};\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, cloneElement } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\n\nconst List = (props: IList) => {\n\tconst { label, type, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\tconst { type, props: nodeProps } = node;\n\n\t\t\t\tif (type === Item) {\n\t\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t\t...nodeProps,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn node;\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Item = Item;\n\nexport default List;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IPopupContent } from \"./type\";\n\nconst Content = (props: IPopupContent) => {\n\tconst {\n\t\tref,\n\t\tgetContainer = (trigger) => trigger?.offsetParent ?? document.body,\n\t\ttrigger,\n\t\tarrow,\n\t\tarrowProps = {},\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\tconst arrowCSS = useMemo(() => {\n\t\tlet { left, top, pos } = arrowProps;\n\t\tlet transform = \"\";\n\n\t\tswitch (pos) {\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\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\ttransform,\n\t\t};\n\t}, [arrowProps]);\n\n\tconst content = (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-popup\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{arrow && (\n\t\t\t\t<svg\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-popup-arrow'\n\t\t\t\t\tstyle={arrowCSS}\n\t\t\t\t>\n\t\t\t\t\t<path d='M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' />\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{children}\n\t\t</div>\n\t);\n\n\treturn createPortal(content, getContainer(trigger));\n};\n\nexport default Content;\n","import { useMouseUp, useResizeObserver } from \"@p/js/hooks\";\nimport { getPointPosition, getPosition } from \"@p/js/utils\";\nimport { useCreation, useReactive } from \"ahooks\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPopup } from \"./type\";\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\tfixed,\n\t\tposition = \"top\",\n\t\tshowDelay = 16,\n\t\thideDelay = 12,\n\t\ttouchable,\n\t\tarrow = true,\n\t\talign,\n\t\tfitSize,\n\t\twatchResize,\n\t\tclickOutside = true,\n\t\tdisabled,\n\t\treferToWindow,\n\t\tstyle,\n\t\tclassName,\n\t\tgetContainer,\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 statusRef = useRef<string>(\"\");\n\tconst state = useReactive<{\n\t\tshow: boolean;\n\t\tstyle: CSSProperties;\n\t\tarrowProps: Record<string, any>;\n\t}>({\n\t\tshow: false,\n\t\tstyle: { position: fixed ? \"fixed\" : \"absolute\" },\n\t\tarrowProps: {},\n\t});\n\n\tuseMouseUp((e) => {\n\t\tif (!triggerRef.current || !contentRef.current || !clickOutside) return;\n\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst isContain =\n\t\t\ttriggerRef.current.contains(tar) ||\n\t\t\tcontentRef.current.contains(tar);\n\n\t\tif (!state.show || isContain) return;\n\n\t\thandleToggle(false);\n\t});\n\n\tconst clearTimer = () => {\n\t\tif (!timerRef.current) return;\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst handleShow = () => {\n\t\tif (disabled) return;\n\t\tif (\n\t\t\tstate.show &&\n\t\t\t(trigger !== \"hover\" || (trigger === \"hover\" && !touchable))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tstate.show = true;\n\t\tstatusRef.current = \"showing\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (statusRef.current !== \"showing\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\t\ttriggerRef.current,\n\t\t\t\tcontentRef.current,\n\t\t\t\t{\n\t\t\t\t\tposition,\n\t\t\t\t\tgap,\n\t\t\t\t\toffset,\n\t\t\t\t\talign,\n\t\t\t\t\trefWindow: referToWindow,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tstate.style = {\n\t\t\t\t...state.style,\n\t\t\t\topacity: 1,\n\t\t\t\ttransform: \"none\",\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t};\n\t\t\tstate.arrowProps = {\n\t\t\t\tleft: arrowX,\n\t\t\t\ttop: arrowY,\n\t\t\t\tpos: arrowPos,\n\t\t\t};\n\t\t\tonVisibleChange?.(true);\n\t\t\tclearTimer();\n\t\t\tstatusRef.current = \"\";\n\t\t}, showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!state.show) return;\n\n\t\tstatusRef.current = \"hiding\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (statusRef.current !== \"hiding\") {\n\t\t\t\tclearTimer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.style = {\n\t\t\t\t...state.style,\n\t\t\t\topacity: 0,\n\t\t\t\ttransform: \"translate(0, 2px)\",\n\t\t\t};\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.show = false;\n\t\t\t\tclearTimer();\n\t\t\t\tonVisibleChange?.(false);\n\t\t\t\tstatusRef.current = \"\";\n\t\t\t}, 160);\n\t\t}, 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\n\t\tstate.show ? handleHide() : handleShow();\n\t};\n\tconst eventMaps = useCreation(\n\t\t() => ({\n\t\t\tclick: {\n\t\t\t\tonClick: () => handleToggle(true),\n\t\t\t},\n\t\t\thover: {\n\t\t\t\tonMouseEnter: () => handleToggle(true),\n\t\t\t\tonMouseLeave: () => handleToggle(false),\n\t\t\t},\n\t\t\tfocus: {\n\t\t\t\tonFocus: () => handleToggle(true),\n\t\t\t\tonBlur: () => handleToggle(false),\n\t\t\t},\n\t\t\tcontextmenu: {\n\t\t\t\tonContextMenu: (e: MouseEvent) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\tif (state.show) {\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.style = {\n\t\t\t\t\t\t\t...state.style,\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.show = true;\n\n\t\t\t\t\ttimerRef.current = setTimeout(() => {\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.style = {\n\t\t\t\t\t\t\t...state.style,\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\ttransform: \"none\",\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tclearTimer();\n\t\t\t\t\t\tonVisibleChange?.(true);\n\t\t\t\t\t}, showDelay);\n\t\t\t\t},\n\t\t\t},\n\t\t\tnone: {},\n\t\t}),\n\t\t[]\n\t);\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 computePosition = () => {\n\t\tif (!state.show) return;\n\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\ttriggerRef.current,\n\t\t\tcontentRef.current,\n\t\t\t{\n\t\t\t\tposition,\n\t\t\t\tgap,\n\t\t\t\toffset,\n\t\t\t\talign,\n\t\t\t\trefWindow: referToWindow,\n\t\t\t}\n\t\t);\n\n\t\tObject.assign(state, {\n\t\t\tstyle: { ...state.style, left, top },\n\t\t\tarrowProps: { left: arrowX, top: arrowY, pos: arrowPos },\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (trigger === \"contextmenu\") return;\n\t\tconst { observe, unobserve, disconnect } = useResizeObserver();\n\n\t\ttriggerRef.current && observe(triggerRef.current, computePosition);\n\n\t\tif (!watchResize || !contentRef.current) return;\n\n\t\tobserve(contentRef.current, computePosition);\n\n\t\treturn () => {\n\t\t\tif (!watchResize || !contentRef.current) return;\n\n\t\t\tunobserve(contentRef.current);\n\t\t\ttriggerRef.current && unobserve(triggerRef.current);\n\t\t\tdisconnect();\n\t\t};\n\t}, [watchResize, contentRef.current, triggerRef.current]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!fitSize || !state.show) return;\n\n\t\tconst vertical = [\"top\", \"bottom\"].includes(position);\n\t\tconst size =\n\t\t\ttriggerRef.current?.[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n\t\tstate.style = { ...state.style, [vertical ? \"width\" : \"height\"]: size };\n\t}, [state.show, fitSize]);\n\n\tuseLayoutEffect(() => {\n\t\thandleToggle(visible);\n\t}, [visible]);\n\n\treturn (\n\t\t<>\n\t\t\t{Children.map(children, (child) => {\n\t\t\t\tif (!isValidElement(child)) return;\n\n\t\t\t\tconst { className, ...restProps } = child.props as any;\n\t\t\t\tObject.keys(eventMaps[trigger]).map((evt) => {\n\t\t\t\t\tif (!restProps[evt]) return;\n\t\t\t\t\tconst fn = eventMaps[trigger][evt];\n\n\t\t\t\t\teventMaps[trigger][evt] = (e) => {\n\t\t\t\t\t\tfn();\n\t\t\t\t\t\trestProps[evt](e);\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\tref: triggerRef,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps,\n\t\t\t\t\t...eventMaps[trigger],\n\t\t\t\t});\n\t\t\t})}\n\n\t\t\t{state.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={{ ...style, ...state.style }}\n\t\t\t\t\tarrowProps={state.arrowProps}\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\tgetContainer={getContainer}\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","import List from \"../list\";\nimport Popup from \"../popup\";\nimport { IDropItem } from \"./type\";\n\nconst { Item: ListItem } = List;\n\nconst Item = (props: IDropItem) => {\n\tconst { more, moreProps, onClick, ...restProps } = props;\n\tconst Li = (\n\t\t<ListItem\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick?.(e);\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n\n\tif (!more) return Li;\n\n\treturn (\n\t\t<Popup\n\t\t\tposition='right'\n\t\t\ttouchable\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\toffset={10}\n\t\t\thideDelay={240}\n\t\t\t{...moreProps}\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{more}\n\t\t\t\t</List>\n\t\t\t}\n\t\t>\n\t\t\t{Li}\n\t\t</Popup>\n\t);\n};\n\nexport default Item;\n","import List from \"../list\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IDropdown } from \"./type\";\n\nconst Dropdown = (props: IDropdown) => {\n\tconst { width, content, children, ...restProps } = props;\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\ttouchable\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tstyle={{ minWidth: width }}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</List>\n\t\t\t}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nDropdown.Item = Item;\n\nexport default Dropdown;\n","import {\n\tClearAllRound,\n\tFormatBoldRound,\n\tFormatItalicRound,\n\tFormatUnderlinedRound,\n\tRedoRound,\n\tStrikethroughSRound,\n\tUndoRound,\n} from \"@ricons/material\";\nimport { Fragment } from \"react/jsx-runtime\";\nimport { escapeAttrValue } from \"xss\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\n\nexport const exec = (a, b?, c?) => document.execCommand(a, b, c);\n\nexport const xssOptions = {\n\tonIgnoreTagAttr: function (tag, name, value) {\n\t\tif ([\"data-\", \"style\"].includes(name.substr(0, 5))) {\n\t\t\treturn name + '=\"' + escapeAttrValue(value) + '\"';\n\t\t}\n\t},\n};\n\nconst fnMap = {\n\tbold: {\n\t\ticon: <FormatBoldRound />,\n\t\tonClick: () => exec(\"bold\"),\n\t\ttip: \"粗体\",\n\t},\n\titalic: {\n\t\ticon: <FormatItalicRound />,\n\t\tonClick: () => exec(\"italic\"),\n\t\ttip: \"斜体\",\n\t},\n\tunderline: {\n\t\ticon: <FormatUnderlinedRound />,\n\t\tonClick: () => exec(\"underline\"),\n\t\ttip: \"下划线\",\n\t},\n\tstrike: {\n\t\ticon: <StrikethroughSRound />,\n\t\tonClick: () => exec(\"strikeThrough\"),\n\t\ttip: \"删除线\",\n\t},\n\tredo: {\n\t\ticon: <RedoRound />,\n\t\tonClick: () => exec(\"redo\"),\n\t\ttip: \"重做\",\n\t},\n\tundo: {\n\t\ticon: <UndoRound />,\n\t\tonClick: () => exec(\"undo\"),\n\t\ttip: \"撤销\",\n\t},\n\t// color: {\n\t// \ticon: <FormatColorTextRound />,\n\t// \tonClick: () => exec(\"foreColor\", false, \"\"),\n\t// },\n\t// backColor: {\n\t// \ticon: <FormatColorFillRound />,\n\t// \tonClick: () => exec(\"backColor\", false, \"\"),\n\t// },\n\tclear: {\n\t\ticon: <ClearAllRound />,\n\t\tonClick: () => exec(\"removeFormat\"),\n\t\ttip: \"清除格式\",\n\t},\n};\n\nconst aliasMap = {\n\tsimple: [\"undo\", \"redo\", \"bold\", \"italic\", \"underline\", \"strike\", \"clear\"],\n\tall: Object.keys(fnMap),\n};\n\nexport default function getControls(fns, options) {\n\tconst { controlBtnProps } = options;\n\tconst keys = typeof fns === \"string\" ? aliasMap[fns] : fns;\n\n\treturn keys.map((k) => {\n\t\tif (fnMap[k]) {\n\t\t\tconst { icon, render, tip, onClick } = fnMap[k];\n\n\t\t\tif (render) {\n\t\t\t\treturn render(options);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Button key={k} {...controlBtnProps} onClick={onClick}>\n\t\t\t\t\t<Icon icon={icon} />\n\t\t\t\t\t{tip && <span className='i-editor-control-tip'>{tip}</span>}\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\t\treturn <Fragment key={k} />;\n\t});\n}\n","import classNames from \"classnames\";\nimport { useImperativeHandle, useRef } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport { IEditor } from \"./type\";\n\nconst Editor = (props: IEditor) => {\n\tconst {\n\t\tref,\n\t\twidth,\n\t\theight = \"10em\",\n\t\tplaceholder,\n\t\tautosize,\n\t\tborder = true,\n\t\trichPaste,\n\t\tcontrols = \"simple\",\n\t\tclassName,\n\t\tstyle,\n\t\tonInput,\n\t\tonPaste,\n\t\tonKeyDown,\n\t\t...restProps\n\t} = props;\n\tconst editorRef = useRef<HTMLDivElement>(null);\n\tconst controlBtnProps: IButton = {\n\t\tsquare: true,\n\t\tflat: true,\n\t\tsize: \"small\",\n\t};\n\n\tconst handlePaste = async (e) => {\n\t\tonPaste?.(e);\n\n\t\tif (richPaste) return;\n\t\te.preventDefault();\n\t\tconst text = e.clipboardData.getData(\"text/plain\");\n\t\texec(\"insertText\", false, text);\n\t};\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tswitch (e.key) {\n\t\t\tcase \"Tab\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertHTML\", false, \"	\");\n\t\t\t\tbreak;\n\t\t\tcase \"Enter\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertLineBreak\");\n\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\teditorRef.current.scrollBy({\n\t\t\t\t\ttop: 20,\n\t\t\t\t\tleft: -1000,\n\t\t\t\t});\n\n\t\t\t\tif (!autosize) return;\n\t\t\t\teditorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tsetValue(html) {\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\tconst safeHtml = xss(html, xssOptions);\n\n\t\t\t\teditorRef.current.innerHTML = safeHtml;\n\t\t\t},\n\t\t\tgetSafeValue() {\n\t\t\t\tconst html = editorRef.current?.innerHTML ?? \"\";\n\n\t\t\t\treturn xss(html, xssOptions);\n\t\t\t},\n\t\t};\n\t});\n\n\tconst handleInput = (e) => {\n\t\tlet html = editorRef.current?.innerHTML ?? \"\";\n\n\t\tif ([\"<br>\", \"\\n\"].includes(html) && editorRef.current) {\n\t\t\thtml = \"\";\n\t\t\teditorRef.current.innerHTML = html;\n\t\t}\n\n\t\tonInput?.(html, e);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-editor\", className, {\n\t\t\t\t\"i-editor-borderless\": !border,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\t[autosize ? \"minHeight\" : \"height\"]: height,\n\t\t\t\twidth,\n\t\t\t}}\n\t\t>\n\t\t\t{controls !== \"none\" && (\n\t\t\t\t<div className='i-editor-controls'>\n\t\t\t\t\t{getControls(controls, {\n\t\t\t\t\t\tcontrolBtnProps,\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tref={editorRef}\n\t\t\t\tclassName='i-editor-content'\n\t\t\t\tdata-placeholder={placeholder}\n\t\t\t\tcontentEditable\n\t\t\t\tonPaste={handlePaste}\n\t\t\t\tonInput={handleInput}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Editor;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex: React.FC<IFlex> = (props: IFlex) => {\n\tconst {\n\t\tas: Component = \"div\" as any,\n\t\talign,\n\t\tjustify,\n\t\tdirection,\n\t\twrap,\n\t\tgap,\n\t\tcolumns,\n\t\tclassName,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\") return `repeat(${columns}, 1fr)`;\n\n\t\treturn columns;\n\t}, [columns]);\n\n\treturn (\n\t\t<Component\n\t\t\t{...restProps}\n\t\t\tstyle={{\n\t\t\t\talignItems: align,\n\t\t\t\tjustifyContent: justify,\n\t\t\t\tgap,\n\t\t\t\tflexDirection: direction,\n\t\t\t\tflexWrap: wrap === true ? \"wrap\" : wrap,\n\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t[columns ? \"grid\" : \"flex\"]: true,\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport default Flex;\n","import { createContext } from \"react\";\nimport { IFormInstance } from \"./useForm\";\n\nconst Context = createContext({} as IFormInstance);\n\nexport default Context;\n","import PubSub from \"pubsub-js\";\nimport { uid } from \"radash\";\nimport { useRef } from \"react\";\nimport { IForm, TRule } from \"./type\";\n\nexport class IFormInstance {\n\treadonly id?: string;\n\tdata: Record<string, any> = {};\n\tcacheData: Record<string, any> = {};\n\trules?: Pick<IForm, \"rules\"> = {};\n\n\tconstructor() {\n\t\tthis.id = uid(8);\n\t\tthis.data = {};\n\t}\n\n\tget(field?: string) {\n\t\treturn field ? this.data[field] : this.data;\n\t}\n\n\tset(field: any, value?: any) {\n\t\tconst id = this.id;\n\t\tif (!this.data) return;\n\n\t\tif (typeof field === \"string\") {\n\t\t\tthis.data[field] = value;\n\t\t\tthis.cacheData[field] = value;\n\t\t\tPubSub.publish(`${id}:set:${field}`, value);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(field).map((name) => {\n\t\t\tthis.data[name] = field[name];\n\t\t\tthis.cacheData[name] = field[name];\n\t\t\tPubSub.publish(`${id}:set:${name}`, field[name]);\n\t\t});\n\t}\n\n\tdelete(field) {\n\t\tdelete this.data[field];\n\t}\n\n\tclear() {\n\t\tif (!this.data) return;\n\t\tthis.cacheData = {};\n\n\t\tObject.keys(this.data).map((name) => {\n\t\t\tPubSub.publish(`${this.id}:set:${name}`, undefined);\n\t\t\tthis.data[name] = undefined;\n\t\t});\n\t}\n\n\tasync validate(field?: string) {\n\t\tconst { id, rules, data } = this;\n\t\tif (!rules) return data;\n\n\t\tif (field) {\n\t\t\tconst o = rules[field];\n\t\t\tconst rule: TRule = {\n\t\t\t\tvalidator: (v) =>\n\t\t\t\t\tArray.isArray(v)\n\t\t\t\t\t\t? v.length > 0\n\t\t\t\t\t\t: ![undefined, null, \"\"].includes(v),\n\t\t\t\tmessage: undefined,\n\t\t\t};\n\n\t\t\tif (typeof o === \"function\") {\n\t\t\t\trule.validator = o;\n\t\t\t} else if (o === true) {\n\t\t\t\trule.message = \"required\";\n\t\t\t} else {\n\t\t\t\tObject.assign(rule, o);\n\t\t\t}\n\n\t\t\tconst isValid = rule.validator?.(data[field], this);\n\n\t\t\tif (!isValid) {\n\t\t\t\tPubSub.publish(`${id}:invalid:${field}`, {\n\t\t\t\t\tmessage: rule.message,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\tmessage: null,\n\t\t\t\tstatus: \"normal\",\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tlet isAllValid = true;\n\n\t\tObject.keys(data).map((name) => {\n\t\t\tconst o = rules[name];\n\t\t\tif (o === undefined) return;\n\n\t\t\tconst rule: TRule = {\n\t\t\t\tvalidator: (v) => (Array.isArray(v) ? v.length > 0 : !!v),\n\t\t\t\tmessage: undefined,\n\t\t\t};\n\n\t\t\tif (typeof o === \"function\") {\n\t\t\t\trule.validator = o;\n\t\t\t} else if (o === true) {\n\t\t\t\trule.message = \"required\";\n\t\t\t} else {\n\t\t\t\tObject.assign(rule, o);\n\t\t\t}\n\n\t\t\tconst isValid = rule.validator?.(data[name], this);\n\n\t\t\tif (!isValid) {\n\t\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\t\tmessage: rule.message,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t});\n\t\t\t\tisAllValid = false;\n\t\t\t} else {\n\t\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\t\tmessage: null,\n\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn isAllValid ? Promise.resolve(data) : false;\n\t}\n}\n\nexport default function useForm(form?: IFormInstance) {\n\tconst formRef = useRef<IFormInstance>(null);\n\n\tif (!formRef.current) {\n\t\tformRef.current = form ?? new IFormInstance();\n\t}\n\n\treturn formRef.current;\n}\n","import classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tcolumns = 1,\n\t\tgap = \"1em\",\n\t\tchildren,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst handleEnter = (e) => {\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(form.data, form);\n\t};\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\")\n\t\t\treturn `minmax(0, 1fr) `.repeat(columns);\n\n\t\treturn columns;\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\treturn (\n\t\t<Context value={form}>\n\t\t\t<form\n\t\t\t\tstyle={{\n\t\t\t\t\t...style,\n\t\t\t\t\twidth,\n\t\t\t\t\tgap,\n\t\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t}}\n\t\t\t\tclassName={classNames(\"i-form\", className)}\n\t\t\t\tonKeyDown={handleEnter}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n","import { useKeydown } from \"@/packages/js/hooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Button from \"../button\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { CompositionModal, IModal, IModalContent } from \"./type\";\n\nfunction DefaultContent(props: IModalContent) {\n\tconst {\n\t\ttitle,\n\t\tfooter,\n\t\thideCloseButton,\n\t\tfooterLeft,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\tonOk,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst handleOk = async () => {\n\t\tconst ret = await onOk?.();\n\n\t\tif (ret) return;\n\n\t\tonClose?.();\n\t};\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign(\n\t\t\t{\n\t\t\t\tchildren: \"确定\",\n\t\t\t\tonClick: handleOk,\n\t\t\t},\n\t\t\tokButtonProps\n\t\t);\n\t\tconst propsCancel = Object.assign(\n\t\t\t{\n\t\t\t\tsecondary: true,\n\t\t\t\tchildren: \"关闭\",\n\t\t\t\tonClick: onClose,\n\t\t\t},\n\t\t\tcancelButtonProps\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{footerLeft}\n\t\t\t\t<Button {...propsOk} />\n\t\t\t\t<Button {...propsCancel} />\n\t\t\t</>\n\t\t);\n\t}, [footer, okButtonProps, cancelButtonProps]);\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t<header className='i-modal-header'>\n\t\t\t\t\t{title && <b>{title}</b>}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\tclassName='i-modal-close'\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<div className='i-modal-content'>{children}</div>\n\n\t\t\t<footer className='i-modal-footer'>{renderFooter}</footer>\n\t\t</>\n\t);\n}\n\nfunction Modal(props: IModal) {\n\tconst {\n\t\tvisible,\n\t\ttitle,\n\t\tfooter,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tclosable = true,\n\t\thideBackdrop,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tdisableEsc,\n\t\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\thideShadow,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tkeepDOM,\n\t\tfooterLeft,\n\t\tonClick,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\tonOk,\n\t\t...restProps\n\t} = props;\n\tconst [show, setShow] = useState(visible);\n\tconst [active, setActive] = useState(false);\n\tconst [bounced, setBounced] = useState(false);\n\tconst toggable = useRef(true);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\t(!keepDOM || !show) && setShow(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tsetActive(true);\n\t\t\tonVisibleChange?.(true);\n\t\t\ttoggable.current = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tif (!closable) {\n\t\t\tsetBounced(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetBounced(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t}, 400);\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tsetTimeout(() => {\n\t\t\t!keepDOM && setShow(false);\n\t\t\ttoggable.current = true;\n\t\t\tonVisibleChange?.(false);\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{ disabled: disableEsc }\n\t);\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tif (!show) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-modal-container\",\n\t\t\t\t{\n\t\t\t\t\t\"i-modal-backdrop\": !hideBackdrop,\n\t\t\t\t\t\"i-modal-customized\": customized,\n\t\t\t\t\t\"i-modal-active\": active,\n\t\t\t\t\tfixed,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\tonClick={handleBackdropClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-modal\", {\n\t\t\t\t\tbounced,\n\t\t\t\t\tshadow: !hideShadow,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tdocument.documentElement.click();\n\t\t\t\t\tonClick?.(e);\n\t\t\t\t}}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{customized && children}\n\n\t\t\t\t{!customized && (\n\t\t\t\t\t<DefaultContent\n\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\thideCloseButton={hideCloseButton}\n\t\t\t\t\t\tfooter={footer}\n\t\t\t\t\t\tokButtonProps={okButtonProps}\n\t\t\t\t\t\tcancelButtonProps={cancelButtonProps}\n\t\t\t\t\t\tchildren={children}\n\t\t\t\t\t\tfooterLeft={footerLeft}\n\t\t\t\t\t\tonOk={onOk}\n\t\t\t\t\t\tonClose={handleHide}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body\n\t);\n}\n\nexport default Modal as CompositionModal;\n","import { useReactive } from \"ahooks\";\nimport PubSub from \"pubsub-js\";\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from \"react\";\nimport Context from \"./context\";\nimport { IField } from \"./type\";\n\nfunction Field(props: IField) {\n\tconst { name, required, children } = props;\n\tconst state = useReactive({\n\t\tvalue: undefined,\n\t\tstatus: \"normal\",\n\t\tmessage: undefined,\n\t\tupdate: 0,\n\t});\n\tconst form = useContext(Context);\n\tconst { id } = form;\n\n\tconst handleChange = (v) => {\n\t\tif (!name) return;\n\n\t\tform.set(name, v);\n\t};\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node) => {\n\t\t\tif (!isValidElement(node)) return null;\n\n\t\t\tconst { onChange } = node.props as any;\n\t\t\tconst { value, status, message } = state;\n\n\t\t\treturn cloneElement(node, {\n\t\t\t\tvalue,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t\trequired,\n\t\t\t\tonChange: (...args) => {\n\t\t\t\t\thandleChange(args[0]);\n\t\t\t\t\tonChange?.(...args);\n\t\t\t\t\tObject.assign(state, {\n\t\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t\t\tmessage: undefined,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t} as any);\n\t\t});\n\t}, [children, state.update]);\n\n\tuseEffect(() => {\n\t\tif (!name) return;\n\n\t\tPubSub.subscribe(`${id}:set:${name}`, (evt, v) => {\n\t\t\tstate.value = v;\n\t\t\tstate.update += 1;\n\t\t});\n\t\tPubSub.subscribe(`${id}:invalid:${name}`, (evt, v) => {\n\t\t\tObject.assign(state, v);\n\t\t\tstate.update += 1;\n\t\t});\n\n\t\tPromise.resolve().then(() => {\n\t\t\tform.set(name, form.cacheData[name] ?? undefined);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${id}:set:${name}`);\n\t\t\tPubSub.unsubscribe(`${id}:invalid:${name}`);\n\t\t\tform.delete(name);\n\t\t};\n\t}, [name, children]);\n\n\tif (!name) return children;\n\n\treturn hijackChildren;\n}\n\nexport default Field;\n","import { useReactive } from \"ahooks\";\nimport { RefObject, useImperativeHandle } from \"react\";\nimport Modal from \"./modal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nconst HookModal = (\n\tprops: IModal & { ref?: RefObject<RefHookModal | null> }\n) => {\n\tconst { ref } = props;\n\tconst state = useReactive<IModal>({});\n\n\tconst mergedProps = Object.assign({}, props, state);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tupdate: (config: IModal = {}) => {\n\t\t\tObject.assign(state, config);\n\t\t},\n\n\t\tclose: () => {\n\t\t\tstate.visible = false;\n\n\t\t\tif (mergedProps.closable) return;\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tstate.visible = true;\n\t\t\t});\n\t\t},\n\t}));\n\n\treturn <Modal {...mergedProps} />;\n};\n\nexport default HookModal;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { CompositionText, IText } from \"./type\";\n\nconst Text = (props: IText) => {\n\tconst {\n\t\tas: Tag = \"span\",\n\t\tsize,\n\t\tweight,\n\t\tdecoration,\n\t\tgradient,\n\t\twave,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\tconst gradients = useMemo(() => {\n\t\tif (!gradient || !Array.isArray(gradient)) return {};\n\n\t\treturn {\n\t\t\tbackgroundImage: `-webkit-linear-gradient(${gradient.join(\",\")})`,\n\t\t\tbackgroundClip: \"text\",\n\t\t};\n\t}, [gradient]);\n\n\treturn (\n\t\t<Tag\n\t\t\tstyle={{\n\t\t\t\tfontSize: size,\n\t\t\t\tfontWeight: weight,\n\t\t\t\ttextDecoration: decoration,\n\t\t\t\t...gradients,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t\"i-text-gradient\": gradient,\n\t\t\t\t\"i-text-gradient-wave\": wave,\n\t\t\t})}\n\t\t>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport default Text as CompositionText;\n","import Text from \"../text\";\nimport { IProgress } from \"./type\";\n\nexport default function Circle(\n\tprops: Pick<IProgress, \"value\" | \"circleSize\" | \"lineWidth\">\n) {\n\tconst { value, circleSize = 40, lineWidth = 8 } = props;\n\n\treturn (\n\t\t<div className='i-progress-circle'>\n\t\t\t<svg width={circleSize} height={circleSize}>\n\t\t\t\t<circle\n\t\t\t\t\tcx={circleSize / 2}\n\t\t\t\t\tcy={circleSize / 2}\n\t\t\t\t\tr={circleSize / 2 - lineWidth / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--background-opacity-2)'\n\t\t\t\t\tstrokeWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t\t<circle\n\t\t\t\t\tcx={circleSize / 2}\n\t\t\t\t\tcy={circleSize / 2}\n\t\t\t\t\tr={circleSize / 2 - lineWidth / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--color-main)'\n\t\t\t\t\tstrokeWidth={lineWidth}\n\t\t\t\t\tstrokeDasharray={100}\n\t\t\t\t\tpathLength={100}\n\t\t\t\t\tclassName='i-progress-circle-path'\n\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tstrokeDashoffset: `calc(100 - ${value})`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</svg>\n\n\t\t\t<span className='i-progress-circle-value'>\n\t\t\t\t<span>{value}</span>\n\t\t\t\t<Text size='.81em' className='color-7'>\n\t\t\t\t\t%\n\t\t\t\t</Text>\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n","import HighLight from \"./highlight\";\nimport Number from \"./number\";\nimport Text from \"./text\";\nimport Time from \"./time\";\n\nText.Number = Number;\nText.Time = Time;\nText.HighLight = HighLight;\n\nexport default Text;\n","import { animate, formatNumber } from \"@p/js/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Text from \"./text\";\nimport { ITextNumber } from \"./type\";\n\nexport default function Number(props: ITextNumber) {\n\tconst {\n\t\tcount,\n\t\tto,\n\t\tdecimal,\n\t\tthousand = \",\",\n\t\tduration = 2400,\n\t\teasing,\n\t\t...restProps\n\t} = props;\n\tconst [n, setN] = useState(count);\n\n\tconst number = useMemo(() => {\n\t\tif (n === undefined) return;\n\n\t\tconst z = n.toFixed(decimal);\n\n\t\tif (!thousand) return z;\n\n\t\treturn formatNumber(n, { precision: decimal, thousand });\n\t}, [n, thousand]);\n\n\tuseEffect(() => {\n\t\tif (count === undefined || to === undefined) return;\n\n\t\tanimate(count, to, duration, (v) => setN(count + v), easing);\n\t}, [to]);\n\n\tuseEffect(() => setN(count), [count]);\n\n\treturn <Text {...restProps}>{number}</Text>;\n}\n","import { formatTime } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextTime } from \"./type\";\n\nexport default function Number(props: ITextTime) {\n\tconst { seconds, zero, units, ...restProps } = props;\n\n\tconst text = useMemo(() => {\n\t\tif (seconds === undefined) return \"\";\n\n\t\treturn formatTime(seconds, {\n\t\t\tzero,\n\t\t\tunits,\n\t\t});\n\t}, [seconds]);\n\n\treturn <Text {...restProps}>{text}</Text>;\n}\n","import { findAll } from \"highlight-words-core\";\nimport { Fragment, useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextHighLight } from \"./type\";\n\nexport default function HighLight(props: ITextHighLight) {\n\tconst {\n\t\tkeyword,\n\t\ttext,\n\t\tescape,\n\t\tcaseSensitive,\n\t\trenderWord = (word) => <mark>{word}</mark>,\n\t\t...restProps\n\t} = props;\n\n\tconst content = useMemo(() => {\n\t\tconst source = text;\n\t\tconst searchWords = typeof keyword === \"string\" ? [keyword] : keyword;\n\n\t\tconst chunks = findAll({\n\t\t\tsearchWords,\n\t\t\ttextToHighlight: text,\n\t\t\tcaseSensitive,\n\t\t\tautoEscape: escape,\n\t\t});\n\n\t\tconst result = chunks.map((chunk, i) => {\n\t\t\tconst { end, highlight, start } = chunk;\n\t\t\tconst word = source.slice(start, end);\n\n\t\t\treturn highlight ? (\n\t\t\t\t<Fragment key={i}>{renderWord(word)}</Fragment>\n\t\t\t) : (\n\t\t\t\tword\n\t\t\t);\n\t\t});\n\n\t\treturn result;\n\t}, [keyword, text, escape, caseSensitive]);\n\n\treturn <Text {...restProps}>{content}</Text>;\n}\n","import classNames from \"classnames\";\nimport { MouseEvent, RefObject } from \"react\";\nimport { IProgress } from \"./type\";\n\nconst Line = (\n\tprops: Pick<\n\t\tIProgress,\n\t\t\"value\" | \"vertical\" | \"lineWidth\" | \"barClass\" | \"renderCursor\"\n\t> & {\n\t\tref: RefObject<HTMLDivElement | null>;\n\t\tdragging: boolean;\n\t\tonMouseDown: (e: MouseEvent) => void;\n\t\tonTouchStart: (e) => void;\n\t}\n) => {\n\tconst {\n\t\tref,\n\t\tvalue,\n\t\tlineWidth,\n\t\tvertical,\n\t\tbarClass,\n\t\tdragging,\n\t\trenderCursor,\n\t\tonMouseDown,\n\t\tonTouchStart,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-progress\", {\n\t\t\t\t\"i-progress-vertical\": vertical,\n\t\t\t})}\n\t\t\tstyle={{ [vertical ? \"width\" : \"height\"]: lineWidth }}\n\t\t\tonMouseDown={onMouseDown}\n\t\t\tonTouchStart={onTouchStart}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-progress-bar\", barClass, {\n\t\t\t\t\t\"no-transition\": dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{ [vertical ? \"height\" : \"width\"]: `${value}%` }}\n\t\t\t>\n\t\t\t\t{renderCursor && (\n\t\t\t\t\t<a className='i-progress-cursor'>\n\t\t\t\t\t\t{renderCursor(value ?? 0)}\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Line;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tlineWidth = 8,\n\t\tcircleSize = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tvertical,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t\tonDraggingChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\tsize: 0,\n\t\tstart: 0,\n\t});\n\n\tconst pageXY = vertical ? \"pageY\" : \"pageX\";\n\tconst rectTL = vertical ? \"top\" : \"left\";\n\tconst rectWH = vertical ? \"height\" : \"width\";\n\n\tconst toFixedValue = useMemo(() => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t}, [state.value, precision]);\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e[pageXY] - rect[rectTL]) * 100) / rect[rectWH];\n\n\t\tObject.assign(state, {\n\t\t\tvalue: vertical ? 100 - value : value,\n\t\t\tsize: rect[rectWH],\n\t\t\tstart: rect[rectTL],\n\t\t\tdragging: true,\n\t\t});\n\t\tonDraggingChange?.(true);\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, size } = state;\n\t\tconst offset = e[pageXY] - start;\n\n\t\tif (offset < 0 || offset > size) return;\n\n\t\tconst value = ((e[pageXY] - start) * 100) / size;\n\t\tstate.value = vertical ? 100 - value : value;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(toFixedValue);\n\t\tstate.dragging = false;\n\t\tonDraggingChange?.(false);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tvertical={vertical}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tcircleSize={circleSize}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n","import { exitFullScreen, fullScreen } from \"@p/js/utils\";\nimport {\n\tFullscreenExitRound,\n\tFullscreenRound,\n\tPauseRound,\n\tPlayArrowRound,\n\tStopRound,\n\tVolumeDownRound,\n\tVolumeOffRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Progress from \"../progress\";\nimport Text from \"../text\";\nimport \"./index.css\";\nimport { IVideo } from \"./type\";\n\nconst Video = (props: IVideo) => {\n\tconst {\n\t\tref,\n\t\tstyle,\n\t\thideControls,\n\t\tautoplay,\n\t\tmuted,\n\t\tvolume = 50,\n\t\theight,\n\t\twidth,\n\t\tuseOriginControls,\n\t\ttimeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tclassName,\n\t\tonFullScreenChange,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tplaying: autoplay,\n\t\tvolume: muted ? 0 : volume,\n\t\tvolumeCache: 0,\n\t\tmuted,\n\t\tcurrent: 0,\n\t\tduration: 0,\n\t\tisFullscreen: false,\n\t\tcontrolHidden: true,\n\t\tdraggingProgress: false,\n\t});\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst timeUpdateListener = (e) => {\n\t\tconst tar = e.target;\n\t\tif (tar.paused || state.draggingProgress) return;\n\n\t\tObject.assign(state, {\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t};\n\n\tconst playChangeListener = (e) => {\n\t\tstate.playing = !e.target.paused;\n\t};\n\n\tconst fsChangeListener = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\n\t};\n\n\tconst volumeChangeListener = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tvolume: tar.volume * 100,\n\t\t\tmuted: tar.volume === 0,\n\t\t});\n\t};\n\n\tconst handlePlay = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.paused ? v.play() : v.pause();\n\t};\n\n\tconst handleReady = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tduration: tar.duration,\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t\ttar.volume = state.volume / 100;\n\t};\n\n\tconst handleMuted = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tif (v.volume > 0) {\n\t\t\tstate.volumeCache = v.volume;\n\t\t\tv.volume = 0;\n\t\t\treturn;\n\t\t}\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\n\t};\n\n\tconst handleStop = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = 0;\n\t\tv.pause();\n\t};\n\n\tconst handleFullscreen = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\n\t\tonFullScreenChange?.(!state.isFullscreen);\n\t};\n\n\tconst handleUpdateTime = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = (state.duration * t) / 100;\n\t};\n\n\tconst handleUpdateVolume = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tconst showControls = !hideControls && !useOriginControls;\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!showControls || !state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst handleDraggingProgress = (dragging) => {\n\t\tstate.draggingProgress = dragging;\n\t};\n\n\tconst handleMouseMove = throttle({ interval: 900 }, setHiddenFalse);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.pause();\n\t\t},\n\t\tstop: handleStop,\n\t\tfullscreen: handleFullscreen,\n\t\tgetVideo: () => videoRef.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\n\t\tv.addEventListener(\"play\", playChangeListener);\n\t\tv.addEventListener(\"pause\", playChangeListener);\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\n\n\t\treturn () => {\n\t\t\tclearHiddenTO();\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\n\t\t};\n\t}, []);\n\n\tconst currentValue = (state.current / state.duration) * 100;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-video\", className)}\n\t\t\tstyle={{ height, width, ...style }}\n\t\t\tonClick={handlePlay}\n\t\t\tonDoubleClick={() => handleFullscreen()}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tonCanPlay={handleReady}\n\t\t\t\t{...restProps}\n\t\t\t\tcontrols={useOriginControls}\n\t\t\t/>\n\n\t\t\t{showControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tonClick={handleStop}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t</Button>\n\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<Progress\n\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\tvalue={currentValue}\n\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\tonDraggingChange={handleDraggingProgress}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className='i-video-control-volume'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tactive={state.volume <= 0}\n\t\t\t\t\t\t\tafter={\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={<VolumeOffRound />}\n\t\t\t\t\t\t\t\t\tstyle={{ padding: \".125em\" }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={handleMuted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\n\t\t\t\t\t\t<div className='i-video-volume'>\n\t\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\t\tstyle={{ height: 100 }}\n\t\t\t\t\t\t\t\tvertical\n\t\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Video;\n","import Icon from \"@p/components/icon\";\nimport Video from \"@p/components/video\";\nimport { FeedOutlined } from \"@ricons/material\";\nimport { TFileType, TPreviewItem } from \"./type\";\n\nexport default function renderFile(props: TPreviewItem) {\n\tconst { name, suffix, type } = props;\n\n\tswitch (type) {\n\t\tcase TFileType.IMAGE:\n\t\t\treturn <img src={props.src} />;\n\t\tcase TFileType.VIDEO:\n\t\t\treturn <Video {...props} />;\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div className='i-preview-unknown'>\n\t\t\t\t\t<Icon icon={<FeedOutlined />} size='3em' />\n\t\t\t\t\t<h5 className='mt-4'>{name || suffix || \"?\"}</h5>\n\t\t\t\t</div>\n\t\t\t);\n\t}\n}\n","import Button from \"@p/components/button\";\nimport Icon from \"@p/components/icon\";\nimport {\n\tAspectRatioRound,\n\tCloseRound,\n\tFileDownloadOutlined,\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tOpenInNewRound,\n\tRotateLeftRound,\n\tRotateRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useMemo, useRef } from \"react\";\nimport { useMouseMove, useMouseUp } from \"../hooks\";\nimport { getFileType, getSuffixByUrl } from \"../utils\";\nimport DefaultRenderFile from \"./renderFile\";\nimport { IPreview, TFileType, TPreviewItem } from \"./type\";\n\nexport default function Content(props: IPreview) {\n\tconst {\n\t\titems = [],\n\t\tinitial = 0,\n\t\trenderFile = DefaultRenderFile,\n\t\tonRotate,\n\t\tonChange,\n\t\tonClose,\n\t\tonZoom,\n\t} = props;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\trotate: 0,\n\t\tscale: 1,\n\t\ttranslate: [0, 0],\n\t\tstart: [0, 0],\n\t\tdragging: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t\tstate.translate = translate.current = [0, 0];\n\t};\n\n\tconst handleRotate = (deg: number) => {\n\t\tstate.rotate += deg;\n\n\t\tonRotate?.(state.rotate);\n\t};\n\n\tconst handleMouseWheel = throttle({ interval: 60 }, (e) => {\n\t\tif (!isImage) return;\n\t\tlet after = state.scale + (e.deltaY < 0 ? 0.05 : -0.05);\n\t\tif (after > 2) after = 2;\n\t\tif (after < 0.25) after = 0.25;\n\n\t\tonZoom?.(after);\n\t\tstate.scale = after;\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!isImage) return;\n\t\te.preventDefault();\n\t\tstate.dragging = true;\n\t\tstate.start = [e.pageX, e.pageY];\n\t};\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current || state.controlHidden) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst throttleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tconst handleMouseMove = (e) => {\n\t\tthrottleMouseMove();\n\t\tif (!state.dragging) return;\n\t\te.preventDefault();\n\n\t\tconst [x, y] = translate.current;\n\t\tconst [ox, oy] = state.start;\n\t\tconst offsetX = e.pageX - ox;\n\t\tconst offsetY = e.pageY - oy;\n\n\t\tstate.translate = [x + offsetX, y + offsetY];\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging) return;\n\t\tstate.dragging = false;\n\t\ttranslate.current = state.translate;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName={classNames(\"i-preview-content\", {\n\t\t\t\t\t\"no-transition\": state.dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate(${state.translate\n\t\t\t\t\t\t.map((n) => `${n}px`)\n\t\t\t\t\t\t.join(\",\")}) rotate(${state.rotate}deg) scale(${\n\t\t\t\t\t\tstate.scale\n\t\t\t\t\t})`,\n\t\t\t\t}}\n\t\t\t\tonWheel={handleMouseWheel}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-preview-controls\", {\n\t\t\t\t\t\"i-preview-controls-hidden\": state.controlHidden,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Button square flat onClick={onClose}>\n\t\t\t\t\t<Icon icon={<CloseRound />} />\n\t\t\t\t</Button>\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<span className='px-8'>\n\t\t\t\t\t\t{state.current + 1} / {files.length}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{state.scale !== 1 && (\n\t\t\t\t\t<Button flat onClick={() => (state.scale = 1)}>\n\t\t\t\t\t\t<Icon icon={<AspectRatioRound />} />\n\t\t\t\t\t\t<span className='mt-2'>\n\t\t\t\t\t\t\t{(state.scale * 100).toFixed(0)}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button square flat href={file.src} target='_blank'>\n\t\t\t\t\t<Icon icon={<OpenInNewRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat href={file.src} download target='_blank'>\n\t\t\t\t\t<Icon icon={<FileDownloadOutlined />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(90)}>\n\t\t\t\t\t<Icon icon={<RotateRightRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(-90)}>\n\t\t\t\t\t<Icon icon={<RotateLeftRound />} />\n\t\t\t\t</Button>\n\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current - 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current + 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","import HookModal from \"@p/components/modal/hookModal\";\nimport { RefHookModal } from \"@p/components/modal/type\";\nimport { useRef } from \"react\";\nimport { renderNode } from \"../utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPreview } from \"./type\";\n\nexport default function usePreview() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst preview = (config: IPreview) => {\n\t\tconst { items, modalProps, onClose, ...restProps } = config;\n\n\t\tconst handleClose = () => {\n\t\t\tonClose?.();\n\t\t\tunMount?.();\n\t\t};\n\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\tclassName='i-preview'\n\t\t\t\tcustomized\n\t\t\t\thideShadow\n\t\t\t\t{...modalProps}\n\t\t\t\tchildren={\n\t\t\t\t\t<Content\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tonClose={() => {\n\t\t\t\t\t\t\tref.current?.update({ visible: false });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tfixed\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn preview;\n}\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TFileType } from \"@p/js/usePreview/type\";\nimport { HideImageTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport Icon from \"../icon\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionImage, IImage } from \"./type\";\n\nconst Image = (props: IImage) => {\n\tconst {\n\t\tsrc,\n\t\tround,\n\t\tsize,\n\t\tinitSize,\n\t\tlazyload,\n\t\tfallback = (\n\t\t\t<Icon icon={<HideImageTwotone />} size='2em' className='color-5' />\n\t\t),\n\t\tfit,\n\t\tstyle,\n\t\tclassName,\n\t\tcover,\n\t\tcoverClass,\n\t\tusePreview: previewable,\n\t\tonLoad,\n\t\tonError,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{ status?: string }>({\n\t\tstatus: \"loading\",\n\t});\n\tconst ref = useRef<HTMLImageElement>(null);\n\tconst wh = fit ? \"100%\" : undefined;\n\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst preview = usePreview();\n\n\tconst handleError = (err) => {\n\t\tonError?.(err);\n\t\tstate.status = \"error\";\n\t};\n\n\tconst handleLoad = (e) => {\n\t\tonLoad?.(e);\n\t\tstate.status = undefined;\n\t};\n\n\tconst handleClick = (e) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tsrc &&\n\t\t\tpreview({\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\ttype: TFileType.IMAGE,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!src) return;\n\n\t\tif (!ref.current?.complete) {\n\t\t\tstate.status = \"loading\";\n\t\t}\n\n\t\tif (!lazyload || !ref.current) return;\n\n\t\tobserve(ref.current, (tar: HTMLElement, visible: boolean) => {\n\t\t\tif (!visible) return;\n\n\t\t\ttar.setAttribute(\"src\", tar.dataset.src || \"\");\n\t\t\tunobserve(tar);\n\t\t});\n\n\t\treturn () => {\n\t\t\tref.current && unobserve(ref.current);\n\t\t};\n\t}, [src]);\n\n\trestProps[lazyload ? \"data-src\" : \"src\"] = src;\n\tconst iSize = state.status === \"loading\" ? initSize : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: size ?? iSize,\n\t\t\t\theight: size ?? iSize,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(\"i-image\", className, {\n\t\t\t\trounded: round,\n\t\t\t\t[`i-image-${state.status}`]: state.status,\n\t\t\t})}\n\t\t>\n\t\t\t{state.status === \"error\" ? (\n\t\t\t\tfallback\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{src && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={{ objectFit: fit, width: wh, height: wh }}\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\t\t\tonError={handleError}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{src && state.status === \"loading\" && <Loading absolute />}\n\n\t\t\t\t\t{cover && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\"i-image-cover\", coverClass)}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cover}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Image as CompositionImage;\n","import classNames from \"classnames\";\nimport { IInputContainer } from \"./type\";\n\nexport default function InputContainer(props: IInputContainer) {\n\tconst {\n\t\tas: As = \"label\",\n\t\tlabel,\n\t\tclassName,\n\t\tlabelInline,\n\t\tstyle,\n\t\tchildren,\n\t\tstatus,\n\t\ttip,\n\t\trequired,\n\t} = props;\n\n\treturn (\n\t\t<As\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{children}\n\n\t\t\t{tip && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={classNames(\"i-input-message\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{tip}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</As>\n\t);\n}\n","import Image from \"./image\";\nimport List from \"./list\";\n\nImage.List = List;\n\nexport default Image;\n","import usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { getFileType, getSuffixByUrl } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Flex from \"../flex\";\nimport Image from \"./image\";\nimport { IImageList } from \"./type\";\n\nexport default function List(props: IImageList) {\n\tconst {\n\t\titems = [],\n\t\tgap = 8,\n\t\tcolumns,\n\t\twrap,\n\t\tdirection,\n\t\tusePreview: previewable,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\tconst preview = usePreview();\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst handleClick = (e, i) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tpreview({\n\t\t\t\titems: files,\n\t\t\t\tinitial: i,\n\t\t\t});\n\t};\n\n\tif (!files.length) return \"\";\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName='i-image-list'\n\t\t\tgap={gap}\n\t\t\tcolumns={columns}\n\t\t\twrap={wrap}\n\t\t\tdirection={direction}\n\t\t>\n\t\t\t{files.map((img, i) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Image\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tsrc={img.src}\n\t\t\t\t\t\tsize={60}\n\t\t\t\t\t\tusePreview={false}\n\t\t\t\t\t\tonClick={(e) => handleClick(e, i)}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Flex>\n\t);\n}\n","import { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { CompositionInput, IInput } from \"./type\";\n\nconst Input = ((props: IInput) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue = \"\",\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tclear,\n\t\thideVisible,\n\t\tborder,\n\t\trequired,\n\t\tonChange,\n\t\tonEnter,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t\tvisible: false,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\te.code === \"Enter\" && onEnter?.(e);\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (type === \"password\" && !hideVisible) {\n\t\t\tObject.assign(state, {\n\t\t\t\tvisible: !state.visible,\n\t\t\t\ttype: !state.visible ? \"text\" : \"password\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst v = \"\";\n\t\tonChange?.(v);\n\t};\n\n\tconst HelperIcon = useMemo(() => {\n\t\tif (type === \"password\") {\n\t\t\treturn state.visible ? <VisibilityRound /> : <VisibilityOffRound />;\n\t\t}\n\n\t\treturn undefined;\n\t}, [state.visible]);\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\ttype: state.type,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: classNames(\"i-input\", `i-input-${type}`),\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\tconst clearable = clear && state.value;\n\tconst showHelper = type === \"password\" && !!state.value;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t\trequired={required}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive={!!clearable || showHelper}\n\t\t\t\t\ticon={HelperIcon}\n\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t/>\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n}) as CompositionInput;\n\nexport default Input;\n","import Input from \"./input\";\nimport Number from \"./number\";\nimport Range from \"./range\";\nimport Textarea from \"./textarea\";\n\nInput.Textarea = Textarea;\nInput.Number = Number;\nInput.Range = Range;\n\nexport default Input;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = (props: ITextarea) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue,\n\t\tinitValue,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tautoSize,\n\t\tborder,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\tconst refTextarea = useRef<HTMLDivElement>(null);\n\n\tconst handleChange = (\n\t\te: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n\t) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\n\t\tconst ta = refTextarea.current?.firstChild as HTMLElement;\n\t\tif (autoSize && ta) {\n\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t}\n\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.code !== \"Enter\") return;\n\n\t\te.stopPropagation();\n\t\tonEnter?.(e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-textarea\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={refTextarea}\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<textarea {...inputProps} />\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Textarea;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = (props: IInputNumber) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tstep = 1,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\tthousand,\n\t\tprecision,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tappend,\n\t\tborder,\n\t\tprepend,\n\t\tmessage,\n\t\ttip,\n\t\thideControl,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\tonInput,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tstate.value = v;\n\t\tonChange?.(+v, e);\n\t};\n\n\tconst handleOperate = (param: number) => {\n\t\tconst value = formatInputValue(state.value) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\tstate.value = getFormatNumber(result);\n\n\t\tonChange?.(result);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-input-number\",\n\t\tonChange: handleChange,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(-step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Number;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound, SyncAltRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, MouseEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputRange } from \"./type\";\n\nconst Range = (props: IInputRange) => {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tappend,\n\t\tprepend,\n\t\tstep = 1,\n\t\tthousand,\n\t\tprecision,\n\t\thideControl,\n\t\tplaceholder,\n\t\tborder,\n\t\tonChange,\n\t\tonBlur,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>, i: number) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\trange[i] = +v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleOperate = (\n\t\te: MouseEvent<Element>,\n\t\tparam: number,\n\t\ti: number\n\t) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\tconst value = formatInputValue(range[i]) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\trange[i] = getFormatNumber(result);\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleSwitch = (e: MouseEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst range = state.value ? state.value : [];\n\t\tconst v = range[0];\n\t\trange[0] = range[1];\n\t\trange[1] = v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tname,\n\t\tclassName: \"i-input i-input-number\",\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[0] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[0]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 0)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\ticon={<SyncAltRound />}\n\t\t\t\t\tstyle={{ margin: 0 }}\n\t\t\t\t\tonClick={handleSwitch}\n\t\t\t\t/>\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[1] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[1]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 1)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Range;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { ReactNode, isValidElement, useEffect, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport \"./index.css\";\nimport type { IMessage, IMessageItem, THeights, TMessageQueue } from \"./type\";\n\nconst AlignMap = {\n\tleft: \"flex-start\",\n\tcenter: \"center\",\n\tright: \"flex-end\",\n};\n\nconst GlobalConfig = {\n\talign: \"center\",\n\toffset: \"12px\",\n\tgap: 12,\n};\n\nconst ItemDefaultConfig = {\n\tduration: 3000,\n\tclosable: true,\n\tactive: false,\n};\n\nconst container = createContainer();\nconst handler: {\n\toneInstance: null | IMessage;\n\tcallout: (item: IMessage) => void;\n\tclose: () => void;\n} = {\n\toneInstance: null,\n\tcallout(item: IMessage) {},\n\tclose() {},\n};\n\nconst queue: TMessageQueue = {\n\tleft: [],\n\tcenter: [],\n\tright: [],\n};\nconst heights: THeights = {\n\tleft: [],\n\tcenter: [],\n\tright: [],\n};\n\ncreateRoot(container).render(<Messages />);\n\nconst MessageItem = function ({\n\tref,\n\tactive,\n\tcontent,\n\ttop,\n\tclassName,\n\tstyle,\n\tonClick,\n}: IMessageItem) {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-message\", className, {\n\t\t\t\t\"i-message-active\": active,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\ttop,\n\t\t\t}}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t{content}\n\t\t</div>\n\t);\n};\n\nfunction Messages() {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<{\n\t\ttops: THeights;\n\t\titems: TMessageQueue;\n\t}>({\n\t\titems: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t\ttops: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t});\n\tconst offsetTop = {\n\t\tleft: 0,\n\t\tcenter: 0,\n\t\tright: 0,\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(handler, {\n\t\t\tcallout: function (item: IMessage) {\n\t\t\t\tconst { align = \"center\", unshift, onShow } = item;\n\t\t\t\tconst size = queue[align][unshift ? \"unshift\" : \"push\"](item);\n\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\titem.close = this.close.bind(item);\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst h = ref.current?.offsetHeight || 0;\n\n\t\t\t\t\tqueue[align][unshift ? 0 : size - 1].active = true;\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\theights[align][unshift ? \"unshift\" : \"push\"](h);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tonShow?.();\n\t\t\t\t}, 12);\n\n\t\t\t\tif (item.duration !== 0) {\n\t\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\t\tthis.close.call(item);\n\t\t\t\t\t}, item.duration);\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: function () {\n\t\t\t\tconst item = this as IMessage;\n\t\t\t\tconst { align = \"center\", onHide } = item;\n\t\t\t\tconst index = queue[align].findIndex((i) => i.id === item.id);\n\t\t\t\tif (index < 0) return;\n\n\t\t\t\tqueue[align][index].active = false;\n\t\t\t\tstate.items[align] = [...queue[align]];\n\n\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\tconst index = queue[align].findIndex(\n\t\t\t\t\t\t(i) => i.id === item.id\n\t\t\t\t\t);\n\n\t\t\t\t\tqueue[align].splice(index, 1);\n\t\t\t\t\theights[align].splice(index, 1);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\titem.timer && clearTimeout(item.timer);\n\t\t\t\t\tonHide?.();\n\t\t\t\t}, 240);\n\t\t\t},\n\t\t});\n\t}, []);\n\n\tconst renderItems = (item, i) => {\n\t\tif (!item) return <></>;\n\n\t\tconst { id, active, content, align = \"center\", className } = item;\n\t\toffsetTop[align] += state.tops[align][i - 1] || 0;\n\t\tconst top = GlobalConfig.gap * i + offsetTop[align];\n\n\t\treturn (\n\t\t\t<MessageItem\n\t\t\t\tkey={id}\n\t\t\t\tref={ref}\n\t\t\t\tactive={active}\n\t\t\t\tcontent={content}\n\t\t\t\ttop={top}\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{ alignSelf: AlignMap[align] }}\n\t\t\t\tonClick={handler.close.bind(item)}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className='i-messages'>\n\t\t\t{state.items.left.map(renderItems)}\n\t\t\t{state.items.center.map(renderItems)}\n\t\t\t{state.items.right.map(renderItems)}\n\t\t</div>\n\t);\n}\n\nexport function setMessageConfig(config: IMessage) {\n\tObject.assign(GlobalConfig, config);\n}\n\nfunction message(config: IMessage | ReactNode) {\n\tif (\n\t\t[\"string\", \"number\"].includes(typeof config) ||\n\t\tisValidElement(config)\n\t) {\n\t\tconfig = { content: config as ReactNode };\n\t}\n\n\tconfig = Object.assign(\n\t\t{ id: uid(7) },\n\t\tItemDefaultConfig,\n\t\tconfig as IMessage\n\t);\n\n\thandler.callout(config as IMessage);\n\n\treturn {\n\t\tinstance: config,\n\t\tclose: handler.close.bind(config),\n\t};\n}\n\nfunction createContainer() {\n\tconst container = document.createElement(\"div\");\n\tcontainer.dataset.id = \"messages\";\n\tdocument.body.append(container);\n\n\treturn container;\n}\n\nmessage.error = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-error\",\n\t});\n};\n\nmessage.success = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-success\",\n\t});\n};\n\nmessage.warning = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-warning\",\n\t});\n};\n\nmessage.one = (config: IMessage) => {\n\tconst o = handler.oneInstance;\n\n\tif (o) {\n\t\tif (o.active && o.duration !== 0) {\n\t\t\tclearTimeout(o.timer);\n\t\t\to.timer = setTimeout(() => {\n\t\t\t\to.close?.();\n\t\t\t}, o.duration);\n\t\t} else {\n\t\t\thandler.callout(o);\n\t\t}\n\t} else {\n\t\tconst { instance } = message(config);\n\t\thandler.oneInstance = instance;\n\t}\n};\n\nexport default message;\n","import Modal from \"./modal\";\nimport useModal from \"./useModal\";\n\nModal.useModal = useModal;\n\nexport default Modal;\n","import { renderNode } from \"@p/js/utils\";\nimport { useRef } from \"react\";\nimport HookModal from \"./hookModal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nexport default function useModal() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst handleOpen = (props: IModal) => {\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\t{...props}\n\t\t\t\tonClose={() => {\n\t\t\t\t\tprops.onClose?.();\n\t\t\t\t\tunMount?.();\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst handleUpdate = (props: IModal) => {\n\t\tif (!ref.current) return;\n\n\t\tconst { update } = ref.current;\n\t\tupdate(props);\n\t};\n\n\tconst handleClose = () => {\n\t\tif (!ref.current) return;\n\n\t\tconst { close } = ref.current;\n\t\tclose();\n\t};\n\n\treturn {\n\t\topen: handleOpen,\n\t\tupdate: handleUpdate,\n\t\tclose: handleClose,\n\t};\n}\n","import classNames from \"classnames\";\nimport { useState } from \"react\";\nimport Loading from \"../loading\";\nimport { IPageItem } from \"./type\";\n\nconst Page = (props: IPageItem) => {\n\tconst { page, active, children, onChange } = props;\n\tconst [loading, setLoading] = useState(false);\n\n\tconst handleClick = async () => {\n\t\tif (active || loading) return;\n\n\t\tsetLoading(true);\n\t\tawait onChange?.(page);\n\t\tsetLoading(false);\n\t};\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-page\", {\n\t\t\t\t\"i-page-active\": active,\n\t\t\t\t\"i-page-loading\": loading,\n\t\t\t\t\"i-page-disabled\": false,\n\t\t\t})}\n\t\t\tdata-page={page}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{loading && <Loading />}\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n\nexport default Page;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tMoreHorizRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Page from \"./page\";\nimport { IPagination } from \"./type\";\n\nconst Pagination = (props: IPagination) => {\n\tconst {\n\t\tpage: defaultPage = 1,\n\t\tsize = 10,\n\t\ttotal = 0,\n\t\tsibling = 2,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} />,\n\t\tsimple,\n\t\tjumper,\n\t\tclassName,\n\t\trenderEllipsis = () => (\n\t\t\t<Icon icon={<MoreHorizRound />} className='color-7' />\n\t\t),\n\t\trenderPage = (i) => i,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst [page, setPage] = useState(defaultPage);\n\tconst [loading, setLoading] = useState(false);\n\n\tconst totalPage = useMemo(() => Math.ceil(total / size), [size, total]);\n\n\tconst [start, end, loop] = useMemo(() => {\n\t\tconst start = Math.max(1, page - sibling);\n\t\tconst end = Math.min(totalPage, page + sibling);\n\n\t\treturn [\n\t\t\tstart,\n\t\t\tend,\n\t\t\tArray.from({ length: end - start + 1 }).map((n, i) => start + i),\n\t\t];\n\t}, [page, totalPage, sibling]);\n\n\tif (totalPage <= page && page === 1) return <></>;\n\n\tconst handlePageChange = async (p?: number) => {\n\t\tif (!onChange || loading) return;\n\t\tsetLoading(true);\n\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\tif (p === undefined) return;\n\t\t\tawait onChange(p);\n\t\t\tsetPage(p);\n\t\t\tsetLoading(false);\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tuseEffect(() => setPage(defaultPage), [defaultPage]);\n\n\treturn (\n\t\t<div className={classNames(\"i-pagination\", className)} {...restProps}>\n\t\t\t{prev && (\n\t\t\t\t<Page page={page - 1 || 1} onChange={handlePageChange}>\n\t\t\t\t\t{prev}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 1 && (\n\t\t\t\t<Page page={1} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(1)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 2 && renderEllipsis()}\n\n\t\t\t{loop.map((p) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Page\n\t\t\t\t\t\tkey={p}\n\t\t\t\t\t\tpage={p}\n\t\t\t\t\t\tactive={p === page}\n\t\t\t\t\t\tonChange={handlePageChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderPage(p)}\n\t\t\t\t\t</Page>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{end < totalPage - 1 && renderEllipsis()}\n\n\t\t\t{end < totalPage && (\n\t\t\t\t<Page page={totalPage} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(totalPage)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{next && (\n\t\t\t\t<Page page={page + 1} onChange={handlePageChange}>\n\t\t\t\t\t{next}\n\t\t\t\t</Page>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Pagination;\n","import classNames from \"classnames\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { ITag } from \"./type\";\n\nconst Tag = (props: ITag) => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\n\t\thoverShowClose,\n\t\tclassName,\n\t\tchildren,\n\t\tonClose,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<span\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tag\",\n\t\t\t\t{\n\t\t\t\t\t\"i-tag-outline\": outline,\n\t\t\t\t\t\"i-tag-clickable\": onClick,\n\t\t\t\t\t[`i-tag-${size}`]: size !== \"normal\",\n\t\t\t\t\tround,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={onClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{dot && <span className={classNames(\"i-tag-dot\", dotClass)}></span>}\n\n\t\t\t{children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName={classNames(\"i-tag-close\", {\n\t\t\t\t\t\t\"i-tag-hover-close\": hoverShowClose,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={onClose}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\nexport default Tag;\n","import { CheckRound, SearchRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { TOption } from \"../../type\";\nimport Icon from \"../icon\";\nimport List from \"../list\";\nimport Tag from \"../tag\";\nimport Empty from \"../utils/empty\";\nimport { ISelectOptions } from \"./type\";\nexport const Options = (props: ISelectOptions) => {\n\tconst {\n\t\tvalue: val,\n\t\toptions,\n\t\tfilter,\n\t\tfilterPlaceholder,\n\t\tmultiple,\n\t\tempty = <Empty />,\n\t\tonSelect,\n\t\tonFilter,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-select-options\", {\n\t\t\t\t\"i-select-options-multiple\": multiple,\n\t\t\t})}\n\t\t>\n\t\t\t{filter && multiple && (\n\t\t\t\t<div className='i-select-filter'>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<SearchRound />}\n\t\t\t\t\t\tclassName='color-8 ml-8 my-auto'\n\t\t\t\t\t\tsize='1.2em'\n\t\t\t\t\t/>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype='text'\n\t\t\t\t\t\tclassName='i-input'\n\t\t\t\t\t\tplaceholder={filterPlaceholder}\n\t\t\t\t\t\tonChange={onFilter}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{options.length === 0 && empty}\n\n\t\t\t{options.map((option, i) => {\n\t\t\t\tconst { label, value, disabled } = option;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? val?.includes(value)\n\t\t\t\t\t: val === value;\n\n\t\t\t\treturn (\n\t\t\t\t\t<List.Item\n\t\t\t\t\t\tkey={(value as string) || i}\n\t\t\t\t\t\tactive={isActive}\n\t\t\t\t\t\ttype='option'\n\t\t\t\t\t\tonClick={() => onSelect?.(value, option)}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{multiple && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={<CheckRound />}\n\t\t\t\t\t\t\t\tclassName='i-select-option-check'\n\t\t\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</List.Item>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport const activeOptions = (\n\toptions: TOption[] = [],\n\tvalue: any[] = [],\n\tmax = 3\n) => {\n\tconst total = options.flatMap((opt) =>\n\t\tvalue.includes(opt.value) ? [opt] : []\n\t);\n\n\tif (max >= total.length) return total;\n\n\tconst rest = total.length - max;\n\tconst after = total.slice(0, max);\n\tafter.push(rest as any);\n\n\treturn after;\n};\n\nexport const displayValue = (config) => {\n\tconst { options, value, maxDisplay, multiple, onSelect } = config;\n\n\tif (multiple) {\n\t\treturn activeOptions(options, value, maxDisplay).map((opt, i) => {\n\t\t\tif (typeof opt === \"number\") return <Tag key={i}>+{opt}</Tag>;\n\n\t\t\tconst { label, value } = opt;\n\n\t\t\treturn (\n\t\t\t\t<Tag\n\t\t\t\t\tkey={value as string}\n\t\t\t\t\thoverShowClose\n\t\t\t\t\tonClose={(e) => {\n\t\t\t\t\t\te?.stopPropagation();\n\t\t\t\t\t\tonSelect?.(value, opt);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Tag>\n\t\t\t);\n\t\t});\n\t}\n\n\treturn options.find((opt: TOption) => opt.value === value)?.label;\n};\n","import { UnfoldMoreRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport { ChangeEvent, useEffect, useMemo, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport { TOption } from \"../../type\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { Options, displayValue } from \"./options\";\nimport { ISelect } from \"./type\";\n\nconst Select = (props: ISelect) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tname,\n\t\tlabel,\n\t\tvalue = \"\",\n\t\tplaceholder,\n\t\toptions = [],\n\t\tmultiple,\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tstyle,\n\t\tclassName,\n\t\tmessage,\n\t\tstatus = \"normal\",\n\t\thideClear,\n\t\thideArrow,\n\t\tmaxDisplay,\n\t\tborder,\n\t\tfilter,\n\t\ttip,\n\t\tfilterPlaceholder = \"...\",\n\t\tpopupProps,\n\t\tonSelect,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tinputValue: \"\",\n\t\tfilterValue: \"\",\n\t\tvalue,\n\t\tloading: false,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst filterOptions = useMemo(() => {\n\t\tconst { filterValue: fv } = state;\n\t\tif (!fv || !filter) return formattedOptions;\n\n\t\tconst filterFn =\n\t\t\ttypeof filter === \"function\"\n\t\t\t\t? filter\n\t\t\t\t: (opt) => opt.value.includes(fv) || opt.label.includes(fv);\n\n\t\treturn formattedOptions.filter(filterFn);\n\t}, [formattedOptions, filter, state.filterValue]);\n\n\tconst changeValue = (v: any) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSelect = (value: any, option?: TOption) => {\n\t\tonSelect?.(value, option);\n\n\t\tif (multiple) {\n\t\t\tconst values = [...(state.value as any[])];\n\t\t\tconst i = values.findIndex((v) => v === value);\n\n\t\t\ti > -1 ? values.splice(i, 1) : values.push(value);\n\t\t\tchangeValue(values as any);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tchangeValue(value);\n\t};\n\n\tconst handleVisibleChange = (visible: boolean) => {\n\t\tsetActive(visible);\n\n\t\tif (!filter) return;\n\n\t\tstate.filterValue = \"\";\n\t};\n\n\tconst handleHelperClick = (e) => {\n\t\te.stopPropagation();\n\t\tsetActive(true);\n\t\tif (!active) return;\n\n\t\tchangeValue(multiple ? [] : \"\");\n\t};\n\n\tconst handleFilterChange = debounce(\n\t\t{ delay: 400 },\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst v = e.target.value;\n\t\t\tstate.filterValue = v;\n\t\t}\n\t);\n\n\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tstate.filterValue = e.target.value;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst hasValue = multiple\n\t\t? (state.value as any[]).length > 0\n\t\t: !!state.value;\n\tconst clearable = !hideClear && active && hasValue;\n\tconst text = message ?? tip;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t<Popup\n\t\t\t\tposition='bottom'\n\t\t\t\tarrow={false}\n\t\t\t\tfitSize\n\t\t\t\t{...popupProps}\n\t\t\t\tvisible={active}\n\t\t\t\ttrigger='none'\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t\tcontent={\n\t\t\t\t\t<Options\n\t\t\t\t\t\toptions={filterOptions}\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tfilter={!!filter}\n\t\t\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonFilter={handleFilterChange}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t\t\t\"i-input-focus\": active,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={() => setActive(true)}\n\t\t\t\t>\n\t\t\t\t\t{prepend}\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\ttype='hidden'\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{multiple ? (\n\t\t\t\t\t\thasValue ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-input i-select\", {\n\t\t\t\t\t\t\t\t\t\"i-select-multiple\": multiple,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{displayValue({\n\t\t\t\t\t\t\t\t\toptions: formattedOptions,\n\t\t\t\t\t\t\t\t\tvalue: state.value,\n\t\t\t\t\t\t\t\t\tmultiple,\n\t\t\t\t\t\t\t\t\tmaxDisplay,\n\t\t\t\t\t\t\t\t\tonSelect: handleSelect,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\n\t\t\t\t\t{!multiple && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={active ? state.filterValue : state.value}\n\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\tplaceholder={state.value || placeholder}\n\t\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\t\treadOnly={!filter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideArrow}\n\t\t\t\t\t\ticon={clearable ? undefined : <UnfoldMoreRound />}\n\t\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{append}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\n\t\t\t{text && <span className='i-input-message'>{text}</span>}\n\t\t</label>\n\t);\n};\n\nexport default Select;\n","import { CheckRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Button from \"../../button\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Select from \"../../select\";\n\nexport const ColorMethods = {\n\tHEX: \"toHexString\",\n\tRGB: \"toRgbString\",\n\tHSB: \"toHsbString\",\n};\n\nexport default function Footer(props) {\n\tconst { value, type, onTypeChange, onChange, onOk } = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t});\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tstate.type = t;\n\t\tonTypeChange(t);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t\tstate.type = type;\n\t}, [value, type]);\n\n\treturn (\n\t\t<div className='i-colorpicker-footer'>\n\t\t\t<Select\n\t\t\t\treadOnly\n\t\t\t\thideClear\n\t\t\t\thideArrow\n\t\t\t\tstyle={{ width: \"5.6em\" }}\n\t\t\t\toptions={[\"RGB\", \"HEX\", \"HSB\"]}\n\t\t\t\tvalue={state.type}\n\t\t\t\tonChange={handleTypeChange}\n\t\t\t/>\n\t\t\t<Input\n\t\t\t\tplaceholder='color'\n\t\t\t\tvalue={state.value}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\t\t\t<Button square onClick={onOk}>\n\t\t\t\t<Icon icon={<CheckRound />} />\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Handle = (props) => {\n\tconst { ref, color, handle, placeholder, className, ...restProps } = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-colorpicker-handle\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{handle !== \"text\" && (\n\t\t\t\t<i\n\t\t\t\t\tclassName='i-colorpicker-square'\n\t\t\t\t\tstyle={{ background: color }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{handle !== \"square\" && (\n\t\t\t\t<span className='i-colorpicker-text' style={{ color }}>\n\t\t\t\t\t{color ?? placeholder}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Handle;\n","import ColorsPanel from \"@rc-component/color-picker\";\nimport \"@rc-component/color-picker/assets/index.css\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Popup from \"../../popup\";\nimport { IColorPicker } from \"../type\";\nimport Footer, { ColorMethods } from \"./footer\";\nimport Handle from \"./handle\";\nimport \"./index.css\";\n\nexport default function ColorPicker(props: IColorPicker) {\n\tconst {\n\t\tvalue,\n\t\ttype = \"HEX\",\n\t\tdisabledAlpha,\n\t\tchildren,\n\t\tusePanel,\n\t\thandle = \"both\",\n\t\tplaceholder = \"Colors\",\n\t\tpopupProps,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttype,\n\t\tvalue,\n\t\tsyncValue: value,\n\t\tvisible: popupProps?.visible,\n\t});\n\n\tconst handleChange = (target) => {\n\t\tstate.syncValue = target;\n\t};\n\n\tconst handleComplete = (target) => {\n\t\tconst method = ColorMethods[state.type];\n\n\t\tif (target.a !== 1) {\n\t\t\ttarget.a = parseFloat(target.a.toFixed(3));\n\t\t}\n\n\t\tstate.value = target[method]?.();\n\t};\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\tpopupProps?.onVisibleChange?.(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tconst method = ColorMethods[t];\n\n\t\tstate.type = t;\n\t\tstate.value = state.syncValue[method]?.();\n\t};\n\n\tconst handleValueChange = (v) => {\n\t\tstate.value = v;\n\t\tstate.syncValue = v;\n\t};\n\n\tconst handleOk = () => {\n\t\tonChange?.(state.value);\n\t\tstate.visible = false;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.syncValue = value;\n\t\tstate.value = value;\n\t}, [value]);\n\n\tif (usePanel) {\n\t\treturn <ColorsPanel {...props} />;\n\t}\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\ttouchable\n\t\t\tposition='bottom'\n\t\t\t{...popupProps}\n\t\t\tvisible={state.visible}\n\t\t\tcontent={\n\t\t\t\t<ColorsPanel\n\t\t\t\t\tvalue={state.syncValue}\n\t\t\t\t\tdisabledAlpha={disabledAlpha}\n\t\t\t\t\tpanelRender={(panel) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{panel}\n\t\t\t\t\t\t\t\t<Footer\n\t\t\t\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t\t\t\ttype={state.type}\n\t\t\t\t\t\t\t\t\tonTypeChange={handleTypeChange}\n\t\t\t\t\t\t\t\t\tonChange={handleValueChange}\n\t\t\t\t\t\t\t\t\tonOk={handleOk}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonChangeComplete={handleComplete}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children ?? (\n\t\t\t\t<Handle\n\t\t\t\t\tcolor={value}\n\t\t\t\t\thandle={handle}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Popup>\n\t);\n}\n","import classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { ReactNode, useMemo } from \"react\";\nimport { IBaseDates } from \"../type\";\n\nconst Dates = (\n\tprops: IBaseDates & {\n\t\tmonth: any;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tmonth,\n\t\tweeks = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\trenderDate = (date: Dayjs) => date.date(),\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\tconst today = dayjs();\n\n\tconst dates = useMemo(() => {\n\t\tconst dates: Dayjs[] = [];\n\n\t\tconst lastDateOfLastMonth = month.add(-1, \"month\").endOf(\"month\");\n\t\tlet { $W, $D } = lastDateOfLastMonth;\n\n\t\tif ($W !== 0) {\n\t\t\tconst lastMonthDates = Array.from({ length: $W }).map(\n\t\t\t\t(whatever, i) => lastDateOfLastMonth.add(i + 1 - $W, \"day\")\n\t\t\t);\n\t\t\tdates.push(...lastMonthDates);\n\t\t}\n\n\t\tconst lastDate = month.endOf(\"month\");\n\t\t$D = lastDate.$D;\n\t\t$W = lastDate.$W;\n\t\tdates.push(\n\t\t\t...Array.from({ length: $D }).map((whatever, i) =>\n\t\t\t\tlastDate.add(i + 1 - $D, \"day\")\n\t\t\t)\n\t\t);\n\n\t\tif ($W !== 0) {\n\t\t\tdates.push(\n\t\t\t\t...Array.from({ length: 7 - $W }).map((whatever, i) =>\n\t\t\t\t\tlastDate.add(i + 1, \"day\")\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn dates;\n\t}, [month]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\tif (disabledDate?.(date)) return;\n\n\t\tonDateClick?.(date);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className='i-datepicker-weeks'>\n\t\t\t\t{weeks.map((week: ReactNode, i: number) => (\n\t\t\t\t\t<span key={i} className='i-datepicker-week'>\n\t\t\t\t\t\t{week}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className='i-datepicker-dates'>\n\t\t\t\t{dates.map((date, i: number) => {\n\t\t\t\t\tconst active = date.isSame(value, \"day\");\n\t\t\t\t\tconst isSameMonth = date.isSame(month, \"month\");\n\t\t\t\t\tconst isToday = date.isSame(today, \"day\");\n\t\t\t\t\tconst disabled = disabledDate?.(date);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-item\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\": active,\n\t\t\t\t\t\t\t\t\"i-datepicker-same-month\": isSameMonth,\n\t\t\t\t\t\t\t\t\"i-datepicker-today\": isToday,\n\t\t\t\t\t\t\t\t\"i-datepicker-disabled\": disabled,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() => handleDateClick(date)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderDate(date)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default Dates;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { throttle } from \"radash\";\nimport { ReactNode, useEffect, useRef } from \"react\";\nimport Icon from \"../../icon\";\nimport Helpericon from \"../../utils/helpericon\";\nimport { IBaseDates } from \"../type\";\nimport Dates from \"./dates\";\n\nconst MONTHS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\nconst YearMonth = (\n\tprops: IBaseDates & {\n\t\tonClick?: () => void;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tunitMonth = \"月\",\n\t\tunitYear = \"年\",\n\t\trenderYear,\n\t\trenderMonth,\n\t\tonClick,\n\t} = props;\n\n\treturn (\n\t\t<a className='i-datepicker-action' data-ripple onClick={onClick}>\n\t\t\t<span>{renderYear?.(value.year())}</span>\n\t\t\t{unitYear}\n\t\t\t<span>{renderMonth?.(value.month() + 1)}</span>\n\t\t\t{unitMonth}\n\t\t</a>\n\t);\n};\n\nconst Panel = (props: IBaseDates) => {\n\tconst {\n\t\tvalue,\n\t\tunitYear,\n\t\tunitMonth,\n\t\trenderDate,\n\t\trenderMonth = (m: ReactNode) => m,\n\t\trenderYear = (y: ReactNode) => y,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttoday: value,\n\t\tmonth: value || dayjs(),\n\t\tselectedYear: dayjs(),\n\t\tyears: [] as number[],\n\t\tselectable: false,\n\t});\n\n\tconst $years = useRef<HTMLDivElement>(null);\n\n\tconst handleOperateMonth = (next: boolean) => {\n\t\tstate.month = state.month[next ? \"add\" : \"subtract\"](1, \"month\");\n\t};\n\n\tconst handleChangeDate = (date: Dayjs) => {\n\t\tif (date.isSame(state.today, \"day\")) return;\n\n\t\tif (!date.isSame(state.month, \"month\")) {\n\t\t\tstate.month = date;\n\t\t}\n\n\t\tstate.today = date;\n\t\tonDateClick?.(date);\n\t};\n\n\tconst handleChangeMonth = (month: number) => {\n\t\tstate.month = state.month\n\t\t\t.year(state.selectedYear.year())\n\t\t\t.month(month - 1);\n\t\tstate.selectable = false;\n\t};\n\n\tconst getMoreYears = throttle({ interval: 100 }, (e) => {\n\t\tconst isUp = e.deltaY < 0;\n\n\t\tstate.years = state.years.map((y) => (y += isUp ? -1 : 1));\n\t});\n\n\tuseEffect(() => {\n\t\tif (!state.selectable) return;\n\n\t\tstate.selectedYear = state.month;\n\t\tconst y = state.selectedYear.year();\n\t\tconst years = Array.from({ length: 7 }).map((_, i) => y - 3 + i);\n\n\t\tstate.years = [...years];\n\t}, [state.selectable]);\n\n\tuseEffect(() => {\n\t\tstate.today = value;\n\t\tstate.month = value || dayjs();\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-datepicker'>\n\t\t\t<div className='i-datepicker-units'>\n\t\t\t\t<YearMonth\n\t\t\t\t\tvalue={state.month}\n\t\t\t\t\tunitYear={unitYear}\n\t\t\t\t\tunitMonth={unitMonth}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tonClick={() => (state.selectable = true)}\n\t\t\t\t/>\n\t\t\t\t<a\n\t\t\t\t\tclassName='ml-auto i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(false)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t</a>\n\t\t\t\t<a\n\t\t\t\t\tclassName='i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(true)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t</a>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-datepicker-ym\", {\n\t\t\t\t\t\"i-datepicker-active\": state.selectable,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName='i-datepicker-close'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tstate.selectable = false;\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tref={$years}\n\t\t\t\t\tclassName='i-datepicker-years'\n\t\t\t\t\tonWheel={getMoreYears}\n\t\t\t\t>\n\t\t\t\t\t{state.years.map((y) => (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tkey={y}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-year\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\ty === state.selectedYear.year(),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t(state.selectedYear =\n\t\t\t\t\t\t\t\t\tstate.selectedYear.year(y))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderYear(y)}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t<div className='i-datepicker-months'>\n\t\t\t\t\t{MONTHS.map((m) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={m}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-month\", {\n\t\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\t\tm === state.month.month() + 1,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => handleChangeMonth(m)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderMonth(m)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dates\n\t\t\t\tvalue={state.today}\n\t\t\t\tmonth={state.month}\n\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\tonDateClick={handleChangeDate}\n\t\t\t\trenderDate={renderDate}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Panel;\n","import { CalendarMonthTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { IDatePicker } from \"../type\";\nimport \"./index.css\";\nimport Panel from \"./panel\";\n\ndayjs.extend(customParseFormat);\n\nconst FORMATTYPES = [\"YYYY-MM-DD\", \"YYYY-M-D\", \"YYYY/MM/DD\", \"YYYY/M/D\"];\nconst FORMAT = \"YYYY-MM-DD\";\n\nconst Datepicker = (props: IDatePicker) => {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tweeks,\n\t\tformat = FORMAT,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderDate,\n\t\trenderMonth,\n\t\trenderYear,\n\t\tpopupProps,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t\tonChange,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst dayJsValue = useMemo(() => {\n\t\tif (!state.value) return null;\n\n\t\tconst date = dayjs(state.value as string, format, true);\n\n\t\tif (date.isValid()) return date;\n\n\t\treturn null;\n\t}, [state.value]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\thandleChange(date.format(format));\n\t};\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSetDate = () => {\n\t\tif (!state.value) return;\n\n\t\tconst date = dayjs(state.value as string, FORMATTYPES, true);\n\n\t\tif (date.isValid()) {\n\t\t\thandleChange(date.format(format));\n\t\t\treturn;\n\t\t}\n\n\t\thandleChange(\"\");\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleSetDate();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\twatchResize\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={dayJsValue}\n\t\t\t\t\tweeks={weeks}\n\t\t\t\t\trenderDate={renderDate}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\t\tonDateClick={handleDateClick}\n\t\t\t\t/>\n\t\t\t}\n\t\t\t{...popupProps}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<CalendarMonthTwotone />}\n\t\t\t\t\t\tclassName='i-datepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonEnter={handleSetDate}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n};\n\nexport default Datepicker;\n","import classNames from \"classnames\";\n\nexport default function Items(props) {\n\tconst { items = [], active, renderItem, unit, onClick } = props;\n\n\treturn items.map((n) => {\n\t\tconst isActive = n === active;\n\n\t\treturn (\n\t\t\t<a\n\t\t\t\tkey={n}\n\t\t\t\tclassName={classNames(\"i-timepicker-item\", {\n\t\t\t\t\t\"i-timepicker-item-active\": isActive,\n\t\t\t\t})}\n\t\t\t\tonClick={() => onClick(n)}\n\t\t\t>\n\t\t\t\t{renderItem?.(n, isActive, unit) ?? (n < 10 ? `0${n}` : n)}\n\t\t\t</a>\n\t\t);\n\t});\n}\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useMemo } from \"react\";\nimport \"./index.css\";\nimport Items from \"./item\";\n\nconst UnitMaps = {\n\th: \"hour\",\n\thh: \"hour\",\n\tm: \"minute\",\n\tmm: \"minute\",\n\ts: \"second\",\n\tss: \"second\",\n};\n\nexport default function Panel(props) {\n\tconst {\n\t\tvalue,\n\t\tstepH = 1,\n\t\tstepM = 1,\n\t\tstepS = 1,\n\t\tformat,\n\t\tperiods,\n\t\trenderItem,\n\t\tonChange,\n\t\tonFallback,\n\t} = props;\n\tconst state = useReactive<any>({\n\t\tperiod: undefined,\n\t\thour: undefined,\n\t\tminute: undefined,\n\t\tsecond: undefined,\n\t});\n\n\tconst [hours, minutes, seconds] = useMemo(() => {\n\t\tconst hasH = format.includes(\"h\");\n\t\tconst hasM = format.includes(\"m\");\n\t\tconst hasS = format.includes(\"s\");\n\t\tconst hours = hasH\n\t\t\t? Array.from(\n\t\t\t\t\t{ length: (periods ? 12 : 24) / stepH },\n\t\t\t\t\t(_, i) => i * stepH\n\t\t\t )\n\t\t\t: [];\n\t\tconst minutes = hasM\n\t\t\t? Array.from({ length: 60 / stepM }, (_, i) => i * stepM)\n\t\t\t: [];\n\t\tconst seconds = hasS\n\t\t\t? Array.from({ length: 60 / stepS }, (_, i) => i * stepS)\n\t\t\t: [];\n\n\t\treturn [hours, minutes, seconds];\n\t}, [stepH, stepM, stepS, format, periods]);\n\n\tconst updateValue = () => {\n\t\tconst reg = /(hh|h){1}|(mm|m){1}|(ss|s){1}/gi;\n\t\tlet result = format.replace(reg, (pattern) => {\n\t\t\tconst p = pattern.toLowerCase();\n\t\t\tconst u = UnitMaps[p];\n\t\t\tconst n = state[u] ?? 0;\n\n\t\t\treturn p.length > 1 && n < 10 ? `0${n ?? 0}` : n ?? 0;\n\t\t});\n\n\t\tif (periods && hours.length > 0) {\n\t\t\tresult = `${state.period ?? periods[0]} ${result}`;\n\t\t}\n\n\t\tonChange(result);\n\t};\n\n\tconst handleSetTime = (v, unit) => {\n\t\tstate[unit] = v;\n\t\tupdateValue();\n\t};\n\n\tuseEffect(() => {\n\t\tlet time = value ?? \"\";\n\n\t\tif (periods && hours.length > 0 && value) {\n\t\t\tconst [p, t] = value.split(\" \");\n\t\t\ttime = t ?? \"\";\n\t\t\tstate.period = periods.includes(p) ? p : undefined;\n\t\t}\n\n\t\tconst nums = time.match(/\\d+/g) ?? [];\n\n\t\tif (!nums.length) {\n\t\t\tonFallback(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet i = 0;\n\t\tconst r = format.replace(/(hh|h)+|(mm|m)+|(ss|s)+/gi, (p) => {\n\t\t\tconst n = nums[i++] ?? 0;\n\t\t\tlet o = p;\n\n\t\t\tif (UnitMaps[p] === \"hour\") {\n\t\t\t\to = Math.min(periods ? 11 : 23, n);\n\t\t\t}\n\n\t\t\to = Math.min(59, n);\n\n\t\t\tstate[UnitMaps[p]] = o;\n\t\t\treturn p.length > 1 && o < 10 ? `0${o}` : o;\n\t\t});\n\n\t\tonFallback(r);\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-timepicker'>\n\t\t\t{hours.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{periods && (\n\t\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\t\titems={periods}\n\t\t\t\t\t\t\t\tactive={state.period}\n\t\t\t\t\t\t\t\tonClick={(p) => handleSetTime(p, \"period\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\titems={hours}\n\t\t\t\t\t\t\tactive={state.hour}\n\t\t\t\t\t\t\tunit='hour'\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\tonClick={(h) => handleSetTime(h, \"hour\")}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{minutes.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={minutes}\n\t\t\t\t\t\tactive={state.minute}\n\t\t\t\t\t\tunit='minute'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(m) => handleSetTime(m, \"minute\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{seconds.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={seconds}\n\t\t\t\t\t\tactive={state.second}\n\t\t\t\t\t\tunit='second'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(s) => handleSetTime(s, \"second\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { AccessTimeRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { ITimePicker } from \"../type\";\nimport Panel from \"./panel\";\n\nconst FORMAT = \"hh:mm:ss\";\n\nexport default function TimePicker(props: ITimePicker) {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tformat = FORMAT,\n\t\tperiods,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderItem,\n\t\tonChange,\n\t\tonBlur,\n\t\tpopupProps,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\tsafeValue: undefined,\n\t});\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t};\n\n\tconst handleFallback = (v) => {\n\t\tstate.safeValue = v;\n\t};\n\n\tconst handleValidTime = () => {\n\t\tif (!state.value) return;\n\n\t\tstate.value = state.safeValue;\n\t\thandleChange(state.safeValue);\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleValidTime();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\twatchResize\n\t\t\t{...popupProps}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tformat={format}\n\t\t\t\t\tperiods={periods}\n\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonFallback={handleFallback}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<AccessTimeRound />}\n\t\t\t\t\t\tclassName='i-timepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n}\n","import { InfoOutlined } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { MouseEvent } from \"react\";\nimport Button from \"../button\";\nimport { IButton } from \"../button/type\";\nimport Flex from \"../flex\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport { IPopconfirm } from \"./type\";\n\nconst defaultOk = {\n\tchildren: \"确定\",\n};\n\nconst defaultCancel = {\n\tchildren: \"取消\",\n\tsecondary: true,\n};\n\nconst Popconfirm = (props: IPopconfirm) => {\n\tconst {\n\t\ttrigger = \"click\",\n\t\tvisible,\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' />,\n\t\tcontent,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\talign = \"end\",\n\t\tposition = \"top\",\n\t\toffset = 12,\n\t\textra,\n\t\tonOk,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tloading: false,\n\t\tvisible,\n\t});\n\n\tconst ok: IButton = okButtonProps\n\t\t? Object.assign({}, defaultOk, okButtonProps)\n\t\t: defaultOk;\n\tconst cancel: IButton = cancelButtonProps\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\n\t\t: defaultCancel;\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\trestProps.onVisibleChange?.(v);\n\t};\n\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\n\t\tstate.loading = true;\n\t\tok.onClick?.(e);\n\n\t\tonOk?.()\n\t\t\t?.then(() => {\n\t\t\t\tstate.visible = false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tstate.loading = false;\n\t\t\t});\n\t};\n\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\n\t\tcancel.onClick?.(e);\n\t\tawait onClose?.();\n\t\tstate.visible = false;\n\t};\n\n\tconst popconfirmContent = (\n\t\t<div className='i-popconfirm'>\n\t\t\t<Flex gap={12}>\n\t\t\t\t{icon}\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\n\t\t\t</Flex>\n\n\t\t\t<Flex\n\t\t\t\tgap={12}\n\t\t\t\tjustify='flex-end'\n\t\t\t\tclassName='mt-8 i-popconfirm-footer'\n\t\t\t>\n\t\t\t\t{cancelButtonProps !== null && (\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\n\t\t\t\t)}\n\t\t\t\t{extra}\n\t\t\t\t{okButtonProps !== null && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t{...ok}\n\t\t\t\t\t\tonClick={handleOk}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<Popup\n\t\t\tcontent={popconfirmContent}\n\t\t\t{...restProps}\n\t\t\ttrigger={trigger}\n\t\t\tvisible={state.visible}\n\t\t\talign={align}\n\t\t\toffset={offset}\n\t\t\tposition={position}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nexport default Popconfirm;\n","import classNames from \"classnames\";\nimport { ChangeEvent } from \"react\";\nimport { IRadioItem } from \"./type\";\n\nexport default function RadioItem(props: IRadioItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tname,\n\t\tvalue,\n\t\tchecked,\n\t\tdisabled,\n\t\tchildren,\n\t\tonChange,\n\t} = props;\n\n\tconst handleChange = (e: ChangeEvent) => {\n\t\tonChange?.(value, e);\n\t};\n\n\treturn (\n\t\t<label className={classNames(\"i-radio-item\", { disabled })}>\n\t\t\t<input\n\t\t\t\ttype='radio'\n\t\t\t\tname={name}\n\t\t\t\tchecked={checked}\n\t\t\t\tclassName={classNames(\"i-radio-input\", `i-radio-${type}`)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-radio-text'>{children}</span>\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tstate.value = value;\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => (\n\t\t\t\t\t<RadioItem\n\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\tchecked={state.value === option.value}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</RadioItem>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n","import \"./index.css\";\n\nexport default function Divider() {\n\treturn <i className='i-step-divider' />;\n}\n","import { CheckRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Divider from \"./divider\";\nimport { IStepItem } from \"./type\";\n\nconst STATUS = [\"finished\", \"active\", \"pending\"];\n\nfunction defaultRenderIcon(i: number, status: string) {\n\treturn (\n\t\t<span className='i-step-item-index'>\n\t\t\t{status === \"finished\" ? (\n\t\t\t\t<CheckRound style={{ width: \"1em\", height: \"1.5em\" }} />\n\t\t\t) : (\n\t\t\t\ti + 1\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction Item(props: IStepItem) {\n\tconst {\n\t\tindex = 0,\n\t\tactive = 0,\n\t\trenderIcon = defaultRenderIcon,\n\t\ttitle,\n\t\tvertical,\n\t\tline = <Divider />,\n\t\tasList,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\tconst status = STATUS[index === active ? 1 : index < active ? 0 : 2];\n\n\tconst handleClick = () => {\n\t\tonClick?.(index);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-step-item-${status}`]: !asList,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{vertical ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-left'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='i-step-item-right'>\n\t\t\t\t\t\t<div className='i-step-item-title'>{title}</div>\n\t\t\t\t\t\t{children && (\n\t\t\t\t\t\t\t<div className='i-step-item-content'>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-title'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\n\t\t\t\t\t\t<span>{title}</span>\n\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t{children && (\n\t\t\t\t\t\t<div className='i-step-item-content'>{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, ReactNode, useMemo } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IStep } from \"./type\";\n\nconst Step = (props: IStep) => {\n\tconst {\n\t\tactive = 0,\n\t\tvertical,\n\t\trenderIcon,\n\t\tline,\n\t\tstyle,\n\t\tasList,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\n\tconst steps = useMemo(() => {\n\t\tconst nodes: ReactNode[] = [];\n\t\tlet index = 0;\n\n\t\tChildren.map(children, (el: any) => {\n\t\t\tif (!el || el.type !== Item) return;\n\n\t\t\tconst { props: elProps } = el;\n\n\t\t\tnodes.push({\n\t\t\t\t...el,\n\t\t\t\tprops: {\n\t\t\t\t\trenderIcon,\n\t\t\t\t\tline,\n\t\t\t\t\tonClick,\n\t\t\t\t\t...elProps,\n\t\t\t\t\tvertical,\n\t\t\t\t\tactive,\n\t\t\t\t\tasList,\n\t\t\t\t\tindex: index++,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\treturn nodes;\n\t}, [active, children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step\",\n\t\t\t\t{ \"i-step-vertical\": vertical },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{steps}\n\t\t</div>\n\t);\n};\n\nStep.Item = Item;\n\nexport default Step;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { ISwiperItem } from \"./type\";\n\nfunction Item(props: ISwiperItem) {\n\tconst {\n\t\tindex = 0,\n\t\titemIndex = 0,\n\t\tactive,\n\t\ttype,\n\t\ttransition,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tvertical,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonItemClick,\n\t} = props;\n\n\tconst selfStyle = useMemo(() => {\n\t\tif (type === \"normal\") {\n\t\t\treturn {\n\t\t\t\t[vertical ? \"paddingBlock\" : \"paddingInline\"]: gap / 2,\n\t\t\t\theight: itemHeight,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttransform: `translate(-${index * 100}%, 0)`,\n\t\t\ttransition,\n\t\t};\n\t}, [index, gap, itemHeight, vertical, type]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ ...style, ...selfStyle }}\n\t\t\tclassName={classNames(\"i-swiper-item\", className, {\n\t\t\t\t\"i-swiper-active\": active,\n\t\t\t})}\n\t\t\tdata-index={itemIndex}\n\t\t\tonClick={(e) => onItemClick?.(itemIndex, e)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { clamp } from \"@p/js/utils\";\nimport {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport {\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { CompositionSwiper, ISwiper } from \"./type\";\n\nconst Swiper = ((props: ISwiper) => {\n\tconst {\n\t\tref,\n\t\ttype = \"normal\",\n\t\tinitial = 0,\n\t\tdisplay = 1,\n\t\tscroll = 1,\n\t\tloop = true,\n\t\tvertical,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} size='2em' />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} size='2em' />,\n\t\tduration = 600,\n\t\tinterval = 3000,\n\t\tautoplay,\n\t\tpauseOnHover,\n\t\tarrow = true,\n\t\treverse,\n\t\tdraggable,\n\t\tdragOffset = 40,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tindicator,\n\t\tfixedIndicator,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\n\t\tonItemClick,\n\t} = props;\n\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst transition = `all ${duration / 1000}s`;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\tswipable: true,\n\t\ttransition: type === \"fade\" ? \"none\" : transition,\n\t\tdragStart: 0,\n\t\tdragging: false,\n\t\tinitialized: false,\n\t});\n\n\tconst items = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type !== Item) return;\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\tconst [displayItems, extra, size, total, listSize] = useMemo(() => {\n\t\tconst extra =\n\t\t\ttype === \"normal\" && loop && items.length > display\n\t\t\t\t? display + 1\n\t\t\t\t: 0;\n\t\tlet list: any = [];\n\n\t\tif (extra <= 0) {\n\t\t\tlist = [...items];\n\t\t} else {\n\t\t\tconst head = items.slice(0, extra);\n\t\t\tconst tail = items.slice(-extra);\n\t\t\tlist = [...tail, ...items, ...head];\n\t\t}\n\n\t\tconst listSize = `${(list.length / display) * 100}%`;\n\n\t\treturn [list, extra, items.length, list.length, listSize];\n\t}, [display, loop, type, items]);\n\n\tconst offsetPercent = useMemo(\n\t\t() => (-100 * (state.current + extra)) / total,\n\t\t[state.current, total]\n\t);\n\n\tconst position = useMemo(() => {\n\t\tif (size <= display || type === \"fade\") return;\n\n\t\tconst offset = vertical\n\t\t\t? `0, ${offsetPercent}%`\n\t\t\t: `${offsetPercent}%, 0`;\n\t\treturn `translate3d(${offset}, 0)`;\n\t}, [offsetPercent, vertical, display, size, type]);\n\n\tconst trackStyle = useMemo(() => {\n\t\tif (!vertical || !itemHeight) return;\n\n\t\treturn {\n\t\t\theight: itemHeight * display,\n\t\t};\n\t}, [vertical, itemHeight, display]);\n\n\tconst indicatorsLoop = useMemo(() => {\n\t\treturn Array.from({\n\t\t\tlength: Math.ceil((size - display) / scroll) + 1,\n\t\t});\n\t}, [loop, indicator]);\n\n\tconst clearTimer = () => {\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst swipeTo = (i: number) => {\n\t\tif (!state.swipable || i === state.current) return;\n\t\tstate.swipable = false;\n\t\tonBeforeSwipe?.(state.current);\n\n\t\tlet reset = false;\n\t\tlet next = i;\n\t\tconst lastDisplay = size - display;\n\n\t\tif (loop) {\n\t\t\tif (i > lastDisplay) {\n\t\t\t\treset = true;\n\t\t\t\ti = size;\n\t\t\t\tnext = 0;\n\t\t\t} else if (i < 0) {\n\t\t\t\treset = true;\n\t\t\t\ti = -display;\n\t\t\t\tnext = lastDisplay;\n\t\t\t}\n\t\t} else {\n\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\ti = next;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.swipable = true;\n\t\t}, duration + 32);\n\n\t\tif (type === \"fade\") {\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\treturn;\n\t\t}\n\n\t\tstate.current = i;\n\n\t\tif (!reset) {\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t}, duration + 12);\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.transition = \"none\";\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = transition;\n\t\t\t}, 60);\n\t\t}, duration + 20);\n\t};\n\tconst swipeNext = () => {\n\t\tswipeTo(reverse ? state.current - scroll : state.current + scroll);\n\t};\n\n\tconst swipePrev = () => {\n\t\tswipeTo(reverse ? state.current + scroll : state.current - scroll);\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tObject.assign(state, {\n\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\tdragging: true,\n\t\t\ttransition: \"none\",\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst offset =\n\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\toffsetPercent;\n\n\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t}, 0)`;\n\t};\n\n\tconst handleMouseUp = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\n\t\tif (e.changedTouches) {\n\t\t\te = e.changedTouches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst part =\n\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] / total;\n\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\tconst absOffset = Math.abs(offset);\n\n\t\tif (absOffset > dragOffset) {\n\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\tconst p = base + mod;\n\n\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\tswipeTo(to);\n\t\t}\n\n\t\tlistRef.current.style.transform = position || \"\";\n\n\t\tObject.assign(state, {\n\t\t\tdragging: false,\n\t\t\ttransition,\n\t\t});\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tswipeTo,\n\t\tswipeNext,\n\t\tswipePrev,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (!autoplay) return;\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t};\n\t}, [autoplay, interval]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-swiper\",\n\t\t\t\t{\n\t\t\t\t\t\"i-swiper-vertical\": vertical,\n\t\t\t\t\t\"i-swiper-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-swiper-track'\n\t\t\t\tstyle={trackStyle}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={listRef}\n\t\t\t\t\tclassName={classNames(\"i-swiper-list\", {\n\t\t\t\t\t\t\"i-swiper-fade\": type === \"fade\",\n\t\t\t\t\t})}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t[vertical ? \"height\" : \"width\"]: listSize,\n\t\t\t\t\t\ttransform: position,\n\t\t\t\t\t\ttransition: state.transition,\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t>\n\t\t\t\t\t{displayItems.map((item, i) => {\n\t\t\t\t\t\tconst { props: itemProps } = item;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\titemIndex={(i - extra + size) % size}\n\t\t\t\t\t\t\t\tactive={i - extra === state.current}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\tgap={gap}\n\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\titemHeight={itemHeight}\n\t\t\t\t\t\t\t\tvertical={vertical}\n\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t{...itemProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{arrow && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{(loop || state.current !== 0) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{(loop || state.current < size - display) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{indicator && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-swiper-indicators\", {\n\t\t\t\t\t\t\"i-swiper-indicators-fixed\": fixedIndicator,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{indicatorsLoop.map((_, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-swiper-indicator\", {\n\t\t\t\t\t\t\t\t\t\"i-indicator-active\":\n\t\t\t\t\t\t\t\t\t\ti ===\n\t\t\t\t\t\t\t\t\t\tMath[loop ? \"floor\" : \"ceil\"](\n\t\t\t\t\t\t\t\t\t\t\t((state.current + size) % size) /\n\t\t\t\t\t\t\t\t\t\t\t\tscroll\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => swipeTo(i * scroll)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderIndicator?.(i)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}) as CompositionSwiper;\n\nSwiper.Item = Item;\n\nexport default Swiper;\n","import { ITabItem } from \"./type\";\n\nconst Item = (props: ITabItem) => {\n\treturn <></>;\n};\n\nexport default Item;\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport { MoreHorizRound } from \"@ricons/material\";\nimport { useReactive, useSize } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { pick } from \"radash\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n} from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs, TTabKey } from \"./type\";\n\ntype TState = {\n\tactive?: TTabKey;\n\tprevActive?: TTabKey;\n\tbarStyle: CSSProperties;\n\tcachedTabs: TTabKey[];\n\toverflow: boolean;\n\tmore: ITabItem[];\n\ttabs: ITabItem[];\n};\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\tnavsJustify = \"start\",\n\t\tbar = true,\n\t\thideMore,\n\t\tbarClass,\n\t\trenderMore = () => (\n\t\t\t<Button flat square size='small'>\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\n\t\t\t</Button>\n\t\t),\n\t\tonTabChange,\n\t\t...rest\n\t} = props;\n\n\tconst navRefs = useRef<HTMLElement[]>([]);\n\tconst barRef = useRef<HTMLSpanElement>(null);\n\tconst navsRef = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<TState>({\n\t\tactive,\n\t\tprevActive: undefined,\n\t\tbarStyle: {},\n\t\tcachedTabs: [],\n\t\toverflow: false,\n\t\tmore: [],\n\t\ttabs: [],\n\t});\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst size = useSize(navsRef);\n\n\tuseEffect(() => {\n\t\tif (!items) {\n\t\t\tif (!children) {\n\t\t\t\tstate.tabs = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.tabs = Children.map(children, (node, i) => {\n\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\tkey?: TTabKey;\n\t\t\t\t\tprops?: any;\n\t\t\t\t};\n\t\t\t\tconst { title, children, content, keepDOM } = nodeProps;\n\n\t\t\t\tconst cloned = children\n\t\t\t\t\t? typeof children === \"string\"\n\t\t\t\t\t\t? children\n\t\t\t\t\t\t: pick(children, [\"props\", \"type\", \"$$typeof\", \"ref\"])\n\t\t\t\t\t: content;\n\n\t\t\t\treturn {\n\t\t\t\t\tkey: key || String(i),\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent: cloned,\n\t\t\t\t\tkeepDOM,\n\t\t\t\t};\n\t\t\t}) as ITabItem[];\n\n\t\t\treturn;\n\t\t}\n\n\t\tstate.tabs = items.map((item, i) => {\n\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\n\t\t\t\treturn { key: item, title: item };\n\t\t\t}\n\t\t\tif (item.key === undefined) {\n\t\t\t\titem.key = i;\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t}, [children, items]);\n\n\tconst add = (tab: ITabItem) => {\n\t\tconst { key } = tab;\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i > -1) {\n\t\t\topen(state.tabs[i].key ?? i);\n\t\t\treturn;\n\t\t}\n\n\t\tconst l = state.tabs.length;\n\t\tconst tkey = tab.key ?? l;\n\t\tstate.tabs.push({ ...tab, key: tkey });\n\t\topen(tkey);\n\t};\n\n\tconst close = (key: TTabKey) => {\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i < 0) return;\n\n\t\tstate.tabs.splice(i, 1);\n\n\t\tif (state.active !== key) return;\n\n\t\tconst next = state.tabs[i] || state.tabs[i - 1];\n\t\topen(state.prevActive ?? next?.key ?? \"\");\n\t};\n\n\tconst open = (key: TTabKey) => {\n\t\tif (key === state.active) {\n\t\t\tif (!toggable) return;\n\n\t\t\tonTabChange?.(undefined, key);\n\t\t\tstate.active = undefined;\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\tstate.prevActive = state.active;\n\t\tonTabChange?.(key, state.active);\n\t\tstate.active = key;\n\t};\n\n\tconst handleMouseWheel = (e) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (vertical) return;\n\n\t\tnavsRef.current?.scrollBy({\n\t\t\tleft: e.deltaY + e.deltaX,\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!size || hideMore) return;\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n\t\tconst { width, height } = size;\n\n\t\tstate.overflow = scrollHeight > height || scrollWidth > width;\n\n\t\tif (!state.overflow) return;\n\n\t\tnavRefs.current.map((nav, i) => {\n\t\t\tif (!nav) return;\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\n\t\t\t\tif (!state.tabs[i]) return;\n\t\t\t\tstate.tabs[i].intersecting = visible;\n\t\t\t\tstate.more = state.tabs.filter((tab) => !tab.intersecting);\n\t\t\t});\n\t\t});\n\t}, [size, hideMore, state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!bar || type === \"pane\" || state.active === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = state.tabs.findIndex((tab) => tab.key === state.active);\n\n\t\tsetTimeout(() => {\n\t\t\tconst nav = navRefs.current[index];\n\n\t\t\tif (!nav) return;\n\n\t\t\tif (state.tabs[index].keepDOM && state.active) {\n\t\t\t\tconst i = state.cachedTabs.findIndex((k) => k === state.active);\n\t\t\t\ti < 0 && state.cachedTabs.unshift(state.active);\n\t\t\t}\n\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n\t\t\tconst isLine = type === \"line\";\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n\t\t\t};\n\t\t}, 16);\n\t}, [state.active, bar]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || state.active === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore) return;\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = i, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": state.active === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={state.barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && state.overflow && state.more.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{state.more.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = i, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = state.active === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(state.more)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\tconst { key = i, content } = tab;\n\t\t\t\t\tconst isActive = state.active === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && state.cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n","import { KeyboardArrowDownRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useState } from \"react\";\nimport Checkbox from \"../checkbox\";\nimport Icon from \"../icon\";\nimport { ITree, ITreeHeader, PropsTreeItem } from \"./type\";\n\ninterface ITreeList extends Omit<ITree, \"nodeProps\"> {\n\tnodeProps: {\n\t\tkey: string;\n\t\ttitle: string;\n\t\tchildren: string;\n\t};\n}\n\nexport function TreeList(props: ITreeList) {\n\tconst {\n\t\tdata = [],\n\t\tdepth = 0,\n\t\tround,\n\t\tstyle,\n\t\tclassName,\n\t\tparent,\n\t\tnodeProps,\n\t\t...restProps\n\t} = props;\n\n\tconst contents = data.map((item, i) => {\n\t\tconst { type } = item;\n\t\tconst title = item[nodeProps.title];\n\t\tconst itemKey =\n\t\t\titem[nodeProps.key] ||\n\t\t\t(parent?.key !== undefined ? `${parent.key}-${i}` : `${i}`);\n\n\t\titem.key = itemKey;\n\t\titem.parent = parent;\n\n\t\tif (type === \"title\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className='i-tree-group-title'>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif (type && type !== \"item\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className={`i-tree-type-${type}`}>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TreeItem\n\t\t\t\tkey={itemKey}\n\t\t\t\tindex={i}\n\t\t\t\titem={item}\n\t\t\t\tdepth={depth}\n\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t);\n\t});\n\n\tif (depth > 0) return <>{contents}</>;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree\", className, {\n\t\t\t\t\"i-tree-round\": round,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{contents}\n\t\t</div>\n\t);\n}\n\nconst Header = (props: ITreeHeader) => {\n\tconst { as: Tag = \"a\", href, selected, children, ...restProps } = props;\n\n\tconst className = classNames(\"i-tree-item-header\", {\n\t\t\"i-tree-item-selected\": selected,\n\t});\n\n\tif (typeof Tag === \"string\") {\n\t\treturn (\n\t\t\t<Tag href={href} className={className} {...restProps}>\n\t\t\t\t{children}\n\t\t\t</Tag>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tag to={href || \"\"} className={className} {...restProps}>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport const TreeItem = (props: PropsTreeItem) => {\n\tconst {\n\t\titem,\n\t\tdepth = 0,\n\t\tindex,\n\t\tselected,\n\t\tchecked = [],\n\t\tpartofs = {},\n\t\tcheckable,\n\t\tnodeProps,\n\t\trenderExtra,\n\t\tonItemClick,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\n\tconst { as, key = \"\", href, icon, title, expanded, disabled } = item;\n\tconst children = item[nodeProps.children];\n\n\tconst [expand, setExpand] = useState(expanded);\n\n\tconst handleExpand = (e: MouseEvent<HTMLElement>, fromToggle?: boolean) => {\n\t\tif (fromToggle) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (disabled || !children?.length) return;\n\n\t\tsetExpand((v) => !v);\n\t};\n\n\tconst handleItemClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\thandleExpand(e);\n\t\tonItemClick?.(item, e);\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tconst handleItemCheck = (checked) => onItemCheck?.(item, checked, []);\n\tconst itemChecked = checked.includes(key);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree-item\", {\n\t\t\t\t\"i-tree-expand\": expand,\n\t\t\t})}\n\t\t>\n\t\t\t<Header\n\t\t\t\tas={as}\n\t\t\t\thref={href}\n\t\t\t\tstyle={{ paddingLeft: `${depth * 1.5 + 0.5}em` }}\n\t\t\t\tselected={selected === key}\n\t\t\t\tonClick={handleItemClick}\n\t\t\t>\n\t\t\t\t{checkable && (\n\t\t\t\t\t<Checkbox.Item\n\t\t\t\t\t\tvalue={itemChecked}\n\t\t\t\t\t\tpartof={!itemChecked && partofs[key]}\n\t\t\t\t\t\tclassName='i-tree-checkbox'\n\t\t\t\t\t\tonChange={handleItemCheck}\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{icon && <span className='i-tree-item-icon'>{icon}</span>}\n\n\t\t\t\t<span className='i-tree-item-title'>{title}</span>\n\n\t\t\t\t{renderExtra?.(item)}\n\n\t\t\t\t{children && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<KeyboardArrowDownRound />}\n\t\t\t\t\t\tclassName='i-tree-toggle'\n\t\t\t\t\t\tonClick={(e) => handleExpand(e, true)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Header>\n\n\t\t\t{children?.length && (\n\t\t\t\t<div className='i-tree-item-content'>\n\t\t\t\t\t<TreeList\n\t\t\t\t\t\tdata={children}\n\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\tcheckable={checkable}\n\t\t\t\t\t\tparent={item}\n\t\t\t\t\t\tpartofs={partofs}\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t\t\trenderExtra={renderExtra}\n\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\tonItemSelect={onItemSelect}\n\t\t\t\t\t\tonItemCheck={onItemCheck}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useImperativeHandle } from \"react\";\nimport \"./index.css\";\nimport { TreeList } from \"./item\";\nimport { ITree, ITreeItem } from \"./type\";\n\nconst defaultNodeProps = {\n\tkey: \"key\",\n\ttitle: \"title\",\n\tchildren: \"children\",\n};\n\nconst Tree = (props: ITree) => {\n\tconst {\n\t\tdata = [],\n\t\tref,\n\t\tselected,\n\t\tchecked = [],\n\t\tdisabledRelated,\n\t\tnodeProps,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tselected,\n\t\tchecked,\n\t\tpartofs: {} as Record<string, boolean>,\n\t\tnodeMaps: new Map(),\n\t});\n\tconst oNodeProps = Object.assign({}, defaultNodeProps, nodeProps);\n\n\tconst isChecked = (key?: string) => state.checked.includes(key || \"\");\n\n\tconst checkItem = (\n\t\titem: ITreeItem,\n\t\tchecked: boolean,\n\t\tdirection?: \"root\" | \"leaf\"\n\t) => {\n\t\tconst { key = \"\", parent, children } = item;\n\t\tconst shouldChanged = { [key]: checked };\n\t\tconst partofs = { [key]: false };\n\n\t\tif (disabledRelated) return [shouldChanged];\n\n\t\tif (checked) {\n\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\tconst hasUnchecked = parent.children?.some(\n\t\t\t\t\t(o) => o.key !== key && !isChecked(o.key)\n\t\t\t\t);\n\n\t\t\t\tconst [changes, parts] = checkItem(parent, true, \"root\");\n\n\t\t\t\tif (!hasUnchecked) {\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t}\n\n\t\t\t\tObject.assign(partofs, hasUnchecked ? parts : {}, {\n\t\t\t\t\t[parent.key as string]: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\tchildren.map((o) => {\n\t\t\t\t\tif (isChecked(o.key)) return;\n\n\t\t\t\t\tconst [changes] = checkItem(o, true, \"leaf\");\n\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [shouldChanged, partofs];\n\t\t}\n\n\t\tif (parent && direction !== \"leaf\") {\n\t\t\tconst [changes, parts] = checkItem(parent, false, \"root\");\n\n\t\t\tObject.assign(shouldChanged, changes);\n\n\t\t\tconst hasChecked = parent.children?.some(\n\t\t\t\t(o) => isChecked(o.key) && o.key !== key\n\t\t\t);\n\n\t\t\tObject.assign(partofs, hasChecked ? {} : parts, {\n\t\t\t\t[parent.key as string]: hasChecked,\n\t\t\t\t[key]: false,\n\t\t\t});\n\t\t}\n\t\tif (children?.length && direction !== \"root\") {\n\t\t\tchildren.map((o) => {\n\t\t\t\tconst [changes] = checkItem(o, false, \"leaf\");\n\n\t\t\t\tif (!isChecked(o.key)) return;\n\n\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t});\n\t\t}\n\n\t\treturn [shouldChanged, partofs];\n\t};\n\n\tconst handleCheck = (item: ITreeItem, checked: boolean) => {\n\t\tconst [shouldChanged, partofs] = checkItem(item, checked);\n\t\tconst changedKeys = Object.keys(shouldChanged);\n\n\t\tstate.checked = checked\n\t\t\t? Array.from(new Set([...state.checked, ...changedKeys]))\n\t\t\t: state.checked.filter((k) => !changedKeys.includes(k));\n\n\t\tObject.assign(state.partofs, partofs);\n\n\t\tonItemCheck?.(item, checked, state.checked);\n\t};\n\n\tconst handleSelect = (key: string, item: ITreeItem) => {\n\t\tif (!props.selectable) return;\n\n\t\tstate.selected = key;\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tuseEffect(() => {\n\t\tif (selected === undefined) return;\n\n\t\tstate.selected = selected;\n\t}, [selected]);\n\n\tuseEffect(() => {\n\t\tstate.nodeMaps.clear();\n\n\t\tconst { key, children } = oNodeProps;\n\t\tconst recursive = (nodes) => {\n\t\t\tnodes.map((o) => {\n\t\t\t\tstate.nodeMaps.set(o[key], o);\n\n\t\t\t\to[children]?.length > 0 && recursive(o[children]);\n\t\t\t});\n\t\t};\n\n\t\trecursive(data);\n\t}, [data]);\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tgetChecked: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tstate.checked.map((k) => {\n\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\titems.push(item);\n\t\t\t\t});\n\t\t\t\treturn [state.checked, items];\n\t\t\t},\n\t\t\tgetSelected: () => {\n\t\t\t\tconst item = state.nodeMaps.get(state.selected);\n\t\t\t\treturn [state.selected, item];\n\t\t\t},\n\t\t\tgetPartofs: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tconst keys = Object.keys(state.partofs).filter((k) => {\n\t\t\t\t\tconst indeterminate = state.partofs[k];\n\n\t\t\t\t\tif (indeterminate) {\n\t\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn indeterminate;\n\t\t\t\t});\n\n\t\t\t\treturn [keys, items];\n\t\t\t},\n\t\t};\n\t});\n\n\treturn (\n\t\t<TreeList\n\t\t\tdata={data}\n\t\t\tselected={state.selected}\n\t\t\tchecked={state.checked}\n\t\t\tpartofs={state.partofs}\n\t\t\tnodeProps={oNodeProps}\n\t\t\tonItemCheck={handleCheck}\n\t\t\tonItemSelect={handleSelect}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nexport default Tree;\n","import { TFileType } from \"@p/js/usePreview/type\";\nimport { formatBytes, getFileType } from \"@p/js/utils\";\nimport { ListAltRound } from \"@ricons/material\";\nimport { title } from \"radash\";\nimport { RefObject } from \"react\";\nimport SortableContainer from \"react-easy-sort\";\nimport Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport const ListContainer = (props) => {\n\tconst { sortable, onSortEnd, itemProps, ...restProps } = props;\n\tconst customProps = {\n\t\tclassName: \"i-upload-list\",\n\t\tonClick: (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t};\n\n\tif (!sortable) {\n\t\treturn <div {...customProps} {...restProps} />;\n\t}\n\treturn (\n\t\t<SortableContainer\n\t\t\tdraggedItemClassName='i-upload-item-dragged'\n\t\t\tonSortEnd={onSortEnd}\n\t\t\t{...customProps}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nconst FileListItem = (\n\tprops: IUploadItem & { ref?: RefObject<HTMLDivElement | null> }\n) => {\n\tconst { ref, mode, index, file, renderItem, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\n\tconst { id, name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\n\n\tif (renderItem) {\n\t\treturn renderItem(file, index);\n\t}\n\n\tconst CloseBtn = (\n\t\t<Helpericon\n\t\t\tactive\n\t\t\tclassName='i-upload-delete'\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\tonRemove(index);\n\t\t\t}}\n\t\t/>\n\t);\n\n\tswitch (mode) {\n\t\tcase \"card\":\n\t\t\tlet node = <></>;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase TFileType.IMAGE:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tlazyload\n\t\t\t\t\t\t\tsrc={url || src}\n\t\t\t\t\t\t\tfit='cover'\n\t\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase TFileType.VIDEO:\n\t\t\t\t\tnode = <video src={url || src} preload='none' />;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Icon icon={<ListAltRound />} />\n\t\t\t\t\t\t\t<span className='i-upload-file-name'>\n\t\t\t\t\t\t\t\t{title(name)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttitle={name}\n\t\t\t\t\tclassName='i-upload-item-card'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t{node}\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName='i-upload-item'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t<span>{name}</span>\n\n\t\t\t\t\t<i className='i-upload-size'>{formatBytes(size ?? 0)}</i>\n\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t}\n};\n\nexport default FileListItem;\n","import { arrayMove } from \"@/packages/js/utils\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { PlusSharp } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n\tChangeEvent,\n\tCSSProperties,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { SortableItem } from \"react-easy-sort\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport \"./index.css\";\nimport FileListItem, { ListContainer } from \"./renderFile\";\nimport { IFile, IUpload } from \"./type\";\n\nconst Upload = (props: IUpload) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tinitialFiles,\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tdefaultText = \"Upload\",\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tsortable,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem,\n\t\tshouldUpload = () => true,\n\t\tuploader,\n\t\tonChange,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tfiles,\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst preview = usePreview();\n\n\tconst trigger = useMemo(() => {\n\t\tif (children) return children;\n\n\t\tswitch (mode) {\n\t\t\tcase \"card\":\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-upload-card-btn color-5'\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tflat\n\t\t\t\t\t\toutline\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlusSharp />} />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<Button className='i-upload-btn' disabled={disabled}>\n\t\t\t\t\t\t{defaultText}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t}\n\t}, [mode, children]);\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = Array.from(e.target.files || []) as IFile[];\n\t\tconst { files: before } = state;\n\t\tconst changed: IFile[] = [];\n\n\t\tfiles.map((f) => {\n\t\t\tconst { id, name, size, type } = f;\n\t\t\tconst same = before.find((pf) => {\n\t\t\t\tconst { name: n, size: s, type: t } = pf;\n\t\t\t\treturn n === name && s === size && t === type;\n\t\t\t});\n\t\t\tconst src = URL.createObjectURL(f);\n\n\t\t\tObject.assign(f, {\n\t\t\t\tid: id ?? uid(7),\n\t\t\t\tsrc: src ?? f.name,\n\t\t\t\turl: src ?? f.name,\n\t\t\t});\n\t\t\t!same && changed.push(f);\n\t\t});\n\n\t\tconst after = [...before, ...changed];\n\n\t\tObject.assign(state, {\n\t\t\tfiles: multiple ? after.slice(0, limit) : [after.at(-1)],\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonFilesChange?.(state.files, changed, e);\n\t\tonChange?.(state.files, e);\n\n\t\thandleUpload(changed);\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleRemove = (i: number) => {\n\t\tconst [...files] = state.files;\n\n\t\tconst changed = files.splice(i, 1);\n\t\tURL.revokeObjectURL(changed[0]?.src || \"\");\n\n\t\tstate.files = files;\n\t\tonFilesChange?.(files, changed);\n\t\tonChange?.(files);\n\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleUpload = async (files: IFile[]) => {\n\t\tif (!uploader) return;\n\n\t\tconst shouldUploadFiles = files.filter(shouldUpload);\n\n\t\tconst result = Promise.all(shouldUploadFiles.map(uploader));\n\n\t\treturn onUpload?.(result);\n\t};\n\n\tconst handlePreview = (i: number) => {\n\t\tpreview({ items: state.files as TPreviewItem[], initial: i });\n\t};\n\n\tconst setFileList = (files?: IFile[] | File[]) => {\n\t\tif (!files) return;\n\n\t\tstate.files = files.map((f) => {\n\t\t\treturn { ...f, id: f.id ?? uid(7) };\n\t\t});\n\t};\n\n\tconst handleSortEnd = (before, after) => {\n\t\tconst [...files] = state.files;\n\n\t\tstate.files = arrayMove(files, before, after);\n\t\tonChange?.(state.files);\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\t}, [status, message]);\n\n\tuseEffect(() => {\n\t\tstate.files = value?.filter?.((file) => !!file.id) ?? [];\n\t}, [value]);\n\n\tuseEffect(() => {\n\t\tsetFileList(initialFiles);\n\t}, []);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\n\t\t\tsetFileList,\n\t\t}),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<InputContainer\n\t\t\tas='div'\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={classNames(\"i-input-label-file\", className)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-upload-inner\", {\n\t\t\t\t\t[`i-upload-${mode}`]: mode !== \"default\",\n\t\t\t\t})}\n\t\t\t\tstyle={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n\t\t\t>\n\t\t\t\t<ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\n\t\t\t\t\t{state.files.map((file: IFile, i: number) => {\n\t\t\t\t\t\tconst node = (\n\t\t\t\t\t\t\t<FileListItem\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\tfile={file}\n\t\t\t\t\t\t\t\tmode={mode}\n\t\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\t\tonRemove={handleRemove}\n\t\t\t\t\t\t\t\tonPreview={handlePreview}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!sortable) return node;\n\n\t\t\t\t\t\treturn <SortableItem key={i}>{node}</SortableItem>;\n\t\t\t\t\t})}\n\t\t\t\t</ListContainer>\n\n\t\t\t\t{state.message && (\n\t\t\t\t\t<span className='i-upload-message'>{state.message}</span>\n\t\t\t\t)}\n\n\t\t\t\t{state.files.length < limit && (\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\ttype='file'\n\t\t\t\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{trigger}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Upload;\n"],"names":["TIMEOUT","listener","e","target","parent","closest","$box","$ripple","document","createElement","className","append","createRipple","rect","getBoundingClientRect","size","Math","max","width","height","style","cssText","pageX","left","pageY","top","insertAdjacentElement","offsetHeight","classList","add","setTimeout","remove","triggerRipple","Loading","props","icon","text","absolute","restProps","_jsxs","classNames","inset","children","_jsx","stroke","viewBox","xmlns","fontSize","cx","cy","r","fill","strokeWidth","strokeLinecap","strokeDasharray","strokeDashoffset","formatClass","outline","flat","loading","disabled","block","round","square","secondary","classnames","Button","as","As","ref","href","ripple","onClick","childNodes","key","attrs","undefined","stopPropagation","preventDefault","useEffect","documentElement","dataset","addEventListener","to","Toggle","active","activeClass","after","toggable","onToggle","state","useReactive","done","Object","assign","async","hasAfter","nextActive","toggle","Group","vertical","buttonProps","nodes","useMemo","Children","map","node","type","cloneElement","Icon","rotate","isValidElement","iconProps","transform","ToTop","SkipPreviousRound","Affix","position","right","bottom","offset","getContainer","body","hidden","setHidden","useState","hijackChildren","container","scrollTo","behavior","debounce","delay","scrollTop","removeEventListener","Badge","content","contentClass","dot","dotSize","rounded","Card","hideShadow","border","header","footer","shadow","TFileType","getPosition","$source","$popup","options","refWindow","gap","align","arrowX","arrowY","arrowPos","rectT","rectC","w","window","innerWidth","h","innerHeight","tl","tt","tr","tb","tw","th","ch","cw","rectPa","offsetParent","offsetLeft","offsetTop","y","x","computePosition","containerSize","targetSize","targetOffset","contentSize","xl","xr","R","yt","yb","T","B","getPointPosition","pw","ph","pl","pt","ow","oh","ol","ot","centerPoint","result","formatOption","option","includes","label","value","formatNumber","precision","thousand","toFixed","points","split","integer","replace","length","renderNode","div","root","createRoot","sto","render","unmount","clearTimeout","getSuffixByUrl","url","match","getFileType","suffix","startsWith","formatBytes","bytes","decimals","dm","i","floor","log","parseFloat","pow","clamp","min","CheckboxItem","name","status","message","partof","onChange","checked","Checkbox","optionInline","labelInline","required","formattedOptions","opt","group","findIndex","item","push","splice","handleChange","Item","Helpericon","CloseRound","uid","Collapse","items","multiple","headerClickable","renderToggle","MinusRound","PlusRound","onCollapse","collapses","nodeProps","title","handleToggle","Array","isArray","k","isActive","handleHeaderClick","Empty","InboxTwotone","getCellStyle","justify","col","row","colSpan","rowSpan","gridArea","insetInline","Cell","column","data","cellEllipsis","onCellClick","onCellDoubleClick","id","fixed","onDoubleClick","MouseMoveEvents","Set","MouseUpEvents","KeydownEvents","touchable","EVENTS","MOVE","UP","KEYDOWN","useMouseMove","delete","useMouseUp","useKeydown","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","entry","callback","get","isIntersecting","observe","set","unobserve","disconnect","Resize","index","onWidthChange","resizing","onMouseDown","offsetWidth","values","passive","Arrow","d","Sorter","Row","columns","onRowClick","Header","resizable","sortBy","sortType","onHeaderClick","sorter","renderHeader","order","insetBlockStart","Datagrid","striped","cellPadding","empty","renderLoading","onSort","onScroll","onResize","useRef","scrollbar","rows","widths","styles","o","join","fws","isLeft","sum","slice","reduce","pre","cur","find","sortFn","a","b","sorted","sort","reverse","current","tds","querySelector","from","scrollBarStyle","ScrollContainer","autoHide","autoHeight","autoHeightMax","renderView","ws","prevSortBy","prevSortType","types","t","getNextSorter","Description","colon","labelWidth","labelAlign","equally","gridTemplateColumns","textAlign","Fragment","gridColumn","gridRow","Drawer","visible","backdropClosable","hideCloseButton","keepDOM","disabledEsc","onVisibleChange","onClose","show","init","handleShow","handleHide","code","createPortal","alignItems","List","renderLabel","Content","trigger","arrow","arrowProps","arrowCSS","pos","Popup","showDelay","hideDelay","fitSize","watchResize","clickOutside","referToWindow","triggerRef","contentRef","timerRef","statusRef","tar","isContain","contains","clearTimer","opacity","action","eventMaps","useCreation","click","hover","onMouseEnter","onMouseLeave","focus","onFocus","onBlur","contextmenu","onContextMenu","none","contentTouch","events","ResizeObserver","useResizeObserver","useLayoutEffect","_Fragment","child","keys","evt","fn","ListItem","Dropdown","minWidth","more","moreProps","Li","exec","c","execCommand","xssOptions","onIgnoreTagAttr","tag","substr","escapeAttrValue","fnMap","bold","FormatBoldRound","tip","italic","FormatItalicRound","underline","FormatUnderlinedRound","strike","StrikethroughSRound","redo","RedoRound","undo","UndoRound","clear","ClearAllRound","aliasMap","simple","all","getControls","fns","controlBtnProps","Editor","placeholder","autosize","richPaste","controls","onInput","onPaste","onKeyDown","editorRef","useImperativeHandle","setValue","html","safeHtml","xss","innerHTML","getSafeValue","contentEditable","clipboardData","getData","scrollBy","scrollHeight","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","cacheData","rules","constructor","this","field","PubSub","publish","validate","rule","validator","v","isValid","isAllValid","Promise","resolve","Form","form","initialValues","onEnter","repeat","keyCode","DefaultContent","footerLeft","okButtonProps","cancelButtonProps","onOk","showHeader","handleOk","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","disableEsc","customized","setShow","setActive","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","then","unsubscribe","HookModal","mergedProps","config","close","Text","Tag","weight","decoration","gradient","wave","gradients","backgroundImage","backgroundClip","fontWeight","textDecoration","Circle","circleSize","lineWidth","pathLength","Number","count","decimal","duration","easing","n","setN","number","z","start","performance","now","diff","raf","requestAnimationFrame","loop","percent","cancelAnimationFrame","pass","animate","Time","seconds","zero","units","time","l","unshift","formatTime","HighLight","keyword","escape","caseSensitive","renderWord","word","source","findAll","searchWords","textToHighlight","autoEscape","chunk","end","highlight","Line","barClass","dragging","renderCursor","onTouchStart","Progress","draggable","onDraggingChange","pageXY","rectTL","rectWH","toFixedValue","handleMouseDown","touches","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","controlHidden","draggingProgress","videoRef","hiddenTO","timeUpdateListener","paused","currentTime","playChangeListener","fsChangeListener","parentElement","fullscreenElement","volumeChangeListener","handlePlay","play","pause","handleStop","handleFullscreen","el","exitFullscreen","requestFullscreen","showControls","clearHiddenTO","handleMouseMove","throttle","interval","stop","fullscreen","getVideo","currentValue","onMouseMove","onCanPlay","PauseRound","PlayArrowRound","StopRound","VolumeOffRound","padding","VolumeDownRound","FullscreenExitRound","FullscreenRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","handleSwitch","next","before","handleRotate","deg","handleMouseWheel","deltaY","throttleMouseMove","ox","oy","offsetX","offsetY","onWheel","AspectRatioRound","OpenInNewRound","download","FileDownloadOutlined","RotateRightRound","RotateLeftRound","KeyboardArrowLeftRound","KeyboardArrowRightRound","usePreview","modalProps","unMount","Image","initSize","lazyload","fallback","HideImageTwotone","fit","cover","coverClass","previewable","onLoad","onError","wh","preview","handleClick","complete","setAttribute","iSize","objectFit","err","InputContainer","img","Input","initValue","prepend","hideVisible","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","clearable","showHelper","Textarea","autoSize","refTextarea","ta","firstChild","step","Infinity","hideControl","formatInputValue","replaceAll","handleOperate","param","getFormatNumber","Range","range","SyncAltRound","margin","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","oneInstance","callout","queue","heights","tops","onShow","bind","timer","call","onHide","renderItems","MessageItem","alignSelf","instance","error","success","warning","one","useModal","open","Page","page","setLoading","Pagination","defaultPage","total","sibling","prev","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","handlePageChange","p","dotClass","hoverShowClose","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","rest","activeOptions","Select","hideClear","hideArrow","popupProps","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","ColorMethods","HEX","RGB","HSB","Footer","onTypeChange","Handle","color","handle","background","ColorPicker","disabledAlpha","usePanel","syncValue","handleTypeChange","method","handleValueChange","ColorsPanel","panelRender","panel","onChangeComplete","Dates","month","weeks","renderDate","date","disabledDate","onDateClick","today","dayjs","dates","lastDateOfLastMonth","endOf","$W","$D","lastMonthDates","whatever","lastDate","week","isSame","isSameMonth","isToday","handleDateClick","MONTHS","YearMonth","unitMonth","unitYear","renderYear","renderMonth","year","Panel","m","selectedYear","years","selectable","$years","handleOperateMonth","getMoreYears","isUp","_","handleChangeMonth","extend","customParseFormat","FORMATTYPES","FORMAT","Datepicker","format","dayJsValue","handleSetDate","CalendarMonthTwotone","Items","renderItem","unit","UnitMaps","hh","mm","s","ss","stepH","stepM","stepS","periods","onFallback","period","hour","minute","second","hours","minutes","hasH","hasM","hasS","handleSetTime","pattern","toLowerCase","updateValue","nums","TimePicker","safeValue","AccessTimeRound","defaultOk","defaultCancel","Popconfirm","InfoOutlined","extra","ok","cancel","popconfirmContent","finally","RadioItem","Radio","Resizable","other","minSize","maxSize","line","asPercent","onResizeComplete","Divider","STATUS","defaultRenderIcon","renderIcon","asList","Step","steps","elProps","itemIndex","transition","itemHeight","onItemClick","selfStyle","Swiper","display","scroll","pauseOnHover","dragOffset","indicator","fixedIndicator","renderIndicator","onBeforeSwipe","onAfterSwipe","listRef","swipable","dragStart","initialized","displayItems","listSize","list","head","offsetPercent","trackStyle","indicatorsLoop","swipeTo","reset","lastDisplay","swipeNext","swipePrev","clientY","clientX","changedTouches","dragEnd","part","absOffset","abs","onMouseOver","itemProps","Tabs","tabs","navsJustify","bar","hideMore","renderMore","onTabChange","navRefs","barRef","navsRef","prevActive","barStyle","cachedTabs","overflow","useSize","cloned","pick","String","tab","tkey","deltaX","scrollWidth","nav","intersecting","isLine","navs","flex","TreeList","depth","contents","itemKey","TreeItem","selected","partofs","checkable","renderExtra","onItemSelect","onItemCheck","expanded","expand","setExpand","handleExpand","fromToggle","itemChecked","paddingLeft","KeyboardArrowDownRound","defaultNodeProps","Tree","disabledRelated","nodeMaps","Map","oNodeProps","isChecked","checkItem","shouldChanged","hasUnchecked","some","changes","parts","hasChecked","recursive","getChecked","getSelected","getPartofs","indeterminate","changedKeys","ListContainer","sortable","onSortEnd","customProps","SortableContainer","draggedItemClassName","FileListItem","mode","onRemove","onPreview","CloseBtn","preload","ListAltRound","Upload","initialFiles","defaultText","cardSize","limit","shouldUpload","uploader","onFilesChange","onUpload","inputRef","PlusSharp","handleRemove","changed","URL","revokeObjectURL","handleUpload","shouldUploadFiles","handlePreview","setFileList","f","getFileList","array","fromIndex","toIndex","arrayMove","SortableItem","same","pf","createObjectURL","at"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../packages/js/useRipple/index.ts","../packages/components/loading/loading.tsx","../packages/components/button/button.tsx","../packages/components/button/index.tsx","../packages/components/button/toggle.tsx","../packages/components/button/group.tsx","../packages/components/icon/icon.tsx","../packages/components/affix/totop.tsx","../packages/components/affix/affix.tsx","../packages/components/badge/badge.tsx","../packages/components/card/card.tsx","../packages/js/usePreview/type.ts","../packages/js/utils.ts","../packages/components/checkbox/item.tsx","../packages/components/checkbox/checkbox.tsx","../packages/components/utils/helpericon/helpericon.tsx","../packages/components/collapse/collapse.tsx","../packages/components/utils/empty/index.tsx","../packages/components/datagrid/cell.tsx","../packages/components/collapse/item.tsx","../packages/js/hooks.ts","../packages/components/datagrid/resize.tsx","../packages/components/datagrid/sorter.tsx","../packages/components/datagrid/row.tsx","../packages/components/datagrid/datagrid.tsx","../packages/components/description/description.tsx","../packages/components/drawer/drawer.tsx","../packages/components/list/item.tsx","../packages/components/list/list.tsx","../packages/components/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/dropdown/item.tsx","../packages/components/dropdown/dropdown.tsx","../packages/components/editor/controls.tsx","../packages/components/editor/editor.tsx","../packages/components/flex/flex.tsx","../packages/components/form/context.tsx","../packages/components/form/useForm.ts","../packages/components/form/form.tsx","../packages/components/modal/modal.tsx","../packages/components/form/field.tsx","../packages/components/modal/hookModal.tsx","../packages/components/text/text.tsx","../packages/components/progress/circle.tsx","../packages/components/text/index.tsx","../packages/components/text/number.tsx","../packages/components/text/time.tsx","../packages/components/text/highlight.tsx","../packages/components/progress/line.tsx","../packages/components/progress/progress.tsx","../packages/components/video/video.tsx","../packages/js/usePreview/renderFile.tsx","../packages/js/usePreview/content.tsx","../packages/js/usePreview/index.tsx","../packages/components/image/image.tsx","../packages/components/input/container.tsx","../packages/components/image/index.tsx","../packages/components/image/list.tsx","../packages/components/input/input.tsx","../packages/components/input/index.tsx","../packages/components/input/textarea.tsx","../packages/components/input/number.tsx","../packages/components/input/range.tsx","../packages/components/message/message.tsx","../packages/components/modal/index.tsx","../packages/components/modal/useModal.tsx","../packages/components/pagination/page.tsx","../packages/components/pagination/pagination.tsx","../packages/components/tag/tag.tsx","../packages/components/select/options.tsx","../packages/components/select/select.tsx","../packages/components/picker/colors/footer.tsx","../packages/components/picker/colors/handle.tsx","../packages/components/picker/colors/index.tsx","../packages/components/picker/dates/dates.tsx","../packages/components/picker/dates/panel.tsx","../packages/components/picker/dates/index.tsx","../packages/components/picker/time/item.tsx","../packages/components/picker/time/panel.tsx","../packages/components/picker/time/index.tsx","../packages/components/popconfirm/popconfirm.tsx","../packages/components/radio/item.tsx","../packages/components/radio/radio.tsx","../packages/components/resizable/resizable.tsx","../packages/components/step/divider.tsx","../packages/components/step/item.tsx","../packages/components/step/step.tsx","../packages/components/swiper/item.tsx","../packages/components/swiper/swiper.tsx","../packages/components/tabs/item.tsx","../packages/components/tabs/tabs.tsx","../packages/components/tree/item.tsx","../packages/components/tree/tree.tsx","../packages/components/upload/renderFile.tsx","../packages/components/upload/upload.tsx"],"sourcesContent":["import \"./ripple.css\";\n\nconst TIMEOUT = 500;\n\nconst useRipple = () => {\n\tif (document.documentElement.dataset[\"useripple\"]) return;\n\tdocument.documentElement.dataset[\"useripple\"] = \"enable\";\n\n\tdocument.addEventListener(\"mousedown\", listener);\n};\n\nfunction listener(e: MouseEvent) {\n\tconst target = e.target as HTMLElement;\n\tconst parent = target.closest(\"[data-ripple]\") as HTMLElement;\n\n\tif (!target || !parent) return;\n\n\ttriggerRipple(parent, e);\n}\n\nfunction triggerRipple(target: HTMLElement, e: MouseEvent) {\n\tconst [$box, $ripple] = createRipple();\n\tconst rect = target.getBoundingClientRect();\n\tconst size = Math.max(rect.width, rect.height) * 2;\n\n\t$ripple.style.cssText = `\n left: ${e.pageX - rect.left}px;\n top: ${e.pageY - rect.top}px;\n width: ${size}px;\n height: ${size}px;\n transition: all ${TIMEOUT / 1000}s;\n `;\n\ttarget.insertAdjacentElement(\"afterbegin\", $box);\n\ttarget.offsetHeight;\n\t$ripple.classList.add(\"i-ripple-active\");\n\n\tsetTimeout(() => {\n\t\t$box.remove();\n\t}, TIMEOUT);\n}\n\nfunction createRipple() {\n\tconst $box = document.createElement(\"SPAN\");\n\tconst $ripple = document.createElement(\"SPAN\");\n\n\t$box.className = \"i-ripple-container\";\n\t$ripple.className = \"i-ripple\";\n\n\t$box.append($ripple);\n\n\treturn [$box, $ripple];\n}\n\nexport default useRipple;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n","import useRipple from \"@p/js/useRipple\";\nimport classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tonClick?.(e);\n\t};\n\n\tif (!children) return <></>;\n\n\tconst childNodes = [\n\t\tloading && <Loading key='loading' />,\n\t\tcreateElement(\n\t\t\t\"span\",\n\t\t\t{ key: \"content\", className: \"i-btn-content\" },\n\t\t\tchildren\n\t\t),\n\t];\n\n\tconst attrs = {\n\t\tclassName: formatClass(props),\n\t\t[\"data-ripple\"]:\n\t\t\tripple && !loading && !restProps.disabled ? \"\" : undefined,\n\t\tonClick: handleClick,\n\t};\n\n\tuseEffect(() => {\n\t\tripple && useRipple();\n\t}, [ripple]);\n\n\tif (typeof As === \"string\") {\n\t\treturn createElement(\n\t\t\tAs,\n\t\t\t{\n\t\t\t\tref,\n\t\t\t\thref,\n\t\t\t\t...attrs,\n\t\t\t\t...restProps,\n\t\t\t},\n\t\t\tchildNodes\n\t\t);\n\t}\n\n\treturn createElement(\n\t\tAs,\n\t\t{\n\t\t\tto: href || \"\",\n\t\t\t...attrs,\n\t\t\t...restProps,\n\t\t},\n\t\tchildNodes\n\t);\n};\n\nexport default Button as CompositionButton;\n","import Button from \"./button\";\nimport Group from \"./group\";\nimport Toggle from \"./toggle\";\n\nButton.Toggle = Toggle;\nButton.Group = Group;\n\nexport default Button;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useEffect } from \"react\";\nimport Button from \"./button\";\nimport { IButtonToggle } from \"./type\";\n\nexport default function Toggle(props: IButtonToggle) {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\tactiveClass,\n\t\tafter,\n\t\tdisabled,\n\t\tchildren,\n\t\tclassName,\n\t\ttoggable,\n\t\tonClick,\n\t\tonToggle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t\tdone: true,\n\t});\n\n\tconst toggle = async () => {\n\t\tconst hasAfter = !!after;\n\t\tconst nextActive = !state.active;\n\n\t\tconst canToggle = toggable ? await toggable() : true;\n\t\tif (!canToggle) return;\n\n\t\tObject.assign(state, {\n\t\t\tactive: nextActive,\n\t\t\tdone: !hasAfter,\n\t\t});\n\t\tonToggle?.(nextActive);\n\n\t\tif (!hasAfter) return;\n\n\t\tsetTimeout(() => {\n\t\t\tstate.done = true;\n\t\t}, 16);\n\t};\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tonClick?.(e);\n\n\t\t!disabled && toggle();\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tactive,\n\t\t\tdone: true,\n\t\t});\n\t}, [active]);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\t{ [activeClass || \"\"]: state.active },\n\t\t\t\t\"i-btn-toggle\"\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-btn-toggle-content\", {\n\t\t\t\t\t\"i-btn-toggle-active\": state.done,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{state.active ? after ?? children : children}\n\t\t\t</div>\n\t\t</Button>\n\t);\n}\n","import classNames from \"classnames\";\nimport { Children, cloneElement, useMemo } from \"react\";\nimport Button from \"./button\";\nimport { IButtonGroup } from \"./type\";\n\nexport default function Group(props: IButtonGroup) {\n\tconst { children, vertical, buttonProps, className, style } = props;\n\n\tconst nodes = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tconst { type } = node;\n\n\t\t\tif (type === Button) {\n\t\t\t\treturn cloneElement(\n\t\t\t\t\tnode,\n\t\t\t\t\tObject.assign({}, node.props, buttonProps)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\tvertical ? \"i-btn-group-vertical\" : \"i-btn-group-horizonal\"\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{nodes}\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\nimport { cloneElement, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = (props: IIcon) => {\n\tconst {\n\t\tref,\n\t\ticon,\n\t\tsize = \"1.425em\",\n\t\trotate,\n\t\tstyle,\n\t\tclassName,\n\t\t...restProps\n\t} = props;\n\n\tif (!isValidElement(icon)) return icon;\n\n\tconst iconProps = {\n\t\tref,\n\t\tstyle: {\n\t\t\ttransform: rotate ? `rotate(${rotate}deg)` : undefined,\n\t\t\t...style,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t},\n\t\tclassName: classNames(\"i-icon\", className),\n\t\t...restProps,\n\t};\n\n\treturn cloneElement(icon, iconProps);\n};\n\nexport default Icon;\n","import { SkipPreviousRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport { IAffix } from \"./type\";\n\nfunction ToTop(props: IAffix) {\n\tconst { style, className, onClick } = props;\n\n\treturn (\n\t\t<Button\n\t\t\tsquare\n\t\t\tclassName={classNames(\"i-affix-totop\", className)}\n\t\t\tstyle={{ ...style }}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Icon icon={<SkipPreviousRound />} rotate={90} />\n\t\t</Button>\n\t);\n}\n\nexport default ToTop;\n","import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => document.body,\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst {\n\t\thideShadow,\n\t\tborder,\n\t\tclassName,\n\t\tchildren,\n\t\theader,\n\t\tfooter,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n","import { CSSProperties, ReactNode } from \"react\";\nimport { IModal } from \"../../components/modal/type\";\n\nexport type TPreviewItem = {\n\tsrc: string;\n\tname?: ReactNode;\n\tthumb?: string;\n\trotate?: number;\n\tzoom?: number;\n\tstyle?: CSSProperties;\n\ttype?: TFileType;\n\tsuffix?: string;\n};\n\nexport enum TFileType {\n\tIMAGE = \"IMAGE\",\n\tVIDEO = \"VIDEO\",\n\tAUDIO = \"AUDIO\",\n\tPDF = \"PDF\",\n\tEXCEL = \"EXCEL\",\n\tTXT = \"TXT\",\n\tUNKNOWN = \"UNKNOWN\",\n}\n\nexport interface IPreview {\n\titems: (TPreviewItem | string)[];\n\tinitial?: number;\n\tcontrols?: boolean;\n\tloop?: boolean;\n\tclassName?: string;\n\tstyle?: CSSProperties;\n\tmodalProps?: IModal;\n\trenderImage?: (file: TPreviewItem) => ReactNode;\n\trenderFile?: (file: TPreviewItem) => ReactNode;\n\tonClose?: () => void;\n\tonChange?: (after: number, before?: number) => void;\n\tonZoom?: (scale: number) => void;\n\tonRotate?: (deg: number) => void;\n}\n","import { MouseEvent, ReactNode } from \"react\";\nimport { Root, createRoot } from \"react-dom/client\";\nimport { TFileType } from \"../js/usePreview/type\";\nimport { TOption, TOptions, TRelativeOptions } from \"../type\";\n\ntype TComputePosition = {\n\tcontainerSize: number;\n\ttargetSize: number;\n\ttargetOffset: number;\n\tcontentSize: number;\n\tgap: number;\n\talign?: \"start\" | \"center\" | \"end\";\n};\n\nexport function getPosition(\n\t$source?: HTMLElement | null,\n\t$popup?: HTMLElement | null,\n\toptions: TRelativeOptions = {}\n): [\n\tx: number,\n\ty: number,\n\tz: {\n\t\tarrowX: number;\n\t\tarrowY: number;\n\t\tarrowPos: string;\n\t}\n] {\n\tconst { refWindow, gap = 0, offset = 0, position = \"top\", align } = options;\n\n\tif (!$source || !$popup)\n\t\treturn [\n\t\t\t0,\n\t\t\t0,\n\t\t\t{\n\t\t\t\tarrowX: 0,\n\t\t\t\tarrowY: 0,\n\t\t\t\tarrowPos: \"bottom\",\n\t\t\t},\n\t\t];\n\n\tconst rectT = $source.getBoundingClientRect();\n\tconst rectC = $popup.getBoundingClientRect();\n\n\tlet w = window.innerWidth;\n\tlet h = window.innerHeight;\n\tlet {\n\t\tleft: tl,\n\t\ttop: tt,\n\t\tright: tr,\n\t\tbottom: tb,\n\t\twidth: tw,\n\t\theight: th,\n\t} = rectT;\n\tconst { height: ch, width: cw } = rectC;\n\n\tif (!refWindow) {\n\t\tconst rectPa = $source.offsetParent?.getBoundingClientRect();\n\n\t\tw = rectPa?.width || w;\n\t\th = rectPa?.height || h;\n\t\ttl = $source.offsetLeft;\n\t\ttt = $source.offsetTop;\n\t\ttr = tl + rectT.width;\n\t\ttb = tt + rectT.height;\n\t}\n\n\tlet y = 0;\n\tlet x = 0;\n\tlet arrowX = 0;\n\tlet arrowY = 0;\n\tlet arrowPos = \"bottom\";\n\n\tswitch (position) {\n\t\tcase \"left\":\n\t\tcase \"right\":\n\t\t\ty =\n\t\t\t\tth !== ch\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: h,\n\t\t\t\t\t\t\ttargetSize: th,\n\t\t\t\t\t\t\ttargetOffset: tt,\n\t\t\t\t\t\t\tcontentSize: ch,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tt;\n\t\t\tarrowY = y < tt ? tt - y + th / 2 : th / 2;\n\n\t\t\tconst xl = tl - offset - cw;\n\t\t\tconst xr = tr + offset + cw;\n\n\t\t\tif (position === \"left\") {\n\t\t\t\tconst R = xl < 0 && xr <= w;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tconst R = w > xr || xl < 0;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\tcase \"bottom\":\n\t\t\tx =\n\t\t\t\ttw !== cw\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: w,\n\t\t\t\t\t\t\ttargetOffset: tl,\n\t\t\t\t\t\t\ttargetSize: tw,\n\t\t\t\t\t\t\tcontentSize: cw,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tl;\n\t\t\tarrowX = x > tl ? cw / 2 : tl - x + tw / 2;\n\n\t\t\tconst yt = tt - offset - ch;\n\t\t\tconst yb = tb + offset + ch;\n\t\t\tif (position === \"top\") {\n\t\t\t\tconst T = yt < 0 && yb <= h;\n\t\t\t\ty = T ? tb + offset : yt;\n\t\t\t\tarrowY = T ? 0 : ch;\n\t\t\t\tarrowPos = T ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\tconst B = h > yb || yt < 0;\n\t\t\t\ty = B ? tb + offset : yt;\n\t\t\t\tarrowY = B ? 0 : ch;\n\t\t\t\tarrowPos = B ? \"top\" : \"bottom\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn [\n\t\tx,\n\t\ty,\n\t\t{\n\t\t\tarrowX,\n\t\t\tarrowY,\n\t\t\tarrowPos,\n\t\t},\n\t];\n}\n\nexport function getPointPosition(e: MouseEvent, content: HTMLElement) {\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst parent = content.offsetParent;\n\tlet pw,\n\t\tph,\n\t\tpl = 0,\n\t\tpt = 0;\n\n\tif (parent) {\n\t\tconst {\n\t\t\twidth: ow,\n\t\t\theight: oh,\n\t\t\tleft: ol,\n\t\t\ttop: ot,\n\t\t} = parent.getBoundingClientRect();\n\t\tconst st = parent.scrollTop ?? 0;\n\n\t\tpw = ow;\n\t\tph = oh;\n\t\tpt = ot - st;\n\t\tpl = ol;\n\t} else {\n\t\tpw = window.innerWidth;\n\t\tph = window.innerHeight;\n\t}\n\tconst x = e.pageX - pl;\n\tconst y = e.pageY - pt;\n\n\tconst left = x + w >= pw ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= ph ? (y - h > 0 ? y - h : y) : y;\n\n\treturn [left, top];\n}\n\nfunction computePosition({\n\tcontainerSize,\n\ttargetSize,\n\ttargetOffset,\n\tcontentSize,\n\tgap,\n\talign = \"center\",\n}: TComputePosition) {\n\tconst centerPoint = targetOffset + targetSize / 2;\n\n\tswitch (align) {\n\t\tcase \"start\":\n\t\t\treturn targetOffset + contentSize > containerSize\n\t\t\t\t? containerSize - contentSize - gap\n\t\t\t\t: targetOffset;\n\t\tcase \"center\":\n\t\t\tif (targetSize >= contentSize) {\n\t\t\t\treturn centerPoint - contentSize / 2;\n\t\t\t}\n\n\t\t\tif (centerPoint + contentSize / 2 + gap > containerSize) {\n\t\t\t\treturn targetOffset + targetSize - contentSize;\n\t\t\t}\n\n\t\t\tif (centerPoint - contentSize / 2 - gap < 0) {\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\treturn centerPoint - contentSize / 2;\n\t\tcase \"end\":\n\t\t\tconst result = targetOffset + targetSize - contentSize;\n\t\t\treturn result > 0 ? result : gap;\n\t\tdefault:\n\t\t\treturn centerPoint - contentSize / 2;\n\t}\n}\n\nexport function formatOption(options: TOptions): TOption[] {\n\treturn options.map((option) =>\n\t\t[\"string\", \"number\"].includes(typeof option)\n\t\t\t? { label: option, value: option }\n\t\t\t: option\n\t) as TOption[];\n}\n\nexport function animate(\n\tfrom: number,\n\tto: number,\n\tduration: number = 1000,\n\tcallback?: (v: number) => void,\n\teasing: (t: number) => number = (t) => 1 - Math.pow(1 - t, 4)\n) {\n\tconst start = performance.now();\n\tconst diff = to - from;\n\tlet raf = requestAnimationFrame(loop);\n\n\tfunction loop() {\n\t\traf = requestAnimationFrame(loop);\n\n\t\tconst past = performance.now() - start;\n\t\tlet percent = past / duration;\n\n\t\tif (percent >= 1) {\n\t\t\tpercent = 1;\n\t\t\tcancelAnimationFrame(raf);\n\t\t}\n\n\t\tconst pass = diff * easing(percent);\n\t\tcallback?.(pass);\n\t}\n}\n\nexport function formatNumber(\n\tvalue: number,\n\toptions: {\n\t\tprecision?: number;\n\t\tthousand?: string;\n\t} = {}\n) {\n\tconst { precision, thousand } = options;\n\n\tconst result = value.toFixed(precision);\n\n\tif (!thousand) return result;\n\n\tconst points = result.split(\".\");\n\tconst integer = points[0].replace(\n\t\t/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g,\n\t\t`$&${thousand}`\n\t);\n\n\tif (points.length === 1) return integer;\n\n\treturn `${integer}.${points[1]}`;\n}\n\nexport function renderNode(node: ReactNode, container = document.body) {\n\tconst div: HTMLDivElement | null = document.createElement(\"div\");\n\tcontainer.append(div);\n\n\tconst root: Root | null = createRoot(div);\n\tconst sto = setTimeout(() => {\n\t\troot?.render(node);\n\t}, 0);\n\n\treturn () => {\n\t\tdiv?.remove();\n\t\troot?.unmount();\n\t\tsto && clearTimeout(sto);\n\t};\n}\n\nexport function getSuffixByUrl(url: string) {\n\treturn url.match(/\\.([^\\./\\?]+)($|\\?)/)?.[1];\n}\n\nexport function getFileType(suffix: string, type?: string): TFileType {\n\tswitch (true) {\n\t\tcase [\"jpg\", \"jpeg\", \"png\", \"webp\", \"svg\"].includes(suffix) ||\n\t\t\ttype?.startsWith(\"image/\"):\n\t\t\treturn TFileType[\"IMAGE\"];\n\t\tcase [\"mp4\", \"avi\"].includes(suffix) || type?.startsWith(\"video/\"):\n\t\t\treturn TFileType[\"VIDEO\"];\n\t\tdefault:\n\t\t\treturn TFileType[\"UNKNOWN\"];\n\t}\n}\n\nexport function fullScreen(el: HTMLElement) {\n\tel.requestFullscreen?.();\n}\n\nexport function exitFullScreen() {\n\tdocument.exitFullscreen?.();\n}\n\nexport function formatTime(\n\ttime: number,\n\toptions?: {\n\t\tzero?: boolean;\n\t\tunits?: string[];\n\t}\n) {\n\tconst result: string[] = [];\n\tconst { zero = true, units = [\"\", \":\", \":\"] } = options || {};\n\n\tconst l = units.length;\n\tlet i = 0;\n\n\twhile (i < l) {\n\t\tif (time <= 0 && i > 1) break;\n\n\t\tconst n = Math.round(time % 60);\n\n\t\ttime = Math.floor(time / 60);\n\n\t\tresult.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);\n\t}\n\n\treturn result.join(\"\");\n}\n\nexport function getNextSorter(\n\tprevSortBy: string,\n\tprevSortType: string,\n\tsortBy: string\n): [sortBy: string, sortType: string] {\n\tconst types = [\"desc\", \"asc\"];\n\n\tif (prevSortBy === sortBy) {\n\t\tconst i = types.findIndex((t) => t === prevSortType) + 1;\n\t\tconst type = types[i] || \"\";\n\t\tconst by = type === \"\" ? \"\" : sortBy;\n\n\t\treturn [by, type];\n\t}\n\n\treturn [sortBy, \"desc\"];\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n\tif (!+bytes) return \"0 Bytes\";\n\n\tconst k = 1024;\n\tconst dm = decimals < 0 ? 0 : decimals;\n\tconst sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n\treturn value < min ? min : value > max ? max : value;\n}\n\nexport const arrayMove = (array, fromIndex: number, toIndex: number) => {\n\tif (toIndex >= array.length) {\n\t\tlet k = toIndex - array.length + 1;\n\t\twhile (k--) {\n\t\t\tarray.push(undefined);\n\t\t}\n\t}\n\tarray.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);\n\treturn array;\n};\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport { ICheckboxItem } from \"./type\";\n\nexport default function CheckboxItem(props: ICheckboxItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = false,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tdisabled,\n\t\tpartof,\n\t\toptionValue,\n\t\tchildren,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\tconst isChildrenFn = typeof children === \"function\";\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst checked = e.target.checked;\n\n\t\tObject.assign(state, {\n\t\t\tvalue: checked,\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonChange?.(checked, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${state.status}`]: state.status !== \"normal\",\n\t\t\t\t\tdisabled,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype='checkbox'\n\t\t\t\tname={name}\n\t\t\t\tclassName={classNames(\"i-checkbox-input\", {\n\t\t\t\t\t[`i-checkbox-${type}`]: !partof,\n\t\t\t\t\t\"i-checkbox-partof\": partof,\n\t\t\t\t})}\n\t\t\t\tchecked={state.value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t{isChildrenFn ? (\n\t\t\t\tchildren(state.value, optionValue)\n\t\t\t) : (\n\t\t\t\t<span className='i-checkbox-text'>{children || label}</span>\n\t\t\t)}\n\n\t\t\t{state.message && (\n\t\t\t\t<span className='i-checkbox-message'>*{state.message}</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{\n\t\tvalue: any;\n\t}>({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...state.value];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tstate.value = group;\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-checkbox-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CheckboxItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={state.value.includes(option.value)}\n\t\t\t\t\t\t\toptionValue={option.value}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem ?? option.label}\n\t\t\t\t\t\t</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n","import { CloseRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { createElement } from \"react\";\nimport Icon from \"../../icon\";\nimport \"./index.css\";\nimport { IHelperIcon } from \"./type\";\n\nconst Helpericon = (props: IHelperIcon) => {\n\tconst {\n\t\tas = \"a\",\n\t\tactive,\n\t\tclassName,\n\t\ticon = <CloseRound />,\n\t\t...restProps\n\t} = props;\n\n\tif (!active) return <></>;\n\n\treturn createElement(\n\t\tas,\n\t\t{\n\t\t\tclassName: classNames(\"i-helpericon\", className),\n\t\t\t...restProps,\n\t\t},\n\t\t[\n\t\t\tcreateElement(Icon, {\n\t\t\t\tkey: uid(3),\n\t\t\t\ticon,\n\t\t\t}),\n\t\t]\n\t);\n};\n\nexport default Helpericon;\n","import { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { ICollapse, ICollapseItem, TKey } from \"./type\";\n\nconst Collapse = (props: ICollapse) => {\n\tconst {\n\t\tactive,\n\t\titems,\n\t\tmultiple,\n\t\tborder,\n\t\theaderClickable,\n\t\tclassName,\n\t\tchildren,\n\t\trenderToggle = (active: boolean) =>\n\t\t\tactive ? <MinusRound /> : <PlusRound />,\n\t\tonCollapse,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t});\n\n\tconst collapses = useMemo(() => {\n\t\tif (!items) {\n\t\t\tif (!children) return [];\n\n\t\t\treturn (\n\t\t\t\tChildren.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: TKey;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst { title, children, content, disabled, ...restProps } =\n\t\t\t\t\t\tnodeProps;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...restProps,\n\t\t\t\t\t\tkey: key || i,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tcontent: children || content,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t};\n\t\t\t\t}) || []\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t}, [children]);\n\n\tconst handleHeaderClick = (item: ICollapseItem) => {\n\t\tif (!headerClickable) return;\n\n\t\thandleToggle(item);\n\t};\n\n\tconst handleToggle = (item: ICollapseItem, e?) => {\n\t\tconst { key, disabled } = item;\n\t\te?.stopPropagation();\n\t\tif (disabled) return;\n\n\t\tif (!multiple) {\n\t\t\tstate.active = state.active === key ? undefined : key;\n\t\t\tonCollapse?.(key as TKey, state.active !== undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Array.isArray(state.active)) state.active = [];\n\n\t\tconst i = state.active.findIndex((k) => k === key);\n\n\t\tif (i > -1) {\n\t\t\tstate.active.splice(i, 1);\n\t\t} else {\n\t\t\tkey !== undefined && state.active.push(key);\n\t\t}\n\t\tonCollapse?.(key as TKey, i < 0);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-collapse\",\n\t\t\t\t{\n\t\t\t\t\t\"i-collapse-bordered\": border,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{collapses.map((item) => {\n\t\t\t\tconst {\n\t\t\t\t\tkey,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps\n\t\t\t\t} = item;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? ((state.active as TKey[]) || []).includes(key)\n\t\t\t\t\t: state.active === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tclassName={classNames(\"i-collapse-item\", className, {\n\t\t\t\t\t\t\t\"i-collapse-active\": isActive,\n\t\t\t\t\t\t\t\"i-collapse-disabled\": disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='i-collapse-header'\n\t\t\t\t\t\t\tonClick={() => handleHeaderClick(item)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\tclassName='i-collapse-toggle'\n\t\t\t\t\t\t\t\ticon={renderToggle(isActive)}\n\t\t\t\t\t\t\t\tonClick={(e) => handleToggle(item, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className='i-collapse-content'>{content}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCollapse.Item = Item;\n\nexport default Collapse;\n","import { InboxTwotone } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport default function Empty(props) {\n\tconst { className, ...restProps } = props;\n\n\treturn (\n\t\t<InboxTwotone\n\t\t\tclassName={classNames(\"i-empty\", className)}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\nimport { ICell, IColumn } from \"./type\";\n\nexport function getCellStyle({\n\tjustify,\n\tcol,\n\trow,\n\tcolSpan = 1,\n\trowSpan = 1,\n}: Pick<IColumn, \"justify\" | \"fixed\"> & {\n\tcol: number;\n\trow: number;\n\tcolSpan?: number;\n\trowSpan?: number;\n\tisHeader?: boolean;\n}) {\n\tconst style = {\n\t\t\"--datagrid-justify\": justify,\n\t\tgridArea: `${row + 1} / ${col + 1} / ${row + 1 + rowSpan} / ${\n\t\t\tcol + 1 + colSpan\n\t\t}`,\n\t\tinsetInline: `var(--datagrid-cell-inset-${col})`,\n\t};\n\n\treturn style;\n}\n\nexport function Cell(props: ICell) {\n\tconst {\n\t\tcolumn,\n\t\trow,\n\t\tcol,\n\t\tdata,\n\t\tcellEllipsis,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\tconst { id, fixed, justify, rowSpan, render } = column;\n\tconst style = getCellStyle({ justify, fixed, col, row, rowSpan });\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t[`i-datagrid-cell-fixed-${fixed}`]: fixed,\n\t\t\t})}\n\t\t\tdata-col={id}\n\t\t\tstyle={style}\n\t\t\tonClick={(e) => onCellClick?.(data, column, row, col, e)}\n\t\t\tonDoubleClick={(e) =>\n\t\t\t\tonCellDoubleClick?.(data, column, row, col, e)\n\t\t\t}\n\t\t>\n\t\t\t{render?.(data[id], data, col) ?? (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-datagrid-cell-content\", {\n\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\": cellEllipsis,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{data[id]}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { ICollapseItem } from \"./type\";\n\nexport default function Item(props: ICollapseItem) {\n\treturn <></>;\n}\n","import { useEffect } from \"react\";\n\ntype TMouseEvent = (e: MouseEvent) => void;\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\ntype TEventOption = {\n\tdisabled?: boolean;\n};\n\nconst ClickEvents = new Set<TMouseEvent>();\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst KeydownEvents = new Set<TKeyboardEvent>();\n\nconst touchable = \"ontouchend\" in document;\nconst EVENTS: any = {\n\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\tUP: touchable ? \"touchend\" : \"mouseup\",\n\tKEYDOWN: \"keydown\",\n};\n\ndocument.addEventListener(\n\tEVENTS.MOVE,\n\t(e: MouseEvent) => {\n\t\tfor (const listener of MouseMoveEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t},\n\t{ passive: false }\n);\n\ndocument.addEventListener(EVENTS.UP, (e) => {\n\tfor (const listener of MouseUpEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\ndocument.addEventListener(EVENTS.KEYDOWN, (e) => {\n\tfor (const listener of KeydownEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseMoveEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseMoveEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tKeydownEvents.add(listener);\n\t\treturn () => {\n\t\t\tKeydownEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\n\tconst WM = new WeakMap();\n\tconst IO = new IntersectionObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\n\t\t});\n\t}, configs);\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\tWM.set(target, callback);\n\t\ttarget && IO.observe(target);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n\nexport function useResizeObserver() {\n\tconst WM = new WeakMap();\n\tconst IO = new ResizeObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target);\n\t\t});\n\t});\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\ttarget && IO.observe(target);\n\t\tWM.set(target, callback);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\n\nexport default function Resize(props) {\n\tconst { index, onWidthChange } = props;\n\tconst state = useReactive({\n\t\tresizing: false,\n\t\tx: 0,\n\t\twidth: 0,\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst width = (tar.offsetParent as HTMLElement).offsetWidth;\n\n\t\tObject.assign(state, {\n\t\t\tx: e.pageX,\n\t\t\tresizing: true,\n\t\t\twidth,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tconst after = state.width + e.pageX - state.x;\n\t\tif (after <= 24) return;\n\n\t\tonWidthChange(index, after);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<i\n\t\t\tclassName='i-datagrid-resizor'\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Arrow = (props) => (\n\t<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n\t\t<g fill='none'>\n\t\t\t<path\n\t\t\t\td='M9 17.898c0 1.074 1.265 1.648 2.073.941l6.31-5.522a1.75 1.75 0 0 0 0-2.634l-6.31-5.522C10.265 4.454 9 5.028 9 6.102v11.796z'\n\t\t\t\tfill='currentColor'\n\t\t\t></path>\n\t\t</g>\n\t</svg>\n);\n\nexport default function Sorter(props) {\n\tconst { type } = props;\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-datagrid-sorter\", {\n\t\t\t\t[`i-datagrid-sorter-${type}`]: type,\n\t\t\t})}\n\t\t>\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t</a>\n\t);\n}\n","import classNames from \"classnames\";\nimport { Cell, getCellStyle } from \"./cell\";\nimport Resize from \"./resize\";\nimport Sorter from \"./sorter\";\nimport { IHeader, IRow } from \"./type\";\n\nexport default function Row(props: IRow) {\n\tconst {\n\t\trow,\n\t\tdata,\n\t\tcolumns,\n\t\tcellEllipsis,\n\t\tonRowClick,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-row' onClick={() => onRowClick?.(data, row)}>\n\t\t\t{columns.map((col, i) => (\n\t\t\t\t<Cell\n\t\t\t\t\tkey={i}\n\t\t\t\t\tcolumn={col}\n\t\t\t\t\tcol={i}\n\t\t\t\t\trow={row}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function Header(props: IHeader) {\n\tconst {\n\t\tcolumns,\n\t\tresizable,\n\t\tcellEllipsis,\n\t\tsortBy,\n\t\tsortType,\n\t\tonWidthChange,\n\t\tonHeaderClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-header i-datagrid-row'>\n\t\t\t{columns.map((column, col) => {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\ttitle,\n\t\t\t\t\tfixed,\n\t\t\t\t\tcolSpan,\n\t\t\t\t\tsorter,\n\t\t\t\t\tjustify,\n\t\t\t\t\trenderHeader,\n\t\t\t\t} = column;\n\t\t\t\tconst style = getCellStyle({\n\t\t\t\t\tjustify,\n\t\t\t\t\trow: 0,\n\t\t\t\t\tcol,\n\t\t\t\t\tcolSpan,\n\t\t\t\t});\n\n\t\t\t\tconst order = sortBy === id ? sortType : \"\";\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\tdata-col={id}\n\t\t\t\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t\t\t\t\"i-datagrid-has-sorter\": sorter,\n\t\t\t\t\t\t\t\"i-datagrid-cell-fixed\": fixed,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{ ...style, insetBlockStart: 0 }}\n\t\t\t\t\t\tonClick={(e) => onHeaderClick?.(column, e)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderHeader?.(column, col) ?? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content\",\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\":\n\t\t\t\t\t\t\t\t\t\t\tcellEllipsis,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title || id}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{sorter && <Sorter type={order} />}\n\n\t\t\t\t\t\t{resizable && (\n\t\t\t\t\t\t\t<Resize index={col} onWidthChange={onWidthChange} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","import { getNextSorter } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport ScrollContainer, { Scrollbars } from \"react-custom-scrollbars-2\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => <Loading size='1.5em' className='color-3' />,\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst scrollbar = useRef<Scrollbars>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && scrollbar.current?.scrollTop(0);\n\t}, [loading]);\n\n\tconst scrollBarStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<ScrollContainer\n\t\t\tref={scrollbar}\n\t\t\tautoHide\n\t\t\tautoHeight\n\t\t\tautoHeightMax={height}\n\t\t\tstyle={scrollBarStyle}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t\trenderView={(props) => (\n\t\t\t\t<div\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={classNames({ \"i-datagrid-loading\": loading })}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tonScroll={onScroll}\n\t\t>\n\t\t\t<div ref={container} className='i-datagrid'>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</ScrollContainer>\n\t);\n};\n\nexport default Datagrid;\n","import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n","import { useKeydown } from \"@/packages/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tdisabledEsc,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t\tinit: false,\n\t});\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tstate.active = true;\n\t\t\ttoggable.current = true;\n\t\t\tstate.init = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tstate.active = false;\n\t\tsetTimeout(() => {\n\t\t\tif (!keepDOM) {\n\t\t\t\tstate.show = false;\n\t\t\t}\n\t\t\tonVisibleChange?.(false);\n\t\t\ttoggable.current = true;\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{\n\t\t\tdisabled: disabledEsc,\n\t\t}\n\t);\n\n\treturn createPortal(\n\t\tstate.show && (\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\t\"i-active\": state.active,\n\t\t\t\t})}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</header>\n\n\t\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t\t<div className='i-drawer-footer'>{footer}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n","import classNames from \"classnames\";\nimport { IListItem } from \"./type\";\n\nconst Item = (props: IListItem) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttype,\n\t\talign,\n\t\tdisabled,\n\t\tlabel,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<li\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-list-item\", className, {\n\t\t\t\t\"i-list-item-active\": active,\n\t\t\t\t\"i-list-option\": type === \"option\",\n\t\t\t\tdisabled,\n\t\t\t})}\n\t\t\tstyle={{ alignItems: align, ...style }}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label !== undefined && (\n\t\t\t\t<span className='i-list-item-label'>{label}</span>\n\t\t\t)}\n\t\t\t{children}\n\t\t</li>\n\t);\n};\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, cloneElement } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\n\nconst List = (props: IList) => {\n\tconst { label, type, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\tconst { type, props: nodeProps } = node;\n\n\t\t\t\tif (type === Item) {\n\t\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t\t...nodeProps,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn node;\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Item = Item;\n\nexport default List;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IPopupContent } from \"./type\";\n\nconst Content = (props: IPopupContent) => {\n\tconst {\n\t\tref,\n\t\tgetContainer = (trigger) => trigger?.offsetParent ?? document.body,\n\t\ttrigger,\n\t\tarrow,\n\t\tarrowProps = {},\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\tconst arrowCSS = useMemo(() => {\n\t\tlet { left, top, pos } = arrowProps;\n\t\tlet transform = \"\";\n\n\t\tswitch (pos) {\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\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\ttransform,\n\t\t};\n\t}, [arrowProps]);\n\n\tconst content = (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-popup\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{arrow && (\n\t\t\t\t<svg\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-popup-arrow'\n\t\t\t\t\tstyle={arrowCSS}\n\t\t\t\t>\n\t\t\t\t\t<path d='M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' />\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{children}\n\t\t</div>\n\t);\n\n\treturn createPortal(content, getContainer(trigger));\n};\n\nexport default Content;\n","import { useMouseUp, useResizeObserver } from \"@p/js/hooks\";\nimport { getPointPosition, getPosition } from \"@p/js/utils\";\nimport { useCreation, useReactive } from \"ahooks\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPopup } from \"./type\";\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\tfixed,\n\t\tposition = \"top\",\n\t\tshowDelay = 16,\n\t\thideDelay = 12,\n\t\ttouchable,\n\t\tarrow = true,\n\t\talign,\n\t\tfitSize,\n\t\twatchResize,\n\t\tclickOutside = true,\n\t\tdisabled,\n\t\treferToWindow,\n\t\tstyle,\n\t\tclassName,\n\t\tgetContainer,\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 statusRef = useRef<string>(\"\");\n\tconst state = useReactive<{\n\t\tshow: boolean;\n\t\tstyle: CSSProperties;\n\t\tarrowProps: Record<string, any>;\n\t}>({\n\t\tshow: false,\n\t\tstyle: { position: fixed ? \"fixed\" : \"absolute\" },\n\t\tarrowProps: {},\n\t});\n\n\tuseMouseUp((e) => {\n\t\tif (!triggerRef.current || !contentRef.current || !clickOutside) return;\n\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst isContain =\n\t\t\ttriggerRef.current.contains(tar) ||\n\t\t\tcontentRef.current.contains(tar);\n\n\t\tif (!state.show || isContain) return;\n\n\t\thandleToggle(false);\n\t});\n\n\tconst clearTimer = () => {\n\t\tif (!timerRef.current) return;\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst handleShow = () => {\n\t\tif (disabled) return;\n\t\tif (\n\t\t\tstate.show &&\n\t\t\t(trigger !== \"hover\" || (trigger === \"hover\" && !touchable))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tstate.show = true;\n\t\tstatusRef.current = \"showing\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (statusRef.current !== \"showing\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\t\ttriggerRef.current,\n\t\t\t\tcontentRef.current,\n\t\t\t\t{\n\t\t\t\t\tposition,\n\t\t\t\t\tgap,\n\t\t\t\t\toffset,\n\t\t\t\t\talign,\n\t\t\t\t\trefWindow: referToWindow,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tstate.style = {\n\t\t\t\t...state.style,\n\t\t\t\topacity: 1,\n\t\t\t\ttransform: \"none\",\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t};\n\t\t\tstate.arrowProps = {\n\t\t\t\tleft: arrowX,\n\t\t\t\ttop: arrowY,\n\t\t\t\tpos: arrowPos,\n\t\t\t};\n\t\t\tonVisibleChange?.(true);\n\t\t\tclearTimer();\n\t\t\tstatusRef.current = \"\";\n\t\t}, showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!state.show) return;\n\n\t\tstatusRef.current = \"hiding\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (statusRef.current !== \"hiding\") {\n\t\t\t\tclearTimer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.style = {\n\t\t\t\t...state.style,\n\t\t\t\topacity: 0,\n\t\t\t\ttransform: \"translate(0, 2px)\",\n\t\t\t};\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.show = false;\n\t\t\t\tclearTimer();\n\t\t\t\tonVisibleChange?.(false);\n\t\t\t\tstatusRef.current = \"\";\n\t\t\t}, 160);\n\t\t}, 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\n\t\tstate.show ? handleHide() : handleShow();\n\t};\n\tconst eventMaps = useCreation(\n\t\t() => ({\n\t\t\tclick: {\n\t\t\t\tonClick: () => handleToggle(true),\n\t\t\t},\n\t\t\thover: {\n\t\t\t\tonMouseEnter: () => handleToggle(true),\n\t\t\t\tonMouseLeave: () => handleToggle(false),\n\t\t\t},\n\t\t\tfocus: {\n\t\t\t\tonFocus: () => handleToggle(true),\n\t\t\t\tonBlur: () => handleToggle(false),\n\t\t\t},\n\t\t\tcontextmenu: {\n\t\t\t\tonContextMenu: (e: MouseEvent) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\tif (state.show) {\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.style = {\n\t\t\t\t\t\t\t...state.style,\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.show = true;\n\n\t\t\t\t\ttimerRef.current = setTimeout(() => {\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.style = {\n\t\t\t\t\t\t\t...state.style,\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\ttransform: \"none\",\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tclearTimer();\n\t\t\t\t\t\tonVisibleChange?.(true);\n\t\t\t\t\t}, showDelay);\n\t\t\t\t},\n\t\t\t},\n\t\t\tnone: {},\n\t\t}),\n\t\t[]\n\t);\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 computePosition = () => {\n\t\tif (!state.show) return;\n\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\ttriggerRef.current,\n\t\t\tcontentRef.current,\n\t\t\t{\n\t\t\t\tposition,\n\t\t\t\tgap,\n\t\t\t\toffset,\n\t\t\t\talign,\n\t\t\t\trefWindow: referToWindow,\n\t\t\t}\n\t\t);\n\n\t\tObject.assign(state, {\n\t\t\tstyle: { ...state.style, left, top },\n\t\t\tarrowProps: { left: arrowX, top: arrowY, pos: arrowPos },\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (trigger === \"contextmenu\") return;\n\t\tconst { observe, unobserve, disconnect } = useResizeObserver();\n\n\t\ttriggerRef.current && observe(triggerRef.current, computePosition);\n\n\t\tif (!watchResize || !contentRef.current) return;\n\n\t\tobserve(contentRef.current, computePosition);\n\n\t\treturn () => {\n\t\t\tif (!watchResize || !contentRef.current) return;\n\n\t\t\tunobserve(contentRef.current);\n\t\t\ttriggerRef.current && unobserve(triggerRef.current);\n\t\t\tdisconnect();\n\t\t};\n\t}, [watchResize, contentRef.current, triggerRef.current]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!fitSize || !state.show) return;\n\n\t\tconst vertical = [\"top\", \"bottom\"].includes(position);\n\t\tconst size =\n\t\t\ttriggerRef.current?.[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n\t\tstate.style = { ...state.style, [vertical ? \"width\" : \"height\"]: size };\n\t}, [state.show, fitSize]);\n\n\tuseLayoutEffect(() => {\n\t\thandleToggle(visible);\n\t}, [visible]);\n\n\treturn (\n\t\t<>\n\t\t\t{Children.map(children, (child) => {\n\t\t\t\tif (!isValidElement(child)) return;\n\n\t\t\t\tconst { className, ...restProps } = child.props as any;\n\t\t\t\tObject.keys(eventMaps[trigger]).map((evt) => {\n\t\t\t\t\tif (!restProps[evt]) return;\n\t\t\t\t\tconst fn = eventMaps[trigger][evt];\n\n\t\t\t\t\teventMaps[trigger][evt] = (e) => {\n\t\t\t\t\t\tfn();\n\t\t\t\t\t\trestProps[evt](e);\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\tref: triggerRef,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps,\n\t\t\t\t\t...eventMaps[trigger],\n\t\t\t\t});\n\t\t\t})}\n\n\t\t\t{state.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={{ ...style, ...state.style }}\n\t\t\t\t\tarrowProps={state.arrowProps}\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\tgetContainer={getContainer}\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","import List from \"../list\";\nimport Popup from \"../popup\";\nimport { IDropItem } from \"./type\";\n\nconst { Item: ListItem } = List;\n\nconst Item = (props: IDropItem) => {\n\tconst { more, moreProps, onClick, ...restProps } = props;\n\tconst Li = (\n\t\t<ListItem\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick?.(e);\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n\n\tif (!more) return Li;\n\n\treturn (\n\t\t<Popup\n\t\t\tposition='right'\n\t\t\ttouchable\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\toffset={10}\n\t\t\thideDelay={240}\n\t\t\t{...moreProps}\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{more}\n\t\t\t\t</List>\n\t\t\t}\n\t\t>\n\t\t\t{Li}\n\t\t</Popup>\n\t);\n};\n\nexport default Item;\n","import List from \"../list\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IDropdown } from \"./type\";\n\nconst Dropdown = (props: IDropdown) => {\n\tconst { width, content, children, ...restProps } = props;\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\ttouchable\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tstyle={{ minWidth: width }}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</List>\n\t\t\t}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nDropdown.Item = Item;\n\nexport default Dropdown;\n","import {\n\tClearAllRound,\n\tFormatBoldRound,\n\tFormatItalicRound,\n\tFormatUnderlinedRound,\n\tRedoRound,\n\tStrikethroughSRound,\n\tUndoRound,\n} from \"@ricons/material\";\nimport { Fragment } from \"react/jsx-runtime\";\nimport { escapeAttrValue } from \"xss\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\n\nexport const exec = (a, b?, c?) => document.execCommand(a, b, c);\n\nexport const xssOptions = {\n\tonIgnoreTagAttr: function (tag, name, value) {\n\t\tif ([\"data-\", \"style\"].includes(name.substr(0, 5))) {\n\t\t\treturn name + '=\"' + escapeAttrValue(value) + '\"';\n\t\t}\n\t},\n};\n\nconst fnMap = {\n\tbold: {\n\t\ticon: <FormatBoldRound />,\n\t\tonClick: () => exec(\"bold\"),\n\t\ttip: \"粗体\",\n\t},\n\titalic: {\n\t\ticon: <FormatItalicRound />,\n\t\tonClick: () => exec(\"italic\"),\n\t\ttip: \"斜体\",\n\t},\n\tunderline: {\n\t\ticon: <FormatUnderlinedRound />,\n\t\tonClick: () => exec(\"underline\"),\n\t\ttip: \"下划线\",\n\t},\n\tstrike: {\n\t\ticon: <StrikethroughSRound />,\n\t\tonClick: () => exec(\"strikeThrough\"),\n\t\ttip: \"删除线\",\n\t},\n\tredo: {\n\t\ticon: <RedoRound />,\n\t\tonClick: () => exec(\"redo\"),\n\t\ttip: \"重做\",\n\t},\n\tundo: {\n\t\ticon: <UndoRound />,\n\t\tonClick: () => exec(\"undo\"),\n\t\ttip: \"撤销\",\n\t},\n\t// color: {\n\t// \ticon: <FormatColorTextRound />,\n\t// \tonClick: () => exec(\"foreColor\", false, \"\"),\n\t// },\n\t// backColor: {\n\t// \ticon: <FormatColorFillRound />,\n\t// \tonClick: () => exec(\"backColor\", false, \"\"),\n\t// },\n\tclear: {\n\t\ticon: <ClearAllRound />,\n\t\tonClick: () => exec(\"removeFormat\"),\n\t\ttip: \"清除格式\",\n\t},\n};\n\nconst aliasMap = {\n\tsimple: [\"undo\", \"redo\", \"bold\", \"italic\", \"underline\", \"strike\", \"clear\"],\n\tall: Object.keys(fnMap),\n};\n\nexport default function getControls(fns, options) {\n\tconst { controlBtnProps } = options;\n\tconst keys = typeof fns === \"string\" ? aliasMap[fns] : fns;\n\n\treturn keys.map((k) => {\n\t\tif (fnMap[k]) {\n\t\t\tconst { icon, render, tip, onClick } = fnMap[k];\n\n\t\t\tif (render) {\n\t\t\t\treturn render(options);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Button key={k} {...controlBtnProps} onClick={onClick}>\n\t\t\t\t\t<Icon icon={icon} />\n\t\t\t\t\t{tip && <span className='i-editor-control-tip'>{tip}</span>}\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\t\treturn <Fragment key={k} />;\n\t});\n}\n","import classNames from \"classnames\";\nimport { useImperativeHandle, useRef } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport { IEditor } from \"./type\";\n\nconst Editor = (props: IEditor) => {\n\tconst {\n\t\tref,\n\t\twidth,\n\t\theight = \"10em\",\n\t\tplaceholder,\n\t\tautosize,\n\t\tborder = true,\n\t\trichPaste,\n\t\tcontrols = \"simple\",\n\t\tclassName,\n\t\tstyle,\n\t\tonInput,\n\t\tonPaste,\n\t\tonKeyDown,\n\t\t...restProps\n\t} = props;\n\tconst editorRef = useRef<HTMLDivElement>(null);\n\tconst controlBtnProps: IButton = {\n\t\tsquare: true,\n\t\tflat: true,\n\t\tsize: \"small\",\n\t};\n\n\tconst handlePaste = async (e) => {\n\t\tonPaste?.(e);\n\n\t\tif (richPaste) return;\n\t\te.preventDefault();\n\t\tconst text = e.clipboardData.getData(\"text/plain\");\n\t\texec(\"insertText\", false, text);\n\t};\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tswitch (e.key) {\n\t\t\tcase \"Tab\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertHTML\", false, \"	\");\n\t\t\t\tbreak;\n\t\t\tcase \"Enter\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertLineBreak\");\n\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\teditorRef.current.scrollBy({\n\t\t\t\t\ttop: 20,\n\t\t\t\t\tleft: -1000,\n\t\t\t\t});\n\n\t\t\t\tif (!autosize) return;\n\t\t\t\teditorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tsetValue(html) {\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\tconst safeHtml = xss(html, xssOptions);\n\n\t\t\t\teditorRef.current.innerHTML = safeHtml;\n\t\t\t},\n\t\t\tgetSafeValue() {\n\t\t\t\tconst html = editorRef.current?.innerHTML ?? \"\";\n\n\t\t\t\treturn xss(html, xssOptions);\n\t\t\t},\n\t\t};\n\t});\n\n\tconst handleInput = (e) => {\n\t\tlet html = editorRef.current?.innerHTML ?? \"\";\n\n\t\tif ([\"<br>\", \"\\n\"].includes(html) && editorRef.current) {\n\t\t\thtml = \"\";\n\t\t\teditorRef.current.innerHTML = html;\n\t\t}\n\n\t\tonInput?.(html, e);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-editor\", className, {\n\t\t\t\t\"i-editor-borderless\": !border,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\t[autosize ? \"minHeight\" : \"height\"]: height,\n\t\t\t\twidth,\n\t\t\t}}\n\t\t>\n\t\t\t{controls !== \"none\" && (\n\t\t\t\t<div className='i-editor-controls'>\n\t\t\t\t\t{getControls(controls, {\n\t\t\t\t\t\tcontrolBtnProps,\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tref={editorRef}\n\t\t\t\tclassName='i-editor-content'\n\t\t\t\tdata-placeholder={placeholder}\n\t\t\t\tcontentEditable\n\t\t\t\tonPaste={handlePaste}\n\t\t\t\tonInput={handleInput}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Editor;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex: React.FC<IFlex> = (props: IFlex) => {\n\tconst {\n\t\tas: Component = \"div\" as any,\n\t\talign,\n\t\tjustify,\n\t\tdirection,\n\t\twrap,\n\t\tgap,\n\t\tcolumns,\n\t\tclassName,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\") return `repeat(${columns}, 1fr)`;\n\n\t\treturn columns;\n\t}, [columns]);\n\n\treturn (\n\t\t<Component\n\t\t\t{...restProps}\n\t\t\tstyle={{\n\t\t\t\talignItems: align,\n\t\t\t\tjustifyContent: justify,\n\t\t\t\tgap,\n\t\t\t\tflexDirection: direction,\n\t\t\t\tflexWrap: wrap === true ? \"wrap\" : wrap,\n\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t[columns ? \"grid\" : \"flex\"]: true,\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport default Flex;\n","import { createContext } from \"react\";\nimport { IFormInstance } from \"./useForm\";\n\nconst Context = createContext({} as IFormInstance);\n\nexport default Context;\n","import PubSub from \"pubsub-js\";\nimport { uid } from \"radash\";\nimport { useRef } from \"react\";\nimport { IForm, TRule } from \"./type\";\n\nexport class IFormInstance {\n\treadonly id?: string;\n\tdata: Record<string, any> = {};\n\tcacheData: Record<string, any> = {};\n\trules?: Pick<IForm, \"rules\"> = {};\n\n\tconstructor() {\n\t\tthis.id = uid(8);\n\t\tthis.data = {};\n\t}\n\n\tget(field?: string) {\n\t\treturn field ? this.data[field] : this.data;\n\t}\n\n\tset(field: any, value?: any) {\n\t\tconst id = this.id;\n\t\tif (!this.data) return;\n\n\t\tif (typeof field === \"string\") {\n\t\t\tthis.data[field] = value;\n\t\t\tthis.cacheData[field] = value;\n\t\t\tPubSub.publish(`${id}:set:${field}`, value);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(field).map((name) => {\n\t\t\tthis.data[name] = field[name];\n\t\t\tthis.cacheData[name] = field[name];\n\t\t\tPubSub.publish(`${id}:set:${name}`, field[name]);\n\t\t});\n\t}\n\n\tdelete(field) {\n\t\tdelete this.data[field];\n\t}\n\n\tclear() {\n\t\tif (!this.data) return;\n\t\tthis.cacheData = {};\n\n\t\tObject.keys(this.data).map((name) => {\n\t\t\tPubSub.publish(`${this.id}:set:${name}`, undefined);\n\t\t\tthis.data[name] = undefined;\n\t\t});\n\t}\n\n\tasync validate(field?: string) {\n\t\tconst { id, rules, data } = this;\n\t\tif (!rules) return data;\n\n\t\tif (field) {\n\t\t\tconst o = rules[field];\n\t\t\tconst rule: TRule = {\n\t\t\t\tvalidator: (v) =>\n\t\t\t\t\tArray.isArray(v)\n\t\t\t\t\t\t? v.length > 0\n\t\t\t\t\t\t: ![undefined, null, \"\"].includes(v),\n\t\t\t\tmessage: undefined,\n\t\t\t};\n\n\t\t\tif (typeof o === \"function\") {\n\t\t\t\trule.validator = o;\n\t\t\t} else if (o === true) {\n\t\t\t\trule.message = \"required\";\n\t\t\t} else {\n\t\t\t\tObject.assign(rule, o);\n\t\t\t}\n\n\t\t\tconst isValid = rule.validator?.(data[field], this);\n\n\t\t\tif (!isValid) {\n\t\t\t\tPubSub.publish(`${id}:invalid:${field}`, {\n\t\t\t\t\tmessage: rule.message,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\tmessage: null,\n\t\t\t\tstatus: \"normal\",\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tlet isAllValid = true;\n\n\t\tObject.keys(data).map((name) => {\n\t\t\tconst o = rules[name];\n\t\t\tif (o === undefined) return;\n\n\t\t\tconst rule: TRule = {\n\t\t\t\tvalidator: (v) => (Array.isArray(v) ? v.length > 0 : !!v),\n\t\t\t\tmessage: undefined,\n\t\t\t};\n\n\t\t\tif (typeof o === \"function\") {\n\t\t\t\trule.validator = o;\n\t\t\t} else if (o === true) {\n\t\t\t\trule.message = \"required\";\n\t\t\t} else {\n\t\t\t\tObject.assign(rule, o);\n\t\t\t}\n\n\t\t\tconst isValid = rule.validator?.(data[name], this);\n\n\t\t\tif (!isValid) {\n\t\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\t\tmessage: rule.message,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t});\n\t\t\t\tisAllValid = false;\n\t\t\t} else {\n\t\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\t\tmessage: null,\n\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn isAllValid ? Promise.resolve(data) : false;\n\t}\n}\n\nexport default function useForm(form?: IFormInstance) {\n\tconst formRef = useRef<IFormInstance>(null);\n\n\tif (!formRef.current) {\n\t\tformRef.current = form ?? new IFormInstance();\n\t}\n\n\treturn formRef.current;\n}\n","import classNames from \"classnames\";\nimport PubSub from \"pubsub-js\";\nimport { CSSProperties, useEffect, useMemo } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tcolumns = 1,\n\t\tgap = \"1em\",\n\t\tlabelInline,\n\t\tlabelWidth,\n\t\tlabelRight,\n\t\tchildren,\n\t\tonKeyDown,\n\t\tonEnter,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(form.data, form);\n\t};\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\")\n\t\t\treturn `minmax(0, 1fr) `.repeat(columns);\n\n\t\treturn columns;\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\tuseEffect(() => {\n\t\tPubSub.subscribe(`${form.id}:change`, (evt, v) => {\n\t\t\tonChange?.(v.name, v.value);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${form.id}:change`);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<Context value={form}>\n\t\t\t<form\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\tgap,\n\t\t\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t\t\t\"--label-width\": labelWidth,\n\t\t\t\t\t\t\"--label-align\": labelRight ? \"right\" : undefined,\n\t\t\t\t\t} as CSSProperties\n\t\t\t\t}\n\t\t\t\tclassName={classNames(\"i-form\", className, {\n\t\t\t\t\t\"i-form-inline\": labelInline,\n\t\t\t\t})}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n","import { useKeydown } from \"@/packages/js/hooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Button from \"../button\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { CompositionModal, IModal, IModalContent } from \"./type\";\n\nfunction DefaultContent(props: IModalContent) {\n\tconst {\n\t\ttitle,\n\t\tfooter,\n\t\thideCloseButton,\n\t\tfooterLeft,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\tonOk,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst handleOk = async () => {\n\t\tconst ret = await onOk?.();\n\n\t\tif (ret) return;\n\n\t\tonClose?.();\n\t};\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign(\n\t\t\t{\n\t\t\t\tchildren: \"确定\",\n\t\t\t\tonClick: handleOk,\n\t\t\t},\n\t\t\tokButtonProps\n\t\t);\n\t\tconst propsCancel = Object.assign(\n\t\t\t{\n\t\t\t\tsecondary: true,\n\t\t\t\tchildren: \"关闭\",\n\t\t\t\tonClick: onClose,\n\t\t\t},\n\t\t\tcancelButtonProps\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{footerLeft}\n\t\t\t\t<Button {...propsOk} />\n\t\t\t\t<Button {...propsCancel} />\n\t\t\t</>\n\t\t);\n\t}, [footer, okButtonProps, cancelButtonProps]);\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t<header className='i-modal-header'>\n\t\t\t\t\t{title && <b>{title}</b>}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\tclassName='i-modal-close'\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<div className='i-modal-content'>{children}</div>\n\n\t\t\t<footer className='i-modal-footer'>{renderFooter}</footer>\n\t\t</>\n\t);\n}\n\nfunction Modal(props: IModal) {\n\tconst {\n\t\tvisible,\n\t\ttitle,\n\t\tfooter,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tclosable = true,\n\t\thideBackdrop,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tdisableEsc,\n\t\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\thideShadow,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tkeepDOM,\n\t\tfooterLeft,\n\t\tonClick,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\tonOk,\n\t\t...restProps\n\t} = props;\n\tconst [show, setShow] = useState(visible);\n\tconst [active, setActive] = useState(false);\n\tconst [bounced, setBounced] = useState(false);\n\tconst toggable = useRef(true);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\t(!keepDOM || !show) && setShow(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tsetActive(true);\n\t\t\tonVisibleChange?.(true);\n\t\t\ttoggable.current = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tif (!closable) {\n\t\t\tsetBounced(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetBounced(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t}, 400);\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tsetTimeout(() => {\n\t\t\t!keepDOM && setShow(false);\n\t\t\ttoggable.current = true;\n\t\t\tonVisibleChange?.(false);\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{ disabled: disableEsc }\n\t);\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tif (!show) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-modal-container\",\n\t\t\t\t{\n\t\t\t\t\t\"i-modal-backdrop\": !hideBackdrop,\n\t\t\t\t\t\"i-modal-customized\": customized,\n\t\t\t\t\t\"i-modal-active\": active,\n\t\t\t\t\tfixed,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\tonClick={handleBackdropClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-modal\", {\n\t\t\t\t\tbounced,\n\t\t\t\t\tshadow: !hideShadow,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tdocument.documentElement.click();\n\t\t\t\t\tonClick?.(e);\n\t\t\t\t}}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{customized && children}\n\n\t\t\t\t{!customized && (\n\t\t\t\t\t<DefaultContent\n\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\thideCloseButton={hideCloseButton}\n\t\t\t\t\t\tfooter={footer}\n\t\t\t\t\t\tokButtonProps={okButtonProps}\n\t\t\t\t\t\tcancelButtonProps={cancelButtonProps}\n\t\t\t\t\t\tchildren={children}\n\t\t\t\t\t\tfooterLeft={footerLeft}\n\t\t\t\t\t\tonOk={onOk}\n\t\t\t\t\t\tonClose={handleHide}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body\n\t);\n}\n\nexport default Modal as CompositionModal;\n","import { useReactive } from \"ahooks\";\nimport PubSub from \"pubsub-js\";\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from \"react\";\nimport Context from \"./context\";\nimport { IField } from \"./type\";\n\nfunction Field(props: IField) {\n\tconst { name, required, children } = props;\n\tconst state = useReactive({\n\t\tvalue: undefined,\n\t\tstatus: \"normal\",\n\t\tmessage: undefined,\n\t\tupdate: 0,\n\t});\n\tconst form = useContext(Context);\n\tconst { id } = form;\n\n\tconst handleChange = (v) => {\n\t\tif (!name) return;\n\n\t\tform.set(name, v);\n\t\tPubSub.publish(`${id}:change`, {\n\t\t\tname,\n\t\t\tvalue: v,\n\t\t});\n\t};\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node) => {\n\t\t\tif (!isValidElement(node)) return null;\n\n\t\t\tconst { onChange } = node.props as any;\n\t\t\tconst { value, status, message } = state;\n\n\t\t\treturn cloneElement(node, {\n\t\t\t\tvalue,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t\trequired,\n\t\t\t\tonChange: (...args) => {\n\t\t\t\t\thandleChange(args[0]);\n\t\t\t\t\tonChange?.(...args);\n\t\t\t\t\tObject.assign(state, {\n\t\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t\t\tmessage: undefined,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t} as any);\n\t\t});\n\t}, [children, state.update]);\n\n\tuseEffect(() => {\n\t\tif (!name) return;\n\n\t\tPubSub.subscribe(`${id}:set:${name}`, (evt, v) => {\n\t\t\tstate.value = v;\n\t\t\tstate.update += 1;\n\t\t});\n\t\tPubSub.subscribe(`${id}:invalid:${name}`, (evt, v) => {\n\t\t\tObject.assign(state, v);\n\t\t\tstate.update += 1;\n\t\t});\n\n\t\tPromise.resolve().then(() => {\n\t\t\tform.set(name, form.cacheData[name] ?? undefined);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${id}:set:${name}`);\n\t\t\tPubSub.unsubscribe(`${id}:invalid:${name}`);\n\t\t\tform.delete(name);\n\t\t};\n\t}, [name, children]);\n\n\tif (!name) return children;\n\n\treturn hijackChildren;\n}\n\nexport default Field;\n","import { useReactive } from \"ahooks\";\nimport { RefObject, useImperativeHandle } from \"react\";\nimport Modal from \"./modal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nconst HookModal = (\n\tprops: IModal & { ref?: RefObject<RefHookModal | null> }\n) => {\n\tconst { ref } = props;\n\tconst state = useReactive<IModal>({});\n\n\tconst mergedProps = Object.assign({}, props, state);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tupdate: (config: IModal = {}) => {\n\t\t\tObject.assign(state, config);\n\t\t},\n\n\t\tclose: () => {\n\t\t\tstate.visible = false;\n\n\t\t\tif (mergedProps.closable) return;\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tstate.visible = true;\n\t\t\t});\n\t\t},\n\t}));\n\n\treturn <Modal {...mergedProps} />;\n};\n\nexport default HookModal;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { CompositionText, IText } from \"./type\";\n\nconst Text = (props: IText) => {\n\tconst {\n\t\tas: Tag = \"span\",\n\t\tsize,\n\t\tweight,\n\t\tdecoration,\n\t\tgradient,\n\t\twave,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\tconst gradients = useMemo(() => {\n\t\tif (!gradient || !Array.isArray(gradient)) return {};\n\n\t\treturn {\n\t\t\tbackgroundImage: `-webkit-linear-gradient(${gradient.join(\",\")})`,\n\t\t\tbackgroundClip: \"text\",\n\t\t};\n\t}, [gradient]);\n\n\treturn (\n\t\t<Tag\n\t\t\tstyle={{\n\t\t\t\tfontSize: size,\n\t\t\t\tfontWeight: weight,\n\t\t\t\ttextDecoration: decoration,\n\t\t\t\t...gradients,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t\"i-text-gradient\": gradient,\n\t\t\t\t\"i-text-gradient-wave\": wave,\n\t\t\t})}\n\t\t>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport default Text as CompositionText;\n","import Text from \"../text\";\nimport { IProgress } from \"./type\";\n\nexport default function Circle(\n\tprops: Pick<IProgress, \"value\" | \"circleSize\" | \"lineWidth\">\n) {\n\tconst { value, circleSize = 40, lineWidth = 8 } = props;\n\n\treturn (\n\t\t<div className='i-progress-circle'>\n\t\t\t<svg width={circleSize} height={circleSize}>\n\t\t\t\t<circle\n\t\t\t\t\tcx={circleSize / 2}\n\t\t\t\t\tcy={circleSize / 2}\n\t\t\t\t\tr={circleSize / 2 - lineWidth / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--background-opacity-2)'\n\t\t\t\t\tstrokeWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t\t<circle\n\t\t\t\t\tcx={circleSize / 2}\n\t\t\t\t\tcy={circleSize / 2}\n\t\t\t\t\tr={circleSize / 2 - lineWidth / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--color-main)'\n\t\t\t\t\tstrokeWidth={lineWidth}\n\t\t\t\t\tstrokeDasharray={100}\n\t\t\t\t\tpathLength={100}\n\t\t\t\t\tclassName='i-progress-circle-path'\n\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tstrokeDashoffset: `calc(100 - ${value})`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</svg>\n\n\t\t\t<span className='i-progress-circle-value'>\n\t\t\t\t<span>{value}</span>\n\t\t\t\t<Text size='.81em' className='color-7'>\n\t\t\t\t\t%\n\t\t\t\t</Text>\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n","import HighLight from \"./highlight\";\nimport Number from \"./number\";\nimport Text from \"./text\";\nimport Time from \"./time\";\n\nText.Number = Number;\nText.Time = Time;\nText.HighLight = HighLight;\n\nexport default Text;\n","import { animate, formatNumber } from \"@p/js/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Text from \"./text\";\nimport { ITextNumber } from \"./type\";\n\nexport default function Number(props: ITextNumber) {\n\tconst {\n\t\tcount,\n\t\tto,\n\t\tdecimal,\n\t\tthousand = \",\",\n\t\tduration = 2400,\n\t\teasing,\n\t\t...restProps\n\t} = props;\n\tconst [n, setN] = useState(count);\n\n\tconst number = useMemo(() => {\n\t\tif (n === undefined) return;\n\n\t\tconst z = n.toFixed(decimal);\n\n\t\tif (!thousand) return z;\n\n\t\treturn formatNumber(n, { precision: decimal, thousand });\n\t}, [n, thousand]);\n\n\tuseEffect(() => {\n\t\tif (count === undefined || to === undefined) return;\n\n\t\tanimate(count, to, duration, (v) => setN(count + v), easing);\n\t}, [to]);\n\n\tuseEffect(() => setN(count), [count]);\n\n\treturn <Text {...restProps}>{number}</Text>;\n}\n","import { formatTime } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextTime } from \"./type\";\n\nexport default function Number(props: ITextTime) {\n\tconst { seconds, zero, units, ...restProps } = props;\n\n\tconst text = useMemo(() => {\n\t\tif (seconds === undefined) return \"\";\n\n\t\treturn formatTime(seconds, {\n\t\t\tzero,\n\t\t\tunits,\n\t\t});\n\t}, [seconds]);\n\n\treturn <Text {...restProps}>{text}</Text>;\n}\n","import { findAll } from \"highlight-words-core\";\nimport { Fragment, useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextHighLight } from \"./type\";\n\nexport default function HighLight(props: ITextHighLight) {\n\tconst {\n\t\tkeyword,\n\t\ttext,\n\t\tescape,\n\t\tcaseSensitive,\n\t\trenderWord = (word) => <mark>{word}</mark>,\n\t\t...restProps\n\t} = props;\n\n\tconst content = useMemo(() => {\n\t\tconst source = text;\n\t\tconst searchWords = typeof keyword === \"string\" ? [keyword] : keyword;\n\n\t\tconst chunks = findAll({\n\t\t\tsearchWords,\n\t\t\ttextToHighlight: text,\n\t\t\tcaseSensitive,\n\t\t\tautoEscape: escape,\n\t\t});\n\n\t\tconst result = chunks.map((chunk, i) => {\n\t\t\tconst { end, highlight, start } = chunk;\n\t\t\tconst word = source.slice(start, end);\n\n\t\t\treturn highlight ? (\n\t\t\t\t<Fragment key={i}>{renderWord(word)}</Fragment>\n\t\t\t) : (\n\t\t\t\tword\n\t\t\t);\n\t\t});\n\n\t\treturn result;\n\t}, [keyword, text, escape, caseSensitive]);\n\n\treturn <Text {...restProps}>{content}</Text>;\n}\n","import classNames from \"classnames\";\nimport { MouseEvent, RefObject } from \"react\";\nimport { IProgress } from \"./type\";\n\nconst Line = (\n\tprops: Pick<\n\t\tIProgress,\n\t\t\"value\" | \"vertical\" | \"lineWidth\" | \"barClass\" | \"renderCursor\"\n\t> & {\n\t\tref: RefObject<HTMLDivElement | null>;\n\t\tdragging: boolean;\n\t\tonMouseDown: (e: MouseEvent) => void;\n\t\tonTouchStart: (e) => void;\n\t}\n) => {\n\tconst {\n\t\tref,\n\t\tvalue,\n\t\tlineWidth,\n\t\tvertical,\n\t\tbarClass,\n\t\tdragging,\n\t\trenderCursor,\n\t\tonMouseDown,\n\t\tonTouchStart,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-progress\", {\n\t\t\t\t\"i-progress-vertical\": vertical,\n\t\t\t})}\n\t\t\tstyle={{ [vertical ? \"width\" : \"height\"]: lineWidth }}\n\t\t\tonMouseDown={onMouseDown}\n\t\t\tonTouchStart={onTouchStart}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-progress-bar\", barClass, {\n\t\t\t\t\t\"no-transition\": dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{ [vertical ? \"height\" : \"width\"]: `${value}%` }}\n\t\t\t>\n\t\t\t\t{renderCursor && (\n\t\t\t\t\t<a className='i-progress-cursor'>\n\t\t\t\t\t\t{renderCursor(value ?? 0)}\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Line;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tlineWidth = 8,\n\t\tcircleSize = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tvertical,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t\tonDraggingChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\tsize: 0,\n\t\tstart: 0,\n\t});\n\n\tconst pageXY = vertical ? \"pageY\" : \"pageX\";\n\tconst rectTL = vertical ? \"top\" : \"left\";\n\tconst rectWH = vertical ? \"height\" : \"width\";\n\n\tconst toFixedValue = useMemo(() => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t}, [state.value, precision]);\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e[pageXY] - rect[rectTL]) * 100) / rect[rectWH];\n\n\t\tObject.assign(state, {\n\t\t\tvalue: vertical ? 100 - value : value,\n\t\t\tsize: rect[rectWH],\n\t\t\tstart: rect[rectTL],\n\t\t\tdragging: true,\n\t\t});\n\t\tonDraggingChange?.(true);\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, size } = state;\n\t\tconst offset = e[pageXY] - start;\n\n\t\tif (offset < 0 || offset > size) return;\n\n\t\tconst value = ((e[pageXY] - start) * 100) / size;\n\t\tstate.value = vertical ? 100 - value : value;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(toFixedValue);\n\t\tstate.dragging = false;\n\t\tonDraggingChange?.(false);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tvertical={vertical}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tcircleSize={circleSize}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n","import { exitFullScreen, fullScreen } from \"@p/js/utils\";\nimport {\n\tFullscreenExitRound,\n\tFullscreenRound,\n\tPauseRound,\n\tPlayArrowRound,\n\tStopRound,\n\tVolumeDownRound,\n\tVolumeOffRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Progress from \"../progress\";\nimport Text from \"../text\";\nimport \"./index.css\";\nimport { IVideo } from \"./type\";\n\nconst Video = (props: IVideo) => {\n\tconst {\n\t\tref,\n\t\tstyle,\n\t\thideControls,\n\t\tautoplay,\n\t\tmuted,\n\t\tvolume = 50,\n\t\theight,\n\t\twidth,\n\t\tuseOriginControls,\n\t\ttimeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tclassName,\n\t\tonFullScreenChange,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tplaying: autoplay,\n\t\tvolume: muted ? 0 : volume,\n\t\tvolumeCache: 0,\n\t\tmuted,\n\t\tcurrent: 0,\n\t\tduration: 0,\n\t\tisFullscreen: false,\n\t\tcontrolHidden: true,\n\t\tdraggingProgress: false,\n\t});\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst timeUpdateListener = (e) => {\n\t\tconst tar = e.target;\n\t\tif (tar.paused || state.draggingProgress) return;\n\n\t\tObject.assign(state, {\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t};\n\n\tconst playChangeListener = (e) => {\n\t\tstate.playing = !e.target.paused;\n\t};\n\n\tconst fsChangeListener = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\n\t};\n\n\tconst volumeChangeListener = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tvolume: tar.volume * 100,\n\t\t\tmuted: tar.volume === 0,\n\t\t});\n\t};\n\n\tconst handlePlay = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.paused ? v.play() : v.pause();\n\t};\n\n\tconst handleReady = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tduration: tar.duration,\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t\ttar.volume = state.volume / 100;\n\t};\n\n\tconst handleMuted = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tif (v.volume > 0) {\n\t\t\tstate.volumeCache = v.volume;\n\t\t\tv.volume = 0;\n\t\t\treturn;\n\t\t}\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\n\t};\n\n\tconst handleStop = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = 0;\n\t\tv.pause();\n\t};\n\n\tconst handleFullscreen = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\n\t\tonFullScreenChange?.(!state.isFullscreen);\n\t};\n\n\tconst handleUpdateTime = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = (state.duration * t) / 100;\n\t};\n\n\tconst handleUpdateVolume = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tconst showControls = !hideControls && !useOriginControls;\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!showControls || !state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst handleDraggingProgress = (dragging) => {\n\t\tstate.draggingProgress = dragging;\n\t};\n\n\tconst handleMouseMove = throttle({ interval: 900 }, setHiddenFalse);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.pause();\n\t\t},\n\t\tstop: handleStop,\n\t\tfullscreen: handleFullscreen,\n\t\tgetVideo: () => videoRef.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\n\t\tv.addEventListener(\"play\", playChangeListener);\n\t\tv.addEventListener(\"pause\", playChangeListener);\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\n\n\t\treturn () => {\n\t\t\tclearHiddenTO();\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\n\t\t};\n\t}, []);\n\n\tconst currentValue = (state.current / state.duration) * 100;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-video\", className)}\n\t\t\tstyle={{ height, width, ...style }}\n\t\t\tonClick={handlePlay}\n\t\t\tonDoubleClick={() => handleFullscreen()}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tonCanPlay={handleReady}\n\t\t\t\t{...restProps}\n\t\t\t\tcontrols={useOriginControls}\n\t\t\t/>\n\n\t\t\t{showControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tonClick={handleStop}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t</Button>\n\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<Progress\n\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\tvalue={currentValue}\n\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\tonDraggingChange={handleDraggingProgress}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className='i-video-control-volume'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tactive={state.volume <= 0}\n\t\t\t\t\t\t\tafter={\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={<VolumeOffRound />}\n\t\t\t\t\t\t\t\t\tstyle={{ padding: \".125em\" }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={handleMuted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\n\t\t\t\t\t\t<div className='i-video-volume'>\n\t\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\t\tstyle={{ height: 100 }}\n\t\t\t\t\t\t\t\tvertical\n\t\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Video;\n","import Icon from \"@p/components/icon\";\nimport Video from \"@p/components/video\";\nimport { FeedOutlined } from \"@ricons/material\";\nimport { TFileType, TPreviewItem } from \"./type\";\n\nexport default function renderFile(props: TPreviewItem) {\n\tconst { name, suffix, type } = props;\n\n\tswitch (type) {\n\t\tcase TFileType.IMAGE:\n\t\t\treturn <img src={props.src} />;\n\t\tcase TFileType.VIDEO:\n\t\t\treturn <Video {...props} />;\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div className='i-preview-unknown'>\n\t\t\t\t\t<Icon icon={<FeedOutlined />} size='3em' />\n\t\t\t\t\t<h5 className='mt-4'>{name || suffix || \"?\"}</h5>\n\t\t\t\t</div>\n\t\t\t);\n\t}\n}\n","import Button from \"@p/components/button\";\nimport Icon from \"@p/components/icon\";\nimport {\n\tAspectRatioRound,\n\tCloseRound,\n\tFileDownloadOutlined,\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tOpenInNewRound,\n\tRotateLeftRound,\n\tRotateRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useMemo, useRef } from \"react\";\nimport { useMouseMove, useMouseUp } from \"../hooks\";\nimport { getFileType, getSuffixByUrl } from \"../utils\";\nimport DefaultRenderFile from \"./renderFile\";\nimport { IPreview, TFileType, TPreviewItem } from \"./type\";\n\nexport default function Content(props: IPreview) {\n\tconst {\n\t\titems = [],\n\t\tinitial = 0,\n\t\trenderFile = DefaultRenderFile,\n\t\tonRotate,\n\t\tonChange,\n\t\tonClose,\n\t\tonZoom,\n\t} = props;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\trotate: 0,\n\t\tscale: 1,\n\t\ttranslate: [0, 0],\n\t\tstart: [0, 0],\n\t\tdragging: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t\tstate.translate = translate.current = [0, 0];\n\t};\n\n\tconst handleRotate = (deg: number) => {\n\t\tstate.rotate += deg;\n\n\t\tonRotate?.(state.rotate);\n\t};\n\n\tconst handleMouseWheel = throttle({ interval: 60 }, (e) => {\n\t\tif (!isImage) return;\n\t\tlet after = state.scale + (e.deltaY < 0 ? 0.05 : -0.05);\n\t\tif (after > 2) after = 2;\n\t\tif (after < 0.25) after = 0.25;\n\n\t\tonZoom?.(after);\n\t\tstate.scale = after;\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!isImage) return;\n\t\te.preventDefault();\n\t\tstate.dragging = true;\n\t\tstate.start = [e.pageX, e.pageY];\n\t};\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current || state.controlHidden) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst throttleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tconst handleMouseMove = (e) => {\n\t\tthrottleMouseMove();\n\t\tif (!state.dragging) return;\n\t\te.preventDefault();\n\n\t\tconst [x, y] = translate.current;\n\t\tconst [ox, oy] = state.start;\n\t\tconst offsetX = e.pageX - ox;\n\t\tconst offsetY = e.pageY - oy;\n\n\t\tstate.translate = [x + offsetX, y + offsetY];\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging) return;\n\t\tstate.dragging = false;\n\t\ttranslate.current = state.translate;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName={classNames(\"i-preview-content\", {\n\t\t\t\t\t\"no-transition\": state.dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate(${state.translate\n\t\t\t\t\t\t.map((n) => `${n}px`)\n\t\t\t\t\t\t.join(\",\")}) rotate(${state.rotate}deg) scale(${\n\t\t\t\t\t\tstate.scale\n\t\t\t\t\t})`,\n\t\t\t\t}}\n\t\t\t\tonWheel={handleMouseWheel}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-preview-controls\", {\n\t\t\t\t\t\"i-preview-controls-hidden\": state.controlHidden,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Button square flat onClick={onClose}>\n\t\t\t\t\t<Icon icon={<CloseRound />} />\n\t\t\t\t</Button>\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<span className='px-8'>\n\t\t\t\t\t\t{state.current + 1} / {files.length}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{state.scale !== 1 && (\n\t\t\t\t\t<Button flat onClick={() => (state.scale = 1)}>\n\t\t\t\t\t\t<Icon icon={<AspectRatioRound />} />\n\t\t\t\t\t\t<span className='mt-2'>\n\t\t\t\t\t\t\t{(state.scale * 100).toFixed(0)}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button square flat href={file.src} target='_blank'>\n\t\t\t\t\t<Icon icon={<OpenInNewRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat href={file.src} download target='_blank'>\n\t\t\t\t\t<Icon icon={<FileDownloadOutlined />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(90)}>\n\t\t\t\t\t<Icon icon={<RotateRightRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(-90)}>\n\t\t\t\t\t<Icon icon={<RotateLeftRound />} />\n\t\t\t\t</Button>\n\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current - 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current + 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","import HookModal from \"@p/components/modal/hookModal\";\nimport { RefHookModal } from \"@p/components/modal/type\";\nimport { useRef } from \"react\";\nimport { renderNode } from \"../utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPreview } from \"./type\";\n\nexport default function usePreview() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst preview = (config: IPreview) => {\n\t\tconst { items, modalProps, onClose, ...restProps } = config;\n\n\t\tconst handleClose = () => {\n\t\t\tonClose?.();\n\t\t\tunMount?.();\n\t\t};\n\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\tclassName='i-preview'\n\t\t\t\tcustomized\n\t\t\t\thideShadow\n\t\t\t\t{...modalProps}\n\t\t\t\tchildren={\n\t\t\t\t\t<Content\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tonClose={() => {\n\t\t\t\t\t\t\tref.current?.update({ visible: false });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tfixed\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn preview;\n}\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TFileType } from \"@p/js/usePreview/type\";\nimport { HideImageTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport Icon from \"../icon\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionImage, IImage } from \"./type\";\n\nconst Image = (props: IImage) => {\n\tconst {\n\t\tsrc,\n\t\tround,\n\t\tsize,\n\t\tinitSize,\n\t\tlazyload,\n\t\tfallback = (\n\t\t\t<Icon icon={<HideImageTwotone />} size='2em' className='color-5' />\n\t\t),\n\t\tfit,\n\t\tstyle,\n\t\tclassName,\n\t\tcover,\n\t\tcoverClass,\n\t\tusePreview: previewable,\n\t\tonLoad,\n\t\tonError,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{ status?: string }>({\n\t\tstatus: \"loading\",\n\t});\n\tconst ref = useRef<HTMLImageElement>(null);\n\tconst wh = fit ? \"100%\" : undefined;\n\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst preview = usePreview();\n\n\tconst handleError = (err) => {\n\t\tonError?.(err);\n\t\tstate.status = \"error\";\n\t};\n\n\tconst handleLoad = (e) => {\n\t\tonLoad?.(e);\n\t\tstate.status = undefined;\n\t};\n\n\tconst handleClick = (e) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tsrc &&\n\t\t\tpreview({\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\ttype: TFileType.IMAGE,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!src) return;\n\n\t\tif (!ref.current?.complete) {\n\t\t\tstate.status = \"loading\";\n\t\t}\n\n\t\tif (!lazyload || !ref.current) return;\n\n\t\tobserve(ref.current, (tar: HTMLElement, visible: boolean) => {\n\t\t\tif (!visible) return;\n\n\t\t\ttar.setAttribute(\"src\", tar.dataset.src || \"\");\n\t\t\tunobserve(tar);\n\t\t});\n\n\t\treturn () => {\n\t\t\tref.current && unobserve(ref.current);\n\t\t};\n\t}, [src]);\n\n\trestProps[lazyload ? \"data-src\" : \"src\"] = src;\n\tconst iSize = state.status === \"loading\" ? initSize : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: size ?? iSize,\n\t\t\t\theight: size ?? iSize,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(\"i-image\", className, {\n\t\t\t\trounded: round,\n\t\t\t\t[`i-image-${state.status}`]: state.status,\n\t\t\t})}\n\t\t>\n\t\t\t{state.status === \"error\" ? (\n\t\t\t\tfallback\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{src && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={{ objectFit: fit, width: wh, height: wh }}\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\t\t\tonError={handleError}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{src && state.status === \"loading\" && <Loading absolute />}\n\n\t\t\t\t\t{cover && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\"i-image-cover\", coverClass)}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cover}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Image as CompositionImage;\n","import classNames from \"classnames\";\nimport { IInputContainer } from \"./type\";\n\nexport default function InputContainer(props: IInputContainer) {\n\tconst {\n\t\tas: As = \"label\",\n\t\tlabel,\n\t\tclassName,\n\t\tlabelInline,\n\t\tstyle,\n\t\tchildren,\n\t\tstatus,\n\t\ttip,\n\t\trequired,\n\t} = props;\n\n\treturn (\n\t\t<As\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{children}\n\n\t\t\t{tip && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={classNames(\"i-input-message\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{tip}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</As>\n\t);\n}\n","import Image from \"./image\";\nimport List from \"./list\";\n\nImage.List = List;\n\nexport default Image;\n","import usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { getFileType, getSuffixByUrl } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Flex from \"../flex\";\nimport Image from \"./image\";\nimport { IImageList } from \"./type\";\n\nexport default function List(props: IImageList) {\n\tconst {\n\t\titems = [],\n\t\tgap = 8,\n\t\tcolumns,\n\t\twrap,\n\t\tdirection,\n\t\tusePreview: previewable,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\tconst preview = usePreview();\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst handleClick = (e, i) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tpreview({\n\t\t\t\titems: files,\n\t\t\t\tinitial: i,\n\t\t\t});\n\t};\n\n\tif (!files.length) return \"\";\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName='i-image-list'\n\t\t\tgap={gap}\n\t\t\tcolumns={columns}\n\t\t\twrap={wrap}\n\t\t\tdirection={direction}\n\t\t>\n\t\t\t{files.map((img, i) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Image\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tsrc={img.src}\n\t\t\t\t\t\tsize={60}\n\t\t\t\t\t\tusePreview={false}\n\t\t\t\t\t\tonClick={(e) => handleClick(e, i)}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Flex>\n\t);\n}\n","import { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { CompositionInput, IInput } from \"./type\";\n\nconst Input = ((props: IInput) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue = \"\",\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tclear,\n\t\thideVisible,\n\t\tborder,\n\t\trequired,\n\t\tonChange,\n\t\tonEnter,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t\tvisible: false,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\te.code === \"Enter\" && onEnter?.(e);\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (type === \"password\" && !hideVisible) {\n\t\t\tObject.assign(state, {\n\t\t\t\tvisible: !state.visible,\n\t\t\t\ttype: !state.visible ? \"text\" : \"password\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst v = \"\";\n\t\tonChange?.(v);\n\t};\n\n\tconst HelperIcon = useMemo(() => {\n\t\tif (type === \"password\") {\n\t\t\treturn state.visible ? <VisibilityRound /> : <VisibilityOffRound />;\n\t\t}\n\n\t\treturn undefined;\n\t}, [state.visible]);\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\ttype: state.type,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: classNames(\"i-input\", `i-input-${type}`),\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\tconst clearable = clear && state.value;\n\tconst showHelper = type === \"password\" && !!state.value;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t\trequired={required}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive={!!clearable || showHelper}\n\t\t\t\t\ticon={HelperIcon}\n\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t/>\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n}) as CompositionInput;\n\nexport default Input;\n","import Input from \"./input\";\nimport Number from \"./number\";\nimport Range from \"./range\";\nimport Textarea from \"./textarea\";\n\nInput.Textarea = Textarea;\nInput.Number = Number;\nInput.Range = Range;\n\nexport default Input;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = (props: ITextarea) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue,\n\t\tinitValue,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tautoSize,\n\t\tborder,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\tconst refTextarea = useRef<HTMLDivElement>(null);\n\n\tconst handleChange = (\n\t\te: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n\t) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\n\t\tconst ta = refTextarea.current?.firstChild as HTMLElement;\n\t\tif (autoSize && ta) {\n\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t}\n\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.code !== \"Enter\") return;\n\n\t\te.stopPropagation();\n\t\tonEnter?.(e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-textarea\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={refTextarea}\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<textarea {...inputProps} />\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Textarea;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = (props: IInputNumber) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tstep = 1,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\tthousand,\n\t\tprecision,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tappend,\n\t\tborder,\n\t\tprepend,\n\t\tmessage,\n\t\ttip,\n\t\thideControl,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\tonInput,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tstate.value = v;\n\t\tonChange?.(+v, e);\n\t};\n\n\tconst handleOperate = (param: number) => {\n\t\tconst value = formatInputValue(state.value) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\tstate.value = getFormatNumber(result);\n\n\t\tonChange?.(result);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-input-number\",\n\t\tonChange: handleChange,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(-step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Number;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound, SyncAltRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, MouseEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputRange } from \"./type\";\n\nconst Range = (props: IInputRange) => {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tappend,\n\t\tprepend,\n\t\tstep = 1,\n\t\tthousand,\n\t\tprecision,\n\t\thideControl,\n\t\tplaceholder,\n\t\tborder,\n\t\tonChange,\n\t\tonBlur,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>, i: number) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\trange[i] = +v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleOperate = (\n\t\te: MouseEvent<Element>,\n\t\tparam: number,\n\t\ti: number\n\t) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\tconst value = formatInputValue(range[i]) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\trange[i] = getFormatNumber(result);\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleSwitch = (e: MouseEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst range = state.value ? state.value : [];\n\t\tconst v = range[0];\n\t\trange[0] = range[1];\n\t\trange[1] = v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tname,\n\t\tclassName: \"i-input i-input-number\",\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[0] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[0]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 0)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\ticon={<SyncAltRound />}\n\t\t\t\t\tstyle={{ margin: 0 }}\n\t\t\t\t\tonClick={handleSwitch}\n\t\t\t\t/>\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[1] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[1]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 1)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Range;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { ReactNode, isValidElement, useEffect, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport \"./index.css\";\nimport type { IMessage, IMessageItem, THeights, TMessageQueue } from \"./type\";\n\nconst AlignMap = {\n\tleft: \"flex-start\",\n\tcenter: \"center\",\n\tright: \"flex-end\",\n};\n\nconst GlobalConfig = {\n\talign: \"center\",\n\toffset: \"12px\",\n\tgap: 12,\n};\n\nconst ItemDefaultConfig = {\n\tduration: 3000,\n\tclosable: true,\n\tactive: false,\n};\n\nconst container = createContainer();\nconst handler: {\n\toneInstance: null | IMessage;\n\tcallout: (item: IMessage) => void;\n\tclose: () => void;\n} = {\n\toneInstance: null,\n\tcallout(item: IMessage) {},\n\tclose() {},\n};\n\nconst queue: TMessageQueue = {\n\tleft: [],\n\tcenter: [],\n\tright: [],\n};\nconst heights: THeights = {\n\tleft: [],\n\tcenter: [],\n\tright: [],\n};\n\ncreateRoot(container).render(<Messages />);\n\nconst MessageItem = function ({\n\tref,\n\tactive,\n\tcontent,\n\ttop,\n\tclassName,\n\tstyle,\n\tonClick,\n}: IMessageItem) {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-message\", className, {\n\t\t\t\t\"i-message-active\": active,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\ttop,\n\t\t\t}}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t{content}\n\t\t</div>\n\t);\n};\n\nfunction Messages() {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<{\n\t\ttops: THeights;\n\t\titems: TMessageQueue;\n\t}>({\n\t\titems: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t\ttops: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t});\n\tconst offsetTop = {\n\t\tleft: 0,\n\t\tcenter: 0,\n\t\tright: 0,\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(handler, {\n\t\t\tcallout: function (item: IMessage) {\n\t\t\t\tconst { align = \"center\", unshift, onShow } = item;\n\t\t\t\tconst size = queue[align][unshift ? \"unshift\" : \"push\"](item);\n\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\titem.close = this.close.bind(item);\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst h = ref.current?.offsetHeight || 0;\n\n\t\t\t\t\tqueue[align][unshift ? 0 : size - 1].active = true;\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\theights[align][unshift ? \"unshift\" : \"push\"](h);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tonShow?.();\n\t\t\t\t}, 12);\n\n\t\t\t\tif (item.duration !== 0) {\n\t\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\t\tthis.close.call(item);\n\t\t\t\t\t}, item.duration);\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: function () {\n\t\t\t\tconst item = this as IMessage;\n\t\t\t\tconst { align = \"center\", onHide } = item;\n\t\t\t\tconst index = queue[align].findIndex((i) => i.id === item.id);\n\t\t\t\tif (index < 0) return;\n\n\t\t\t\tqueue[align][index].active = false;\n\t\t\t\tstate.items[align] = [...queue[align]];\n\n\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\tconst index = queue[align].findIndex(\n\t\t\t\t\t\t(i) => i.id === item.id\n\t\t\t\t\t);\n\n\t\t\t\t\tqueue[align].splice(index, 1);\n\t\t\t\t\theights[align].splice(index, 1);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\titem.timer && clearTimeout(item.timer);\n\t\t\t\t\tonHide?.();\n\t\t\t\t}, 240);\n\t\t\t},\n\t\t});\n\t}, []);\n\n\tconst renderItems = (item, i) => {\n\t\tif (!item) return <></>;\n\n\t\tconst { id, active, content, align = \"center\", className } = item;\n\t\toffsetTop[align] += state.tops[align][i - 1] || 0;\n\t\tconst top = GlobalConfig.gap * i + offsetTop[align];\n\n\t\treturn (\n\t\t\t<MessageItem\n\t\t\t\tkey={id}\n\t\t\t\tref={ref}\n\t\t\t\tactive={active}\n\t\t\t\tcontent={content}\n\t\t\t\ttop={top}\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{ alignSelf: AlignMap[align] }}\n\t\t\t\tonClick={handler.close.bind(item)}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className='i-messages'>\n\t\t\t{state.items.left.map(renderItems)}\n\t\t\t{state.items.center.map(renderItems)}\n\t\t\t{state.items.right.map(renderItems)}\n\t\t</div>\n\t);\n}\n\nexport function setMessageConfig(config: IMessage) {\n\tObject.assign(GlobalConfig, config);\n}\n\nfunction message(config: IMessage | ReactNode) {\n\tif (\n\t\t[\"string\", \"number\"].includes(typeof config) ||\n\t\tisValidElement(config)\n\t) {\n\t\tconfig = { content: config as ReactNode };\n\t}\n\n\tconfig = Object.assign(\n\t\t{ id: uid(7) },\n\t\tItemDefaultConfig,\n\t\tconfig as IMessage\n\t);\n\n\thandler.callout(config as IMessage);\n\n\treturn {\n\t\tinstance: config,\n\t\tclose: handler.close.bind(config),\n\t};\n}\n\nfunction createContainer() {\n\tconst container = document.createElement(\"div\");\n\tcontainer.dataset.id = \"messages\";\n\tdocument.body.append(container);\n\n\treturn container;\n}\n\nmessage.error = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-error\",\n\t});\n};\n\nmessage.success = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-success\",\n\t});\n};\n\nmessage.warning = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-warning\",\n\t});\n};\n\nmessage.one = (config: IMessage) => {\n\tconst o = handler.oneInstance;\n\n\tif (o) {\n\t\tif (o.active && o.duration !== 0) {\n\t\t\tclearTimeout(o.timer);\n\t\t\to.timer = setTimeout(() => {\n\t\t\t\to.close?.();\n\t\t\t}, o.duration);\n\t\t} else {\n\t\t\thandler.callout(o);\n\t\t}\n\t} else {\n\t\tconst { instance } = message(config);\n\t\thandler.oneInstance = instance;\n\t}\n};\n\nexport default message;\n","import Modal from \"./modal\";\nimport useModal from \"./useModal\";\n\nModal.useModal = useModal;\n\nexport default Modal;\n","import { renderNode } from \"@p/js/utils\";\nimport { useRef } from \"react\";\nimport HookModal from \"./hookModal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nexport default function useModal() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst handleOpen = (props: IModal) => {\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\t{...props}\n\t\t\t\tonClose={() => {\n\t\t\t\t\tprops.onClose?.();\n\t\t\t\t\tunMount?.();\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst handleUpdate = (props: IModal) => {\n\t\tif (!ref.current) return;\n\n\t\tconst { update } = ref.current;\n\t\tupdate(props);\n\t};\n\n\tconst handleClose = () => {\n\t\tif (!ref.current) return;\n\n\t\tconst { close } = ref.current;\n\t\tclose();\n\t};\n\n\treturn {\n\t\topen: handleOpen,\n\t\tupdate: handleUpdate,\n\t\tclose: handleClose,\n\t};\n}\n","import classNames from \"classnames\";\nimport { useState } from \"react\";\nimport Loading from \"../loading\";\nimport { IPageItem } from \"./type\";\n\nconst Page = (props: IPageItem) => {\n\tconst { page, active, children, onChange } = props;\n\tconst [loading, setLoading] = useState(false);\n\n\tconst handleClick = async () => {\n\t\tif (active || loading) return;\n\n\t\tsetLoading(true);\n\t\tawait onChange?.(page);\n\t\tsetLoading(false);\n\t};\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-page\", {\n\t\t\t\t\"i-page-active\": active,\n\t\t\t\t\"i-page-loading\": loading,\n\t\t\t\t\"i-page-disabled\": false,\n\t\t\t})}\n\t\t\tdata-page={page}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{loading && <Loading />}\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n\nexport default Page;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tMoreHorizRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Page from \"./page\";\nimport { IPagination } from \"./type\";\n\nconst Pagination = (props: IPagination) => {\n\tconst {\n\t\tpage: defaultPage = 1,\n\t\tsize = 10,\n\t\ttotal = 0,\n\t\tsibling = 2,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} />,\n\t\tsimple,\n\t\tjumper,\n\t\tclassName,\n\t\trenderEllipsis = () => (\n\t\t\t<Icon icon={<MoreHorizRound />} className='color-7' />\n\t\t),\n\t\trenderPage = (i) => i,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst [page, setPage] = useState(defaultPage);\n\tconst [loading, setLoading] = useState(false);\n\n\tconst totalPage = useMemo(() => Math.ceil(total / size), [size, total]);\n\n\tconst [start, end, loop] = useMemo(() => {\n\t\tconst start = Math.max(1, page - sibling);\n\t\tconst end = Math.min(totalPage, page + sibling);\n\n\t\treturn [\n\t\t\tstart,\n\t\t\tend,\n\t\t\tArray.from({ length: end - start + 1 }).map((n, i) => start + i),\n\t\t];\n\t}, [page, totalPage, sibling]);\n\n\tif (totalPage <= page && page === 1) return <></>;\n\n\tconst handlePageChange = async (p?: number) => {\n\t\tif (!onChange || loading) return;\n\t\tsetLoading(true);\n\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\tif (p === undefined) return;\n\t\t\tawait onChange(p);\n\t\t\tsetPage(p);\n\t\t\tsetLoading(false);\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tuseEffect(() => setPage(defaultPage), [defaultPage]);\n\n\treturn (\n\t\t<div className={classNames(\"i-pagination\", className)} {...restProps}>\n\t\t\t{prev && (\n\t\t\t\t<Page page={page - 1 || 1} onChange={handlePageChange}>\n\t\t\t\t\t{prev}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 1 && (\n\t\t\t\t<Page page={1} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(1)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 2 && renderEllipsis()}\n\n\t\t\t{loop.map((p) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Page\n\t\t\t\t\t\tkey={p}\n\t\t\t\t\t\tpage={p}\n\t\t\t\t\t\tactive={p === page}\n\t\t\t\t\t\tonChange={handlePageChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderPage(p)}\n\t\t\t\t\t</Page>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{end < totalPage - 1 && renderEllipsis()}\n\n\t\t\t{end < totalPage && (\n\t\t\t\t<Page page={totalPage} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(totalPage)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{next && (\n\t\t\t\t<Page page={page + 1} onChange={handlePageChange}>\n\t\t\t\t\t{next}\n\t\t\t\t</Page>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Pagination;\n","import classNames from \"classnames\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { ITag } from \"./type\";\n\nconst Tag = (props: ITag) => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\n\t\thoverShowClose,\n\t\tclassName,\n\t\tchildren,\n\t\tonClose,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<span\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tag\",\n\t\t\t\t{\n\t\t\t\t\t\"i-tag-outline\": outline,\n\t\t\t\t\t\"i-tag-clickable\": onClick,\n\t\t\t\t\t[`i-tag-${size}`]: size !== \"normal\",\n\t\t\t\t\tround,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={onClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{dot && <span className={classNames(\"i-tag-dot\", dotClass)}></span>}\n\n\t\t\t{children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName={classNames(\"i-tag-close\", {\n\t\t\t\t\t\t\"i-tag-hover-close\": hoverShowClose,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={onClose}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\nexport default Tag;\n","import { CheckRound, SearchRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { TOption } from \"../../type\";\nimport Icon from \"../icon\";\nimport List from \"../list\";\nimport Tag from \"../tag\";\nimport Empty from \"../utils/empty\";\nimport { ISelectOptions } from \"./type\";\nexport const Options = (props: ISelectOptions) => {\n\tconst {\n\t\tvalue: val,\n\t\toptions,\n\t\tfilter,\n\t\tfilterPlaceholder,\n\t\tmultiple,\n\t\tempty = <Empty />,\n\t\tonSelect,\n\t\tonFilter,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-select-options\", {\n\t\t\t\t\"i-select-options-multiple\": multiple,\n\t\t\t})}\n\t\t>\n\t\t\t{filter && multiple && (\n\t\t\t\t<div className='i-select-filter'>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<SearchRound />}\n\t\t\t\t\t\tclassName='color-8 ml-8 my-auto'\n\t\t\t\t\t\tsize='1.2em'\n\t\t\t\t\t/>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype='text'\n\t\t\t\t\t\tclassName='i-input'\n\t\t\t\t\t\tplaceholder={filterPlaceholder}\n\t\t\t\t\t\tonChange={onFilter}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{options.length === 0 && empty}\n\n\t\t\t{options.map((option, i) => {\n\t\t\t\tconst { label, value, disabled } = option;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? val?.includes(value)\n\t\t\t\t\t: val === value;\n\n\t\t\t\treturn (\n\t\t\t\t\t<List.Item\n\t\t\t\t\t\tkey={(value as string) || i}\n\t\t\t\t\t\tactive={isActive}\n\t\t\t\t\t\ttype='option'\n\t\t\t\t\t\tonClick={() => onSelect?.(value, option)}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{multiple && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={<CheckRound />}\n\t\t\t\t\t\t\t\tclassName='i-select-option-check'\n\t\t\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</List.Item>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport const activeOptions = (\n\toptions: TOption[] = [],\n\tvalue: any[] = [],\n\tmax = 3\n) => {\n\tconst total = options.flatMap((opt) =>\n\t\tvalue.includes(opt.value) ? [opt] : []\n\t);\n\n\tif (max >= total.length) return total;\n\n\tconst rest = total.length - max;\n\tconst after = total.slice(0, max);\n\tafter.push(rest as any);\n\n\treturn after;\n};\n\nexport const displayValue = (config) => {\n\tconst { options, value, maxDisplay, multiple, onSelect } = config;\n\n\tif (multiple) {\n\t\treturn activeOptions(options, value, maxDisplay).map((opt, i) => {\n\t\t\tif (typeof opt === \"number\") return <Tag key={i}>+{opt}</Tag>;\n\n\t\t\tconst { label, value } = opt;\n\n\t\t\treturn (\n\t\t\t\t<Tag\n\t\t\t\t\tkey={value as string}\n\t\t\t\t\thoverShowClose\n\t\t\t\t\tonClose={(e) => {\n\t\t\t\t\t\te?.stopPropagation();\n\t\t\t\t\t\tonSelect?.(value, opt);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Tag>\n\t\t\t);\n\t\t});\n\t}\n\n\treturn options.find((opt: TOption) => opt.value === value)?.label;\n};\n","import { UnfoldMoreRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport { ChangeEvent, useEffect, useMemo, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport { TOption } from \"../../type\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { Options, displayValue } from \"./options\";\nimport { ISelect } from \"./type\";\n\nconst Select = (props: ISelect) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tname,\n\t\tlabel,\n\t\tvalue = \"\",\n\t\tplaceholder,\n\t\toptions = [],\n\t\tmultiple,\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tstyle,\n\t\tclassName,\n\t\tmessage,\n\t\tstatus = \"normal\",\n\t\thideClear,\n\t\thideArrow,\n\t\tmaxDisplay,\n\t\tborder,\n\t\tfilter,\n\t\ttip,\n\t\tfilterPlaceholder = \"...\",\n\t\tpopupProps,\n\t\tonSelect,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tinputValue: \"\",\n\t\tfilterValue: \"\",\n\t\tvalue,\n\t\tloading: false,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst filterOptions = useMemo(() => {\n\t\tconst { filterValue: fv } = state;\n\t\tif (!fv || !filter) return formattedOptions;\n\n\t\tconst filterFn =\n\t\t\ttypeof filter === \"function\"\n\t\t\t\t? filter\n\t\t\t\t: (opt) => opt.value.includes(fv) || opt.label.includes(fv);\n\n\t\treturn formattedOptions.filter(filterFn);\n\t}, [formattedOptions, filter, state.filterValue]);\n\n\tconst changeValue = (v: any) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSelect = (value: any, option?: TOption) => {\n\t\tonSelect?.(value, option);\n\n\t\tif (multiple) {\n\t\t\tconst values = [...(state.value as any[])];\n\t\t\tconst i = values.findIndex((v) => v === value);\n\n\t\t\ti > -1 ? values.splice(i, 1) : values.push(value);\n\t\t\tchangeValue(values as any);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tchangeValue(value);\n\t};\n\n\tconst handleVisibleChange = (visible: boolean) => {\n\t\tsetActive(visible);\n\n\t\tif (!filter) return;\n\n\t\tstate.filterValue = \"\";\n\t};\n\n\tconst handleHelperClick = (e) => {\n\t\te.stopPropagation();\n\t\tsetActive(true);\n\t\tif (!active) return;\n\n\t\tchangeValue(multiple ? [] : \"\");\n\t};\n\n\tconst handleFilterChange = debounce(\n\t\t{ delay: 400 },\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst v = e.target.value;\n\t\t\tstate.filterValue = v;\n\t\t}\n\t);\n\n\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tstate.filterValue = e.target.value;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst hasValue = multiple\n\t\t? (state.value as any[]).length > 0\n\t\t: !!state.value;\n\tconst clearable = !hideClear && active && hasValue;\n\tconst text = message ?? tip;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t<Popup\n\t\t\t\tposition='bottom'\n\t\t\t\tarrow={false}\n\t\t\t\tfitSize\n\t\t\t\t{...popupProps}\n\t\t\t\tvisible={active}\n\t\t\t\ttrigger='none'\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t\tcontent={\n\t\t\t\t\t<Options\n\t\t\t\t\t\toptions={filterOptions}\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tfilter={!!filter}\n\t\t\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonFilter={handleFilterChange}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t\t\t\"i-input-focus\": active,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={() => setActive(true)}\n\t\t\t\t>\n\t\t\t\t\t{prepend}\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\ttype='hidden'\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{multiple ? (\n\t\t\t\t\t\thasValue ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-input i-select\", {\n\t\t\t\t\t\t\t\t\t\"i-select-multiple\": multiple,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{displayValue({\n\t\t\t\t\t\t\t\t\toptions: formattedOptions,\n\t\t\t\t\t\t\t\t\tvalue: state.value,\n\t\t\t\t\t\t\t\t\tmultiple,\n\t\t\t\t\t\t\t\t\tmaxDisplay,\n\t\t\t\t\t\t\t\t\tonSelect: handleSelect,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\n\t\t\t\t\t{!multiple && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={active ? state.filterValue : state.value}\n\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\tplaceholder={state.value || placeholder}\n\t\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\t\treadOnly={!filter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideArrow}\n\t\t\t\t\t\ticon={clearable ? undefined : <UnfoldMoreRound />}\n\t\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{append}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\n\t\t\t{text && <span className='i-input-message'>{text}</span>}\n\t\t</label>\n\t);\n};\n\nexport default Select;\n","import { CheckRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Button from \"../../button\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Select from \"../../select\";\n\nexport const ColorMethods = {\n\tHEX: \"toHexString\",\n\tRGB: \"toRgbString\",\n\tHSB: \"toHsbString\",\n};\n\nexport default function Footer(props) {\n\tconst { value, type, onTypeChange, onChange, onOk } = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t});\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tstate.type = t;\n\t\tonTypeChange(t);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t\tstate.type = type;\n\t}, [value, type]);\n\n\treturn (\n\t\t<div className='i-colorpicker-footer'>\n\t\t\t<Select\n\t\t\t\treadOnly\n\t\t\t\thideClear\n\t\t\t\thideArrow\n\t\t\t\tstyle={{ width: \"5.6em\" }}\n\t\t\t\toptions={[\"RGB\", \"HEX\", \"HSB\"]}\n\t\t\t\tvalue={state.type}\n\t\t\t\tonChange={handleTypeChange}\n\t\t\t/>\n\t\t\t<Input\n\t\t\t\tplaceholder='color'\n\t\t\t\tvalue={state.value}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\t\t\t<Button square onClick={onOk}>\n\t\t\t\t<Icon icon={<CheckRound />} />\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Handle = (props) => {\n\tconst { ref, color, handle, placeholder, className, ...restProps } = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-colorpicker-handle\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{handle !== \"text\" && (\n\t\t\t\t<i\n\t\t\t\t\tclassName='i-colorpicker-square'\n\t\t\t\t\tstyle={{ background: color }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{handle !== \"square\" && (\n\t\t\t\t<span className='i-colorpicker-text' style={{ color }}>\n\t\t\t\t\t{color ?? placeholder}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Handle;\n","import ColorsPanel from \"@rc-component/color-picker\";\nimport \"@rc-component/color-picker/assets/index.css\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Popup from \"../../popup\";\nimport { IColorPicker } from \"../type\";\nimport Footer, { ColorMethods } from \"./footer\";\nimport Handle from \"./handle\";\nimport \"./index.css\";\n\nexport default function ColorPicker(props: IColorPicker) {\n\tconst {\n\t\tvalue,\n\t\ttype = \"HEX\",\n\t\tdisabledAlpha,\n\t\tchildren,\n\t\tusePanel,\n\t\thandle = \"both\",\n\t\tplaceholder = \"Colors\",\n\t\tpopupProps,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttype,\n\t\tvalue,\n\t\tsyncValue: value,\n\t\tvisible: popupProps?.visible,\n\t});\n\n\tconst handleChange = (target) => {\n\t\tstate.syncValue = target;\n\t};\n\n\tconst handleComplete = (target) => {\n\t\tconst method = ColorMethods[state.type];\n\n\t\tif (target.a !== 1) {\n\t\t\ttarget.a = parseFloat(target.a.toFixed(3));\n\t\t}\n\n\t\tstate.value = target[method]?.();\n\t};\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\tpopupProps?.onVisibleChange?.(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tconst method = ColorMethods[t];\n\n\t\tstate.type = t;\n\t\tstate.value = state.syncValue[method]?.();\n\t};\n\n\tconst handleValueChange = (v) => {\n\t\tstate.value = v;\n\t\tstate.syncValue = v;\n\t};\n\n\tconst handleOk = () => {\n\t\tonChange?.(state.value);\n\t\tstate.visible = false;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.syncValue = value;\n\t\tstate.value = value;\n\t}, [value]);\n\n\tif (usePanel) {\n\t\treturn <ColorsPanel {...props} />;\n\t}\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\ttouchable\n\t\t\tposition='bottom'\n\t\t\t{...popupProps}\n\t\t\tvisible={state.visible}\n\t\t\tcontent={\n\t\t\t\t<ColorsPanel\n\t\t\t\t\tvalue={state.syncValue}\n\t\t\t\t\tdisabledAlpha={disabledAlpha}\n\t\t\t\t\tpanelRender={(panel) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{panel}\n\t\t\t\t\t\t\t\t<Footer\n\t\t\t\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t\t\t\ttype={state.type}\n\t\t\t\t\t\t\t\t\tonTypeChange={handleTypeChange}\n\t\t\t\t\t\t\t\t\tonChange={handleValueChange}\n\t\t\t\t\t\t\t\t\tonOk={handleOk}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonChangeComplete={handleComplete}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children ?? (\n\t\t\t\t<Handle\n\t\t\t\t\tcolor={value}\n\t\t\t\t\thandle={handle}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Popup>\n\t);\n}\n","import classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { ReactNode, useMemo } from \"react\";\nimport { IBaseDates } from \"../type\";\n\nconst Dates = (\n\tprops: IBaseDates & {\n\t\tmonth: any;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tmonth,\n\t\tweeks = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\trenderDate = (date: Dayjs) => date.date(),\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\tconst today = dayjs();\n\n\tconst dates = useMemo(() => {\n\t\tconst dates: Dayjs[] = [];\n\n\t\tconst lastDateOfLastMonth = month.add(-1, \"month\").endOf(\"month\");\n\t\tlet { $W, $D } = lastDateOfLastMonth;\n\n\t\tif ($W !== 0) {\n\t\t\tconst lastMonthDates = Array.from({ length: $W }).map(\n\t\t\t\t(whatever, i) => lastDateOfLastMonth.add(i + 1 - $W, \"day\")\n\t\t\t);\n\t\t\tdates.push(...lastMonthDates);\n\t\t}\n\n\t\tconst lastDate = month.endOf(\"month\");\n\t\t$D = lastDate.$D;\n\t\t$W = lastDate.$W;\n\t\tdates.push(\n\t\t\t...Array.from({ length: $D }).map((whatever, i) =>\n\t\t\t\tlastDate.add(i + 1 - $D, \"day\")\n\t\t\t)\n\t\t);\n\n\t\tif ($W !== 0) {\n\t\t\tdates.push(\n\t\t\t\t...Array.from({ length: 7 - $W }).map((whatever, i) =>\n\t\t\t\t\tlastDate.add(i + 1, \"day\")\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn dates;\n\t}, [month]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\tif (disabledDate?.(date)) return;\n\n\t\tonDateClick?.(date);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className='i-datepicker-weeks'>\n\t\t\t\t{weeks.map((week: ReactNode, i: number) => (\n\t\t\t\t\t<span key={i} className='i-datepicker-week'>\n\t\t\t\t\t\t{week}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className='i-datepicker-dates'>\n\t\t\t\t{dates.map((date, i: number) => {\n\t\t\t\t\tconst active = date.isSame(value, \"day\");\n\t\t\t\t\tconst isSameMonth = date.isSame(month, \"month\");\n\t\t\t\t\tconst isToday = date.isSame(today, \"day\");\n\t\t\t\t\tconst disabled = disabledDate?.(date);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-item\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\": active,\n\t\t\t\t\t\t\t\t\"i-datepicker-same-month\": isSameMonth,\n\t\t\t\t\t\t\t\t\"i-datepicker-today\": isToday,\n\t\t\t\t\t\t\t\t\"i-datepicker-disabled\": disabled,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() => handleDateClick(date)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderDate(date)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default Dates;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { throttle } from \"radash\";\nimport { ReactNode, useEffect, useRef } from \"react\";\nimport Icon from \"../../icon\";\nimport Helpericon from \"../../utils/helpericon\";\nimport { IBaseDates } from \"../type\";\nimport Dates from \"./dates\";\n\nconst MONTHS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\nconst YearMonth = (\n\tprops: IBaseDates & {\n\t\tonClick?: () => void;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tunitMonth = \"月\",\n\t\tunitYear = \"年\",\n\t\trenderYear,\n\t\trenderMonth,\n\t\tonClick,\n\t} = props;\n\n\treturn (\n\t\t<a className='i-datepicker-action' data-ripple onClick={onClick}>\n\t\t\t<span>{renderYear?.(value.year())}</span>\n\t\t\t{unitYear}\n\t\t\t<span>{renderMonth?.(value.month() + 1)}</span>\n\t\t\t{unitMonth}\n\t\t</a>\n\t);\n};\n\nconst Panel = (props: IBaseDates) => {\n\tconst {\n\t\tvalue,\n\t\tunitYear,\n\t\tunitMonth,\n\t\trenderDate,\n\t\trenderMonth = (m: ReactNode) => m,\n\t\trenderYear = (y: ReactNode) => y,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttoday: value,\n\t\tmonth: value || dayjs(),\n\t\tselectedYear: dayjs(),\n\t\tyears: [] as number[],\n\t\tselectable: false,\n\t});\n\n\tconst $years = useRef<HTMLDivElement>(null);\n\n\tconst handleOperateMonth = (next: boolean) => {\n\t\tstate.month = state.month[next ? \"add\" : \"subtract\"](1, \"month\");\n\t};\n\n\tconst handleChangeDate = (date: Dayjs) => {\n\t\tif (date.isSame(state.today, \"day\")) return;\n\n\t\tif (!date.isSame(state.month, \"month\")) {\n\t\t\tstate.month = date;\n\t\t}\n\n\t\tstate.today = date;\n\t\tonDateClick?.(date);\n\t};\n\n\tconst handleChangeMonth = (month: number) => {\n\t\tstate.month = state.month\n\t\t\t.year(state.selectedYear.year())\n\t\t\t.month(month - 1);\n\t\tstate.selectable = false;\n\t};\n\n\tconst getMoreYears = throttle({ interval: 100 }, (e) => {\n\t\tconst isUp = e.deltaY < 0;\n\n\t\tstate.years = state.years.map((y) => (y += isUp ? -1 : 1));\n\t});\n\n\tuseEffect(() => {\n\t\tif (!state.selectable) return;\n\n\t\tstate.selectedYear = state.month;\n\t\tconst y = state.selectedYear.year();\n\t\tconst years = Array.from({ length: 7 }).map((_, i) => y - 3 + i);\n\n\t\tstate.years = [...years];\n\t}, [state.selectable]);\n\n\tuseEffect(() => {\n\t\tstate.today = value;\n\t\tstate.month = value || dayjs();\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-datepicker'>\n\t\t\t<div className='i-datepicker-units'>\n\t\t\t\t<YearMonth\n\t\t\t\t\tvalue={state.month}\n\t\t\t\t\tunitYear={unitYear}\n\t\t\t\t\tunitMonth={unitMonth}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tonClick={() => (state.selectable = true)}\n\t\t\t\t/>\n\t\t\t\t<a\n\t\t\t\t\tclassName='ml-auto i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(false)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t</a>\n\t\t\t\t<a\n\t\t\t\t\tclassName='i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(true)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t</a>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-datepicker-ym\", {\n\t\t\t\t\t\"i-datepicker-active\": state.selectable,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName='i-datepicker-close'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tstate.selectable = false;\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tref={$years}\n\t\t\t\t\tclassName='i-datepicker-years'\n\t\t\t\t\tonWheel={getMoreYears}\n\t\t\t\t>\n\t\t\t\t\t{state.years.map((y) => (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tkey={y}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-year\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\ty === state.selectedYear.year(),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t(state.selectedYear =\n\t\t\t\t\t\t\t\t\tstate.selectedYear.year(y))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderYear(y)}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t<div className='i-datepicker-months'>\n\t\t\t\t\t{MONTHS.map((m) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={m}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-month\", {\n\t\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\t\tm === state.month.month() + 1,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => handleChangeMonth(m)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderMonth(m)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dates\n\t\t\t\tvalue={state.today}\n\t\t\t\tmonth={state.month}\n\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\tonDateClick={handleChangeDate}\n\t\t\t\trenderDate={renderDate}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Panel;\n","import { CalendarMonthTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { IDatePicker } from \"../type\";\nimport \"./index.css\";\nimport Panel from \"./panel\";\n\ndayjs.extend(customParseFormat);\n\nconst FORMATTYPES = [\"YYYY-MM-DD\", \"YYYY-M-D\", \"YYYY/MM/DD\", \"YYYY/M/D\"];\nconst FORMAT = \"YYYY-MM-DD\";\n\nconst Datepicker = (props: IDatePicker) => {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tweeks,\n\t\tformat = FORMAT,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderDate,\n\t\trenderMonth,\n\t\trenderYear,\n\t\tpopupProps,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t\tonChange,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst dayJsValue = useMemo(() => {\n\t\tif (!state.value) return null;\n\n\t\tconst date = dayjs(state.value as string, format, true);\n\n\t\tif (date.isValid()) return date;\n\n\t\treturn null;\n\t}, [state.value]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\thandleChange(date.format(format));\n\t};\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSetDate = () => {\n\t\tif (!state.value) return;\n\n\t\tconst date = dayjs(state.value as string, FORMATTYPES, true);\n\n\t\tif (date.isValid()) {\n\t\t\thandleChange(date.format(format));\n\t\t\treturn;\n\t\t}\n\n\t\thandleChange(\"\");\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleSetDate();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\twatchResize\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={dayJsValue}\n\t\t\t\t\tweeks={weeks}\n\t\t\t\t\trenderDate={renderDate}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\t\tonDateClick={handleDateClick}\n\t\t\t\t/>\n\t\t\t}\n\t\t\t{...popupProps}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<CalendarMonthTwotone />}\n\t\t\t\t\t\tclassName='i-datepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonEnter={handleSetDate}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n};\n\nexport default Datepicker;\n","import classNames from \"classnames\";\n\nexport default function Items(props) {\n\tconst { items = [], active, renderItem, unit, onClick } = props;\n\n\treturn items.map((n) => {\n\t\tconst isActive = n === active;\n\n\t\treturn (\n\t\t\t<a\n\t\t\t\tkey={n}\n\t\t\t\tclassName={classNames(\"i-timepicker-item\", {\n\t\t\t\t\t\"i-timepicker-item-active\": isActive,\n\t\t\t\t})}\n\t\t\t\tonClick={() => onClick(n)}\n\t\t\t>\n\t\t\t\t{renderItem?.(n, isActive, unit) ?? (n < 10 ? `0${n}` : n)}\n\t\t\t</a>\n\t\t);\n\t});\n}\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useMemo } from \"react\";\nimport \"./index.css\";\nimport Items from \"./item\";\n\nconst UnitMaps = {\n\th: \"hour\",\n\thh: \"hour\",\n\tm: \"minute\",\n\tmm: \"minute\",\n\ts: \"second\",\n\tss: \"second\",\n};\n\nexport default function Panel(props) {\n\tconst {\n\t\tvalue,\n\t\tstepH = 1,\n\t\tstepM = 1,\n\t\tstepS = 1,\n\t\tformat,\n\t\tperiods,\n\t\trenderItem,\n\t\tonChange,\n\t\tonFallback,\n\t} = props;\n\tconst state = useReactive<any>({\n\t\tperiod: undefined,\n\t\thour: undefined,\n\t\tminute: undefined,\n\t\tsecond: undefined,\n\t});\n\n\tconst [hours, minutes, seconds] = useMemo(() => {\n\t\tconst hasH = format.includes(\"h\");\n\t\tconst hasM = format.includes(\"m\");\n\t\tconst hasS = format.includes(\"s\");\n\t\tconst hours = hasH\n\t\t\t? Array.from(\n\t\t\t\t\t{ length: (periods ? 12 : 24) / stepH },\n\t\t\t\t\t(_, i) => i * stepH\n\t\t\t )\n\t\t\t: [];\n\t\tconst minutes = hasM\n\t\t\t? Array.from({ length: 60 / stepM }, (_, i) => i * stepM)\n\t\t\t: [];\n\t\tconst seconds = hasS\n\t\t\t? Array.from({ length: 60 / stepS }, (_, i) => i * stepS)\n\t\t\t: [];\n\n\t\treturn [hours, minutes, seconds];\n\t}, [stepH, stepM, stepS, format, periods]);\n\n\tconst updateValue = () => {\n\t\tconst reg = /(hh|h){1}|(mm|m){1}|(ss|s){1}/gi;\n\t\tlet result = format.replace(reg, (pattern) => {\n\t\t\tconst p = pattern.toLowerCase();\n\t\t\tconst u = UnitMaps[p];\n\t\t\tconst n = state[u] ?? 0;\n\n\t\t\treturn p.length > 1 && n < 10 ? `0${n ?? 0}` : n ?? 0;\n\t\t});\n\n\t\tif (periods && hours.length > 0) {\n\t\t\tresult = `${state.period ?? periods[0]} ${result}`;\n\t\t}\n\n\t\tonChange(result);\n\t};\n\n\tconst handleSetTime = (v, unit) => {\n\t\tstate[unit] = v;\n\t\tupdateValue();\n\t};\n\n\tuseEffect(() => {\n\t\tlet time = value ?? \"\";\n\n\t\tif (periods && hours.length > 0 && value) {\n\t\t\tconst [p, t] = value.split(\" \");\n\t\t\ttime = t ?? \"\";\n\t\t\tstate.period = periods.includes(p) ? p : undefined;\n\t\t}\n\n\t\tconst nums = time.match(/\\d+/g) ?? [];\n\n\t\tif (!nums.length) {\n\t\t\tonFallback(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet i = 0;\n\t\tconst r = format.replace(/(hh|h)+|(mm|m)+|(ss|s)+/gi, (p) => {\n\t\t\tconst n = nums[i++] ?? 0;\n\t\t\tlet o = p;\n\n\t\t\tif (UnitMaps[p] === \"hour\") {\n\t\t\t\to = Math.min(periods ? 11 : 23, n);\n\t\t\t}\n\n\t\t\to = Math.min(59, n);\n\n\t\t\tstate[UnitMaps[p]] = o;\n\t\t\treturn p.length > 1 && o < 10 ? `0${o}` : o;\n\t\t});\n\n\t\tonFallback(r);\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-timepicker'>\n\t\t\t{hours.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{periods && (\n\t\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\t\titems={periods}\n\t\t\t\t\t\t\t\tactive={state.period}\n\t\t\t\t\t\t\t\tonClick={(p) => handleSetTime(p, \"period\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\titems={hours}\n\t\t\t\t\t\t\tactive={state.hour}\n\t\t\t\t\t\t\tunit='hour'\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\tonClick={(h) => handleSetTime(h, \"hour\")}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{minutes.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={minutes}\n\t\t\t\t\t\tactive={state.minute}\n\t\t\t\t\t\tunit='minute'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(m) => handleSetTime(m, \"minute\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{seconds.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={seconds}\n\t\t\t\t\t\tactive={state.second}\n\t\t\t\t\t\tunit='second'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(s) => handleSetTime(s, \"second\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { AccessTimeRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { ITimePicker } from \"../type\";\nimport Panel from \"./panel\";\n\nconst FORMAT = \"hh:mm:ss\";\n\nexport default function TimePicker(props: ITimePicker) {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tformat = FORMAT,\n\t\tperiods,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderItem,\n\t\tonChange,\n\t\tonBlur,\n\t\tpopupProps,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\tsafeValue: undefined,\n\t});\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t};\n\n\tconst handleFallback = (v) => {\n\t\tstate.safeValue = v;\n\t};\n\n\tconst handleValidTime = () => {\n\t\tif (!state.value) return;\n\n\t\tstate.value = state.safeValue;\n\t\thandleChange(state.safeValue);\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleValidTime();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\twatchResize\n\t\t\t{...popupProps}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tformat={format}\n\t\t\t\t\tperiods={periods}\n\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonFallback={handleFallback}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<AccessTimeRound />}\n\t\t\t\t\t\tclassName='i-timepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n}\n","import { InfoOutlined } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { MouseEvent } from \"react\";\nimport Button from \"../button\";\nimport { IButton } from \"../button/type\";\nimport Flex from \"../flex\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport { IPopconfirm } from \"./type\";\n\nconst defaultOk = {\n\tchildren: \"确定\",\n};\n\nconst defaultCancel = {\n\tchildren: \"取消\",\n\tsecondary: true,\n};\n\nconst Popconfirm = (props: IPopconfirm) => {\n\tconst {\n\t\ttrigger = \"click\",\n\t\tvisible,\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' />,\n\t\tcontent,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\talign = \"end\",\n\t\tposition = \"top\",\n\t\toffset = 12,\n\t\textra,\n\t\tonOk,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tloading: false,\n\t\tvisible,\n\t});\n\n\tconst ok: IButton = okButtonProps\n\t\t? Object.assign({}, defaultOk, okButtonProps)\n\t\t: defaultOk;\n\tconst cancel: IButton = cancelButtonProps\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\n\t\t: defaultCancel;\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\trestProps.onVisibleChange?.(v);\n\t};\n\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\n\t\tstate.loading = true;\n\t\tok.onClick?.(e);\n\n\t\tonOk?.()\n\t\t\t?.then(() => {\n\t\t\t\tstate.visible = false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tstate.loading = false;\n\t\t\t});\n\t};\n\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\n\t\tcancel.onClick?.(e);\n\t\tawait onClose?.();\n\t\tstate.visible = false;\n\t};\n\n\tconst popconfirmContent = (\n\t\t<div className='i-popconfirm'>\n\t\t\t<Flex gap={12}>\n\t\t\t\t{icon}\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\n\t\t\t</Flex>\n\n\t\t\t<Flex\n\t\t\t\tgap={12}\n\t\t\t\tjustify='flex-end'\n\t\t\t\tclassName='mt-8 i-popconfirm-footer'\n\t\t\t>\n\t\t\t\t{cancelButtonProps !== null && (\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\n\t\t\t\t)}\n\t\t\t\t{extra}\n\t\t\t\t{okButtonProps !== null && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t{...ok}\n\t\t\t\t\t\tonClick={handleOk}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<Popup\n\t\t\tcontent={popconfirmContent}\n\t\t\t{...restProps}\n\t\t\ttrigger={trigger}\n\t\t\tvisible={state.visible}\n\t\t\talign={align}\n\t\t\toffset={offset}\n\t\t\tposition={position}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nexport default Popconfirm;\n","import classNames from \"classnames\";\nimport { ChangeEvent } from \"react\";\nimport { IRadioItem } from \"./type\";\n\nexport default function RadioItem(props: IRadioItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tname,\n\t\tvalue,\n\t\tchecked,\n\t\tdisabled,\n\t\tchildren,\n\t\tonChange,\n\t} = props;\n\tconst isChildrenFn = typeof children === \"function\";\n\n\tconst handleChange = (e: ChangeEvent) => {\n\t\tonChange?.(value, e);\n\t};\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-radio-item\", {\n\t\t\t\tdisabled,\n\t\t\t\t\"i-radio-item-custom\": isChildrenFn,\n\t\t\t})}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype='radio'\n\t\t\t\tname={name}\n\t\t\t\tchecked={checked}\n\t\t\t\tclassName={classNames(\"i-radio-input\", `i-radio-${type}`)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\thidden={isChildrenFn}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t{isChildrenFn ? (\n\t\t\t\tchildren(!!checked, value)\n\t\t\t) : (\n\t\t\t\t<span className='i-radio-text'>{children}</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tstate.value = value;\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\tconst checked = state.value === option.value;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<RadioItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem ?? option.label}\n\t\t\t\t\t\t</RadioItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n","import \"./index.css\";\n\nexport default function Divider() {\n\treturn <i className='i-step-divider' />;\n}\n","import { CheckRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Divider from \"./divider\";\nimport { IStepItem } from \"./type\";\n\nconst STATUS = [\"finished\", \"active\", \"pending\"];\n\nfunction defaultRenderIcon(i: number, status: string) {\n\treturn (\n\t\t<span className='i-step-item-index'>\n\t\t\t{status === \"finished\" ? (\n\t\t\t\t<CheckRound style={{ width: \"1em\", height: \"1.5em\" }} />\n\t\t\t) : (\n\t\t\t\ti + 1\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction Item(props: IStepItem) {\n\tconst {\n\t\tindex = 0,\n\t\tactive = 0,\n\t\trenderIcon = defaultRenderIcon,\n\t\ttitle,\n\t\tvertical,\n\t\tline = <Divider />,\n\t\tasList,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\tconst status = STATUS[index === active ? 1 : index < active ? 0 : 2];\n\n\tconst handleClick = () => {\n\t\tonClick?.(index);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-step-item-${status}`]: !asList,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{vertical ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-left'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='i-step-item-right'>\n\t\t\t\t\t\t<div className='i-step-item-title'>{title}</div>\n\t\t\t\t\t\t{children && (\n\t\t\t\t\t\t\t<div className='i-step-item-content'>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-title'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\n\t\t\t\t\t\t<span>{title}</span>\n\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t{children && (\n\t\t\t\t\t\t<div className='i-step-item-content'>{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, ReactNode, useMemo } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IStep } from \"./type\";\n\nconst Step = (props: IStep) => {\n\tconst {\n\t\tactive = 0,\n\t\tvertical,\n\t\trenderIcon,\n\t\tline,\n\t\tstyle,\n\t\tasList,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\n\tconst steps = useMemo(() => {\n\t\tconst nodes: ReactNode[] = [];\n\t\tlet index = 0;\n\n\t\tChildren.map(children, (el: any) => {\n\t\t\tif (!el || el.type !== Item) return;\n\n\t\t\tconst { props: elProps } = el;\n\n\t\t\tnodes.push({\n\t\t\t\t...el,\n\t\t\t\tprops: {\n\t\t\t\t\trenderIcon,\n\t\t\t\t\tline,\n\t\t\t\t\tonClick,\n\t\t\t\t\t...elProps,\n\t\t\t\t\tvertical,\n\t\t\t\t\tactive,\n\t\t\t\t\tasList,\n\t\t\t\t\tindex: index++,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\treturn nodes;\n\t}, [active, children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step\",\n\t\t\t\t{ \"i-step-vertical\": vertical },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{steps}\n\t\t</div>\n\t);\n};\n\nStep.Item = Item;\n\nexport default Step;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { ISwiperItem } from \"./type\";\n\nfunction Item(props: ISwiperItem) {\n\tconst {\n\t\tindex = 0,\n\t\titemIndex = 0,\n\t\tactive,\n\t\ttype,\n\t\ttransition,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tvertical,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonItemClick,\n\t} = props;\n\n\tconst selfStyle = useMemo(() => {\n\t\tif (type === \"normal\") {\n\t\t\treturn {\n\t\t\t\t[vertical ? \"paddingBlock\" : \"paddingInline\"]: gap / 2,\n\t\t\t\theight: itemHeight,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttransform: `translate(-${index * 100}%, 0)`,\n\t\t\ttransition,\n\t\t};\n\t}, [index, gap, itemHeight, vertical, type]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ ...style, ...selfStyle }}\n\t\t\tclassName={classNames(\"i-swiper-item\", className, {\n\t\t\t\t\"i-swiper-active\": active,\n\t\t\t})}\n\t\t\tdata-index={itemIndex}\n\t\t\tonClick={(e) => onItemClick?.(itemIndex, e)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { clamp } from \"@p/js/utils\";\nimport {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport {\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { CompositionSwiper, ISwiper } from \"./type\";\n\nconst Swiper = ((props: ISwiper) => {\n\tconst {\n\t\tref,\n\t\ttype = \"normal\",\n\t\tinitial = 0,\n\t\tdisplay = 1,\n\t\tscroll = 1,\n\t\tloop = true,\n\t\tvertical,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} size='2em' />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} size='2em' />,\n\t\tduration = 600,\n\t\tinterval = 3000,\n\t\tautoplay,\n\t\tpauseOnHover,\n\t\tarrow = true,\n\t\treverse,\n\t\tdraggable,\n\t\tdragOffset = 40,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tindicator,\n\t\tfixedIndicator,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\n\t\tonItemClick,\n\t} = props;\n\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst transition = `all ${duration / 1000}s`;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\tswipable: true,\n\t\ttransition: type === \"fade\" ? \"none\" : transition,\n\t\tdragStart: 0,\n\t\tdragging: false,\n\t\tinitialized: false,\n\t});\n\n\tconst items = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type !== Item) return;\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\tconst [displayItems, extra, size, total, listSize] = useMemo(() => {\n\t\tconst extra =\n\t\t\ttype === \"normal\" && loop && items.length > display\n\t\t\t\t? display + 1\n\t\t\t\t: 0;\n\t\tlet list: any = [];\n\n\t\tif (extra <= 0) {\n\t\t\tlist = [...items];\n\t\t} else {\n\t\t\tconst head = items.slice(0, extra);\n\t\t\tconst tail = items.slice(-extra);\n\t\t\tlist = [...tail, ...items, ...head];\n\t\t}\n\n\t\tconst listSize = `${(list.length / display) * 100}%`;\n\n\t\treturn [list, extra, items.length, list.length, listSize];\n\t}, [display, loop, type, items]);\n\n\tconst offsetPercent = useMemo(\n\t\t() => (-100 * (state.current + extra)) / total,\n\t\t[state.current, total]\n\t);\n\n\tconst position = useMemo(() => {\n\t\tif (size <= display || type === \"fade\") return;\n\n\t\tconst offset = vertical\n\t\t\t? `0, ${offsetPercent}%`\n\t\t\t: `${offsetPercent}%, 0`;\n\t\treturn `translate3d(${offset}, 0)`;\n\t}, [offsetPercent, vertical, display, size, type]);\n\n\tconst trackStyle = useMemo(() => {\n\t\tif (!vertical || !itemHeight) return;\n\n\t\treturn {\n\t\t\theight: itemHeight * display,\n\t\t};\n\t}, [vertical, itemHeight, display]);\n\n\tconst indicatorsLoop = useMemo(() => {\n\t\treturn Array.from({\n\t\t\tlength: Math.ceil((size - display) / scroll) + 1,\n\t\t});\n\t}, [loop, indicator]);\n\n\tconst clearTimer = () => {\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst swipeTo = (i: number) => {\n\t\tif (!state.swipable || i === state.current) return;\n\t\tstate.swipable = false;\n\t\tonBeforeSwipe?.(state.current);\n\n\t\tlet reset = false;\n\t\tlet next = i;\n\t\tconst lastDisplay = size - display;\n\n\t\tif (loop) {\n\t\t\tif (i > lastDisplay) {\n\t\t\t\treset = true;\n\t\t\t\ti = size;\n\t\t\t\tnext = 0;\n\t\t\t} else if (i < 0) {\n\t\t\t\treset = true;\n\t\t\t\ti = -display;\n\t\t\t\tnext = lastDisplay;\n\t\t\t}\n\t\t} else {\n\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\ti = next;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.swipable = true;\n\t\t}, duration + 32);\n\n\t\tif (type === \"fade\") {\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\treturn;\n\t\t}\n\n\t\tstate.current = i;\n\n\t\tif (!reset) {\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t}, duration + 12);\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.transition = \"none\";\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = transition;\n\t\t\t}, 60);\n\t\t}, duration + 20);\n\t};\n\tconst swipeNext = () => {\n\t\tswipeTo(reverse ? state.current - scroll : state.current + scroll);\n\t};\n\n\tconst swipePrev = () => {\n\t\tswipeTo(reverse ? state.current + scroll : state.current - scroll);\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tObject.assign(state, {\n\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\tdragging: true,\n\t\t\ttransition: \"none\",\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst offset =\n\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\toffsetPercent;\n\n\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t}, 0)`;\n\t};\n\n\tconst handleMouseUp = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\n\t\tif (e.changedTouches) {\n\t\t\te = e.changedTouches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst part =\n\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] / total;\n\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\tconst absOffset = Math.abs(offset);\n\n\t\tif (absOffset > dragOffset) {\n\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\tconst p = base + mod;\n\n\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\tswipeTo(to);\n\t\t}\n\n\t\tlistRef.current.style.transform = position || \"\";\n\n\t\tObject.assign(state, {\n\t\t\tdragging: false,\n\t\t\ttransition,\n\t\t});\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tswipeTo,\n\t\tswipeNext,\n\t\tswipePrev,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (!autoplay) return;\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t};\n\t}, [autoplay, interval]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-swiper\",\n\t\t\t\t{\n\t\t\t\t\t\"i-swiper-vertical\": vertical,\n\t\t\t\t\t\"i-swiper-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-swiper-track'\n\t\t\t\tstyle={trackStyle}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={listRef}\n\t\t\t\t\tclassName={classNames(\"i-swiper-list\", {\n\t\t\t\t\t\t\"i-swiper-fade\": type === \"fade\",\n\t\t\t\t\t})}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t[vertical ? \"height\" : \"width\"]: listSize,\n\t\t\t\t\t\ttransform: position,\n\t\t\t\t\t\ttransition: state.transition,\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t>\n\t\t\t\t\t{displayItems.map((item, i) => {\n\t\t\t\t\t\tconst { props: itemProps } = item;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\titemIndex={(i - extra + size) % size}\n\t\t\t\t\t\t\t\tactive={i - extra === state.current}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\tgap={gap}\n\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\titemHeight={itemHeight}\n\t\t\t\t\t\t\t\tvertical={vertical}\n\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t{...itemProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{arrow && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{(loop || state.current !== 0) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{(loop || state.current < size - display) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{indicator && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-swiper-indicators\", {\n\t\t\t\t\t\t\"i-swiper-indicators-fixed\": fixedIndicator,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{indicatorsLoop.map((_, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-swiper-indicator\", {\n\t\t\t\t\t\t\t\t\t\"i-indicator-active\":\n\t\t\t\t\t\t\t\t\t\ti ===\n\t\t\t\t\t\t\t\t\t\tMath[loop ? \"floor\" : \"ceil\"](\n\t\t\t\t\t\t\t\t\t\t\t((state.current + size) % size) /\n\t\t\t\t\t\t\t\t\t\t\t\tscroll\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => swipeTo(i * scroll)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderIndicator?.(i)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}) as CompositionSwiper;\n\nSwiper.Item = Item;\n\nexport default Swiper;\n","import { ITabItem } from \"./type\";\n\nconst Item = (props: ITabItem) => {\n\treturn <></>;\n};\n\nexport default Item;\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport { MoreHorizRound } from \"@ricons/material\";\nimport { useReactive, useSize } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { pick } from \"radash\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n} from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs, TTabKey } from \"./type\";\n\ntype TState = {\n\tactive?: TTabKey;\n\tprevActive?: TTabKey;\n\tbarStyle: CSSProperties;\n\tcachedTabs: TTabKey[];\n\toverflow: boolean;\n\tmore: ITabItem[];\n\ttabs: ITabItem[];\n};\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\tnavsJustify = \"start\",\n\t\tbar = true,\n\t\thideMore,\n\t\tbarClass,\n\t\trenderMore = () => (\n\t\t\t<Button flat square size='small'>\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\n\t\t\t</Button>\n\t\t),\n\t\tonTabChange,\n\t\t...rest\n\t} = props;\n\n\tconst navRefs = useRef<HTMLElement[]>([]);\n\tconst barRef = useRef<HTMLSpanElement>(null);\n\tconst navsRef = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<TState>({\n\t\tactive,\n\t\tprevActive: undefined,\n\t\tbarStyle: {},\n\t\tcachedTabs: [],\n\t\toverflow: false,\n\t\tmore: [],\n\t\ttabs: [],\n\t});\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst size = useSize(navsRef);\n\n\tuseEffect(() => {\n\t\tif (!items) {\n\t\t\tif (!children) {\n\t\t\t\tstate.tabs = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.tabs = Children.map(children, (node, i) => {\n\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\tkey?: TTabKey;\n\t\t\t\t\tprops?: any;\n\t\t\t\t};\n\t\t\t\tconst { title, children, content, keepDOM } = nodeProps;\n\n\t\t\t\tconst cloned = children\n\t\t\t\t\t? typeof children === \"string\"\n\t\t\t\t\t\t? children\n\t\t\t\t\t\t: pick(children, [\"props\", \"type\", \"$$typeof\", \"ref\"])\n\t\t\t\t\t: content;\n\n\t\t\t\treturn {\n\t\t\t\t\tkey: key || String(i),\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent: cloned,\n\t\t\t\t\tkeepDOM,\n\t\t\t\t};\n\t\t\t}) as ITabItem[];\n\n\t\t\treturn;\n\t\t}\n\n\t\tstate.tabs = items.map((item, i) => {\n\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\n\t\t\t\treturn { key: item, title: item };\n\t\t\t}\n\t\t\tif (item.key === undefined) {\n\t\t\t\titem.key = i;\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t}, [children, items]);\n\n\tconst add = (tab: ITabItem) => {\n\t\tconst { key } = tab;\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i > -1) {\n\t\t\topen(state.tabs[i].key ?? i);\n\t\t\treturn;\n\t\t}\n\n\t\tconst l = state.tabs.length;\n\t\tconst tkey = tab.key ?? l;\n\t\tstate.tabs.push({ ...tab, key: tkey });\n\t\topen(tkey);\n\t};\n\n\tconst close = (key: TTabKey) => {\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i < 0) return;\n\n\t\tstate.tabs.splice(i, 1);\n\n\t\tif (state.active !== key) return;\n\n\t\tconst next = state.tabs[i] || state.tabs[i - 1];\n\t\topen(state.prevActive ?? next?.key ?? \"\");\n\t};\n\n\tconst open = (key: TTabKey) => {\n\t\tif (key === state.active) {\n\t\t\tif (!toggable) return;\n\n\t\t\tonTabChange?.(undefined, key);\n\t\t\tstate.active = undefined;\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\tstate.prevActive = state.active;\n\t\tonTabChange?.(key, state.active);\n\t\tstate.active = key;\n\t};\n\n\tuseEffect(() => {\n\t\tif (!size || hideMore) return;\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n\t\tconst { width, height } = size;\n\n\t\tstate.overflow = scrollHeight > height || scrollWidth > width;\n\n\t\tif (!state.overflow) return;\n\n\t\tnavRefs.current.map((nav, i) => {\n\t\t\tif (!nav) return;\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\n\t\t\t\tif (!state.tabs[i]) return;\n\t\t\t\tstate.tabs[i].intersecting = visible;\n\t\t\t\tstate.more = state.tabs.filter((tab) => !tab.intersecting);\n\t\t\t});\n\t\t});\n\t}, [size, hideMore, state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!bar || type === \"pane\" || state.active === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = state.tabs.findIndex((tab) => tab.key === state.active);\n\n\t\tsetTimeout(() => {\n\t\t\tconst nav = navRefs.current[index];\n\n\t\t\tif (!nav) return;\n\n\t\t\tif (state.tabs[index].keepDOM && state.active) {\n\t\t\t\tconst i = state.cachedTabs.findIndex((k) => k === state.active);\n\t\t\t\ti < 0 && state.cachedTabs.unshift(state.active);\n\t\t\t}\n\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n\t\t\tconst isLine = type === \"line\";\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n\t\t\t};\n\t\t}, 16);\n\t}, [state.active, bar, size]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || state.active === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore) return;\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\n\t\tconst handleMouseWheel = (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\tif (vertical) return;\n\n\t\t\tnavsRef.current?.scrollBy({\n\t\t\t\tleft: e.deltaY + e.deltaX,\n\t\t\t});\n\t\t};\n\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = i, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": state.active === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={state.barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && state.overflow && state.more.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{state.more.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = i, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = state.active === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(state.more)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\tconst { key = i, content } = tab;\n\t\t\t\t\tconst isActive = state.active === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && state.cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n","import { KeyboardArrowDownRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useState } from \"react\";\nimport Checkbox from \"../checkbox\";\nimport Icon from \"../icon\";\nimport { ITree, ITreeHeader, PropsTreeItem } from \"./type\";\n\ninterface ITreeList extends Omit<ITree, \"nodeProps\"> {\n\tnodeProps: {\n\t\tkey: string;\n\t\ttitle: string;\n\t\tchildren: string;\n\t};\n}\n\nexport function TreeList(props: ITreeList) {\n\tconst {\n\t\tdata = [],\n\t\tdepth = 0,\n\t\tround,\n\t\tstyle,\n\t\tclassName,\n\t\tparent,\n\t\tnodeProps,\n\t\t...restProps\n\t} = props;\n\n\tconst contents = data.map((item, i) => {\n\t\tconst { type } = item;\n\t\tconst title = item[nodeProps.title];\n\t\tconst itemKey =\n\t\t\titem[nodeProps.key] ||\n\t\t\t(parent?.key !== undefined ? `${parent.key}-${i}` : `${i}`);\n\n\t\titem.key = itemKey;\n\t\titem.parent = parent;\n\n\t\tif (type === \"title\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className='i-tree-group-title'>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif (type && type !== \"item\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className={`i-tree-type-${type}`}>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TreeItem\n\t\t\t\tkey={itemKey}\n\t\t\t\tindex={i}\n\t\t\t\titem={item}\n\t\t\t\tdepth={depth}\n\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t);\n\t});\n\n\tif (depth > 0) return <>{contents}</>;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree\", className, {\n\t\t\t\t\"i-tree-round\": round,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{contents}\n\t\t</div>\n\t);\n}\n\nconst Header = (props: ITreeHeader) => {\n\tconst { as: Tag = \"a\", href, selected, children, ...restProps } = props;\n\n\tconst className = classNames(\"i-tree-item-header\", {\n\t\t\"i-tree-item-selected\": selected,\n\t});\n\n\tif (typeof Tag === \"string\") {\n\t\treturn (\n\t\t\t<Tag href={href} className={className} {...restProps}>\n\t\t\t\t{children}\n\t\t\t</Tag>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tag to={href || \"\"} className={className} {...restProps}>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport const TreeItem = (props: PropsTreeItem) => {\n\tconst {\n\t\titem,\n\t\tdepth = 0,\n\t\tindex,\n\t\tselected,\n\t\tchecked = [],\n\t\tpartofs = {},\n\t\tcheckable,\n\t\tnodeProps,\n\t\trenderExtra,\n\t\tonItemClick,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\n\tconst { as, key = \"\", href, icon, title, expanded, disabled } = item;\n\tconst children = item[nodeProps.children];\n\n\tconst [expand, setExpand] = useState(expanded);\n\n\tconst handleExpand = (e: MouseEvent<HTMLElement>, fromToggle?: boolean) => {\n\t\tif (fromToggle) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (disabled || !children?.length) return;\n\n\t\tsetExpand((v) => !v);\n\t};\n\n\tconst handleItemClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\thandleExpand(e);\n\t\tonItemClick?.(item, e);\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tconst handleItemCheck = (checked) => onItemCheck?.(item, checked, []);\n\tconst itemChecked = checked.includes(key);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree-item\", {\n\t\t\t\t\"i-tree-expand\": expand,\n\t\t\t})}\n\t\t>\n\t\t\t<Header\n\t\t\t\tas={as}\n\t\t\t\thref={href}\n\t\t\t\tstyle={{ paddingLeft: `${depth * 1.5 + 0.5}em` }}\n\t\t\t\tselected={selected === key}\n\t\t\t\tonClick={handleItemClick}\n\t\t\t>\n\t\t\t\t{checkable && (\n\t\t\t\t\t<Checkbox.Item\n\t\t\t\t\t\tvalue={itemChecked}\n\t\t\t\t\t\tpartof={!itemChecked && partofs[key]}\n\t\t\t\t\t\tclassName='i-tree-checkbox'\n\t\t\t\t\t\tonChange={handleItemCheck}\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{icon && <span className='i-tree-item-icon'>{icon}</span>}\n\n\t\t\t\t<span className='i-tree-item-title'>{title}</span>\n\n\t\t\t\t{renderExtra?.(item)}\n\n\t\t\t\t{children && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<KeyboardArrowDownRound />}\n\t\t\t\t\t\tclassName='i-tree-toggle'\n\t\t\t\t\t\tonClick={(e) => handleExpand(e, true)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Header>\n\n\t\t\t{children?.length && (\n\t\t\t\t<div className='i-tree-item-content'>\n\t\t\t\t\t<TreeList\n\t\t\t\t\t\tdata={children}\n\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\tcheckable={checkable}\n\t\t\t\t\t\tparent={item}\n\t\t\t\t\t\tpartofs={partofs}\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t\t\trenderExtra={renderExtra}\n\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\tonItemSelect={onItemSelect}\n\t\t\t\t\t\tonItemCheck={onItemCheck}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useImperativeHandle } from \"react\";\nimport \"./index.css\";\nimport { TreeList } from \"./item\";\nimport { ITree, ITreeItem } from \"./type\";\n\nconst defaultNodeProps = {\n\tkey: \"key\",\n\ttitle: \"title\",\n\tchildren: \"children\",\n};\n\nconst Tree = (props: ITree) => {\n\tconst {\n\t\tdata = [],\n\t\tref,\n\t\tselected,\n\t\tchecked = [],\n\t\tdisabledRelated,\n\t\tnodeProps,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tselected,\n\t\tchecked,\n\t\tpartofs: {} as Record<string, boolean>,\n\t\tnodeMaps: new Map(),\n\t});\n\tconst oNodeProps = Object.assign({}, defaultNodeProps, nodeProps);\n\n\tconst isChecked = (key?: string) => state.checked.includes(key || \"\");\n\n\tconst checkItem = (\n\t\titem: ITreeItem,\n\t\tchecked: boolean,\n\t\tdirection?: \"root\" | \"leaf\"\n\t) => {\n\t\tconst { key = \"\", parent, children } = item;\n\t\tconst shouldChanged = { [key]: checked };\n\t\tconst partofs = { [key]: false };\n\n\t\tif (disabledRelated) return [shouldChanged];\n\n\t\tif (checked) {\n\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\tconst hasUnchecked = parent.children?.some(\n\t\t\t\t\t(o) => o.key !== key && !isChecked(o.key)\n\t\t\t\t);\n\n\t\t\t\tconst [changes, parts] = checkItem(parent, true, \"root\");\n\n\t\t\t\tif (!hasUnchecked) {\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t}\n\n\t\t\t\tObject.assign(partofs, hasUnchecked ? parts : {}, {\n\t\t\t\t\t[parent.key as string]: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\tchildren.map((o) => {\n\t\t\t\t\tif (isChecked(o.key)) return;\n\n\t\t\t\t\tconst [changes] = checkItem(o, true, \"leaf\");\n\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [shouldChanged, partofs];\n\t\t}\n\n\t\tif (parent && direction !== \"leaf\") {\n\t\t\tconst [changes, parts] = checkItem(parent, false, \"root\");\n\n\t\t\tObject.assign(shouldChanged, changes);\n\n\t\t\tconst hasChecked = parent.children?.some(\n\t\t\t\t(o) => isChecked(o.key) && o.key !== key\n\t\t\t);\n\n\t\t\tObject.assign(partofs, hasChecked ? {} : parts, {\n\t\t\t\t[parent.key as string]: hasChecked,\n\t\t\t\t[key]: false,\n\t\t\t});\n\t\t}\n\t\tif (children?.length && direction !== \"root\") {\n\t\t\tchildren.map((o) => {\n\t\t\t\tconst [changes] = checkItem(o, false, \"leaf\");\n\n\t\t\t\tif (!isChecked(o.key)) return;\n\n\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t});\n\t\t}\n\n\t\treturn [shouldChanged, partofs];\n\t};\n\n\tconst handleCheck = (item: ITreeItem, checked: boolean) => {\n\t\tconst [shouldChanged, partofs] = checkItem(item, checked);\n\t\tconst changedKeys = Object.keys(shouldChanged);\n\n\t\tstate.checked = checked\n\t\t\t? Array.from(new Set([...state.checked, ...changedKeys]))\n\t\t\t: state.checked.filter((k) => !changedKeys.includes(k));\n\n\t\tObject.assign(state.partofs, partofs);\n\n\t\tonItemCheck?.(item, checked, state.checked);\n\t};\n\n\tconst handleSelect = (key: string, item: ITreeItem) => {\n\t\tif (!props.selectable) return;\n\n\t\tstate.selected = key;\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tuseEffect(() => {\n\t\tif (selected === undefined) return;\n\n\t\tstate.selected = selected;\n\t}, [selected]);\n\n\tuseEffect(() => {\n\t\tstate.nodeMaps.clear();\n\n\t\tconst { key, children } = oNodeProps;\n\t\tconst recursive = (nodes) => {\n\t\t\tnodes.map((o) => {\n\t\t\t\tstate.nodeMaps.set(o[key], o);\n\n\t\t\t\to[children]?.length > 0 && recursive(o[children]);\n\t\t\t});\n\t\t};\n\n\t\trecursive(data);\n\t}, [data]);\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tgetChecked: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tstate.checked.map((k) => {\n\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\titems.push(item);\n\t\t\t\t});\n\t\t\t\treturn [state.checked, items];\n\t\t\t},\n\t\t\tgetSelected: () => {\n\t\t\t\tconst item = state.nodeMaps.get(state.selected);\n\t\t\t\treturn [state.selected, item];\n\t\t\t},\n\t\t\tgetPartofs: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tconst keys = Object.keys(state.partofs).filter((k) => {\n\t\t\t\t\tconst indeterminate = state.partofs[k];\n\n\t\t\t\t\tif (indeterminate) {\n\t\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn indeterminate;\n\t\t\t\t});\n\n\t\t\t\treturn [keys, items];\n\t\t\t},\n\t\t};\n\t});\n\n\treturn (\n\t\t<TreeList\n\t\t\tdata={data}\n\t\t\tselected={state.selected}\n\t\t\tchecked={state.checked}\n\t\t\tpartofs={state.partofs}\n\t\t\tnodeProps={oNodeProps}\n\t\t\tonItemCheck={handleCheck}\n\t\t\tonItemSelect={handleSelect}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nexport default Tree;\n","import { TFileType } from \"@p/js/usePreview/type\";\nimport { formatBytes, getFileType } from \"@p/js/utils\";\nimport { ListAltRound } from \"@ricons/material\";\nimport { title } from \"radash\";\nimport { RefObject } from \"react\";\nimport SortableContainer from \"react-easy-sort\";\nimport Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport const ListContainer = (props) => {\n\tconst { sortable, onSortEnd, itemProps, ...restProps } = props;\n\tconst customProps = {\n\t\tclassName: \"i-upload-list\",\n\t\tonClick: (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t};\n\n\tif (!sortable) {\n\t\treturn <div {...customProps} {...restProps} />;\n\t}\n\treturn (\n\t\t<SortableContainer\n\t\t\tdraggedItemClassName='i-upload-item-dragged'\n\t\t\tonSortEnd={onSortEnd}\n\t\t\t{...customProps}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nconst FileListItem = (\n\tprops: IUploadItem & { ref?: RefObject<HTMLDivElement | null> }\n) => {\n\tconst { ref, mode, index, file, renderItem, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\n\tconst { id, name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\n\n\tif (renderItem) {\n\t\treturn renderItem(file, index);\n\t}\n\n\tconst CloseBtn = (\n\t\t<Helpericon\n\t\t\tactive\n\t\t\tclassName='i-upload-delete'\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\tonRemove(index);\n\t\t\t}}\n\t\t/>\n\t);\n\n\tswitch (mode) {\n\t\tcase \"card\":\n\t\t\tlet node = <></>;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase TFileType.IMAGE:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tlazyload\n\t\t\t\t\t\t\tsrc={url || src}\n\t\t\t\t\t\t\tfit='cover'\n\t\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase TFileType.VIDEO:\n\t\t\t\t\tnode = <video src={url || src} preload='none' />;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Icon icon={<ListAltRound />} />\n\t\t\t\t\t\t\t<span className='i-upload-file-name'>\n\t\t\t\t\t\t\t\t{title(name)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttitle={name}\n\t\t\t\t\tclassName='i-upload-item-card'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t{node}\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName='i-upload-item'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t<span>{name}</span>\n\n\t\t\t\t\t<i className='i-upload-size'>{formatBytes(size ?? 0)}</i>\n\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t}\n};\n\nexport default FileListItem;\n","import { arrayMove } from \"@/packages/js/utils\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { PlusSharp } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n\tChangeEvent,\n\tCSSProperties,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { SortableItem } from \"react-easy-sort\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport \"./index.css\";\nimport FileListItem, { ListContainer } from \"./renderFile\";\nimport { IFile, IUpload } from \"./type\";\n\nconst Upload = (props: IUpload) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tinitialFiles,\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tdefaultText = \"Upload\",\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tsortable,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem,\n\t\tshouldUpload = () => true,\n\t\tuploader,\n\t\tonChange,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tfiles,\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst preview = usePreview();\n\n\tconst trigger = useMemo(() => {\n\t\tif (children) return children;\n\n\t\tswitch (mode) {\n\t\t\tcase \"card\":\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-upload-card-btn color-5'\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tflat\n\t\t\t\t\t\toutline\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlusSharp />} />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<Button className='i-upload-btn' disabled={disabled}>\n\t\t\t\t\t\t{defaultText}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t}\n\t}, [mode, children]);\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = Array.from(e.target.files || []) as IFile[];\n\t\tconst { files: before } = state;\n\t\tconst changed: IFile[] = [];\n\n\t\tfiles.map((f) => {\n\t\t\tconst { id, name, size, type } = f;\n\t\t\tconst same = before.find((pf) => {\n\t\t\t\tconst { name: n, size: s, type: t } = pf;\n\t\t\t\treturn n === name && s === size && t === type;\n\t\t\t});\n\t\t\tconst src = URL.createObjectURL(f);\n\n\t\t\tObject.assign(f, {\n\t\t\t\tid: id ?? uid(7),\n\t\t\t\tsrc: src ?? f.name,\n\t\t\t\turl: src ?? f.name,\n\t\t\t});\n\t\t\t!same && changed.push(f);\n\t\t});\n\n\t\tconst after = [...before, ...changed];\n\n\t\tObject.assign(state, {\n\t\t\tfiles: multiple ? after.slice(0, limit) : [after.at(-1)],\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonFilesChange?.(state.files, changed, e);\n\t\tonChange?.(state.files, e);\n\n\t\thandleUpload(changed);\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleRemove = (i: number) => {\n\t\tconst [...files] = state.files;\n\n\t\tconst changed = files.splice(i, 1);\n\t\tURL.revokeObjectURL(changed[0]?.src || \"\");\n\n\t\tstate.files = files;\n\t\tonFilesChange?.(files, changed);\n\t\tonChange?.(files);\n\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleUpload = async (files: IFile[]) => {\n\t\tif (!uploader) return;\n\n\t\tconst shouldUploadFiles = files.filter(shouldUpload);\n\n\t\tconst result = Promise.all(shouldUploadFiles.map(uploader));\n\n\t\treturn onUpload?.(result);\n\t};\n\n\tconst handlePreview = (i: number) => {\n\t\tpreview({ items: state.files as TPreviewItem[], initial: i });\n\t};\n\n\tconst setFileList = (files?: IFile[] | File[]) => {\n\t\tif (!files) return;\n\n\t\tstate.files = files.map((f) => {\n\t\t\treturn { ...f, id: f.id ?? uid(7) };\n\t\t});\n\t};\n\n\tconst handleSortEnd = (before, after) => {\n\t\tconst [...files] = state.files;\n\n\t\tstate.files = arrayMove(files, before, after);\n\t\tonChange?.(state.files);\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\t}, [status, message]);\n\n\tuseEffect(() => {\n\t\tstate.files = value?.filter?.((file) => !!file.id) ?? [];\n\t}, [value]);\n\n\tuseEffect(() => {\n\t\tsetFileList(initialFiles);\n\t}, []);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\n\t\t\tsetFileList,\n\t\t}),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<InputContainer\n\t\t\tas='div'\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={classNames(\"i-input-label-file\", className)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-upload-inner\", {\n\t\t\t\t\t[`i-upload-${mode}`]: mode !== \"default\",\n\t\t\t\t})}\n\t\t\t\tstyle={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n\t\t\t>\n\t\t\t\t<ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\n\t\t\t\t\t{state.files.map((file: IFile, i: number) => {\n\t\t\t\t\t\tconst node = (\n\t\t\t\t\t\t\t<FileListItem\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\tfile={file}\n\t\t\t\t\t\t\t\tmode={mode}\n\t\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\t\tonRemove={handleRemove}\n\t\t\t\t\t\t\t\tonPreview={handlePreview}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!sortable) return node;\n\n\t\t\t\t\t\treturn <SortableItem key={i}>{node}</SortableItem>;\n\t\t\t\t\t})}\n\t\t\t\t</ListContainer>\n\n\t\t\t\t{state.message && (\n\t\t\t\t\t<span className='i-upload-message'>{state.message}</span>\n\t\t\t\t)}\n\n\t\t\t\t{state.files.length < limit && (\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\ttype='file'\n\t\t\t\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{trigger}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Upload;\n"],"names":["TIMEOUT","listener","e","target","parent","closest","$box","$ripple","document","createElement","className","append","createRipple","rect","getBoundingClientRect","size","Math","max","width","height","style","cssText","pageX","left","pageY","top","insertAdjacentElement","offsetHeight","classList","add","setTimeout","remove","triggerRipple","Loading","props","icon","text","absolute","restProps","_jsxs","classNames","inset","children","_jsx","stroke","viewBox","xmlns","fontSize","cx","cy","r","fill","strokeWidth","strokeLinecap","strokeDasharray","strokeDashoffset","formatClass","outline","flat","loading","disabled","block","round","square","secondary","classnames","Button","as","As","ref","href","ripple","onClick","childNodes","key","attrs","undefined","stopPropagation","preventDefault","useEffect","documentElement","dataset","addEventListener","to","Toggle","active","activeClass","after","toggable","onToggle","state","useReactive","done","Object","assign","async","hasAfter","nextActive","toggle","Group","vertical","buttonProps","nodes","useMemo","Children","map","node","type","cloneElement","Icon","rotate","isValidElement","iconProps","transform","ToTop","SkipPreviousRound","Affix","position","right","bottom","offset","getContainer","body","hidden","setHidden","useState","hijackChildren","container","scrollTo","behavior","debounce","delay","scrollTop","removeEventListener","Badge","content","contentClass","dot","dotSize","rounded","Card","hideShadow","border","header","footer","shadow","TFileType","getPosition","$source","$popup","options","refWindow","gap","align","arrowX","arrowY","arrowPos","rectT","rectC","w","window","innerWidth","h","innerHeight","tl","tt","tr","tb","tw","th","ch","cw","rectPa","offsetParent","offsetLeft","offsetTop","y","x","computePosition","containerSize","targetSize","targetOffset","contentSize","xl","xr","R","yt","yb","T","B","getPointPosition","pw","ph","pl","pt","ow","oh","ol","ot","centerPoint","result","formatOption","option","includes","label","value","formatNumber","precision","thousand","toFixed","points","split","integer","replace","length","renderNode","div","root","createRoot","sto","render","unmount","clearTimeout","getSuffixByUrl","url","match","getFileType","suffix","startsWith","formatBytes","bytes","decimals","dm","i","floor","log","parseFloat","pow","clamp","min","CheckboxItem","name","status","message","partof","optionValue","onChange","isChildrenFn","checked","Checkbox","optionInline","labelInline","required","renderItem","formattedOptions","opt","group","findIndex","item","push","splice","handleChange","Item","Helpericon","CloseRound","uid","Collapse","items","multiple","headerClickable","renderToggle","MinusRound","PlusRound","onCollapse","collapses","nodeProps","title","handleToggle","Array","isArray","k","isActive","handleHeaderClick","Empty","InboxTwotone","getCellStyle","justify","col","row","colSpan","rowSpan","gridArea","insetInline","Cell","column","data","cellEllipsis","onCellClick","onCellDoubleClick","id","fixed","onDoubleClick","MouseMoveEvents","Set","MouseUpEvents","KeydownEvents","touchable","EVENTS","MOVE","UP","KEYDOWN","useMouseMove","delete","useMouseUp","useKeydown","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","entry","callback","get","isIntersecting","observe","set","unobserve","disconnect","Resize","index","onWidthChange","resizing","onMouseDown","offsetWidth","values","passive","Arrow","d","Sorter","Row","columns","onRowClick","Header","resizable","sortBy","sortType","onHeaderClick","sorter","renderHeader","order","insetBlockStart","Datagrid","striped","cellPadding","empty","renderLoading","onSort","onScroll","onResize","useRef","scrollbar","rows","widths","styles","o","join","fws","isLeft","sum","slice","reduce","pre","cur","find","sortFn","a","b","sorted","sort","reverse","current","tds","querySelector","from","scrollBarStyle","ScrollContainer","autoHide","autoHeight","autoHeightMax","renderView","ws","prevSortBy","prevSortType","types","t","getNextSorter","Description","colon","labelWidth","labelAlign","equally","gridTemplateColumns","textAlign","Fragment","gridColumn","gridRow","Drawer","visible","backdropClosable","hideCloseButton","keepDOM","disabledEsc","onVisibleChange","onClose","show","init","handleShow","handleHide","code","createPortal","alignItems","List","renderLabel","Content","trigger","arrow","arrowProps","arrowCSS","pos","Popup","showDelay","hideDelay","fitSize","watchResize","clickOutside","referToWindow","triggerRef","contentRef","timerRef","statusRef","tar","isContain","contains","clearTimer","opacity","action","eventMaps","useCreation","click","hover","onMouseEnter","onMouseLeave","focus","onFocus","onBlur","contextmenu","onContextMenu","none","contentTouch","events","ResizeObserver","useResizeObserver","useLayoutEffect","_Fragment","child","keys","evt","fn","ListItem","Dropdown","minWidth","more","moreProps","Li","exec","c","execCommand","xssOptions","onIgnoreTagAttr","tag","substr","escapeAttrValue","fnMap","bold","FormatBoldRound","tip","italic","FormatItalicRound","underline","FormatUnderlinedRound","strike","StrikethroughSRound","redo","RedoRound","undo","UndoRound","clear","ClearAllRound","aliasMap","simple","all","getControls","fns","controlBtnProps","Editor","placeholder","autosize","richPaste","controls","onInput","onPaste","onKeyDown","editorRef","useImperativeHandle","setValue","html","safeHtml","xss","innerHTML","getSafeValue","contentEditable","clipboardData","getData","scrollBy","scrollHeight","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","cacheData","rules","constructor","this","field","PubSub","publish","validate","rule","validator","v","isValid","isAllValid","Promise","resolve","Form","form","initialValues","labelRight","onEnter","repeat","subscribe","unsubscribe","keyCode","DefaultContent","footerLeft","okButtonProps","cancelButtonProps","onOk","showHeader","handleOk","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","disableEsc","customized","setShow","setActive","bounced","setBounced","useForm","formRef","Field","update","useContext","args","then","HookModal","mergedProps","config","close","Text","Tag","weight","decoration","gradient","wave","gradients","backgroundImage","backgroundClip","fontWeight","textDecoration","Circle","circleSize","lineWidth","pathLength","Number","count","decimal","duration","easing","n","setN","number","z","start","performance","now","diff","raf","requestAnimationFrame","loop","percent","cancelAnimationFrame","pass","animate","Time","seconds","zero","units","time","l","unshift","formatTime","HighLight","keyword","escape","caseSensitive","renderWord","word","source","findAll","searchWords","textToHighlight","autoEscape","chunk","end","highlight","Line","barClass","dragging","renderCursor","onTouchStart","Progress","draggable","onDraggingChange","pageXY","rectTL","rectWH","toFixedValue","handleMouseDown","touches","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","controlHidden","draggingProgress","videoRef","hiddenTO","timeUpdateListener","paused","currentTime","playChangeListener","fsChangeListener","parentElement","fullscreenElement","volumeChangeListener","handlePlay","play","pause","handleStop","handleFullscreen","el","exitFullscreen","requestFullscreen","showControls","clearHiddenTO","handleMouseMove","throttle","interval","stop","fullscreen","getVideo","currentValue","onMouseMove","onCanPlay","PauseRound","PlayArrowRound","StopRound","VolumeOffRound","padding","VolumeDownRound","FullscreenExitRound","FullscreenRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","handleSwitch","next","before","handleRotate","deg","handleMouseWheel","deltaY","throttleMouseMove","ox","oy","offsetX","offsetY","onWheel","AspectRatioRound","OpenInNewRound","download","FileDownloadOutlined","RotateRightRound","RotateLeftRound","KeyboardArrowLeftRound","KeyboardArrowRightRound","usePreview","modalProps","unMount","Image","initSize","lazyload","fallback","HideImageTwotone","fit","cover","coverClass","previewable","onLoad","onError","wh","preview","handleClick","complete","setAttribute","iSize","objectFit","err","InputContainer","img","Input","initValue","prepend","hideVisible","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","clearable","showHelper","Textarea","autoSize","refTextarea","ta","firstChild","step","Infinity","hideControl","formatInputValue","replaceAll","handleOperate","param","getFormatNumber","Range","range","SyncAltRound","margin","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","oneInstance","callout","queue","heights","tops","onShow","bind","timer","call","onHide","renderItems","MessageItem","alignSelf","instance","error","success","warning","one","useModal","open","Page","page","setLoading","Pagination","defaultPage","total","sibling","prev","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","handlePageChange","p","dotClass","hoverShowClose","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","rest","activeOptions","Select","hideClear","hideArrow","popupProps","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","ColorMethods","HEX","RGB","HSB","Footer","onTypeChange","Handle","color","handle","background","ColorPicker","disabledAlpha","usePanel","syncValue","handleTypeChange","method","handleValueChange","ColorsPanel","panelRender","panel","onChangeComplete","Dates","month","weeks","renderDate","date","disabledDate","onDateClick","today","dayjs","dates","lastDateOfLastMonth","endOf","$W","$D","lastMonthDates","whatever","lastDate","week","isSame","isSameMonth","isToday","handleDateClick","MONTHS","YearMonth","unitMonth","unitYear","renderYear","renderMonth","year","Panel","m","selectedYear","years","selectable","$years","handleOperateMonth","getMoreYears","isUp","_","handleChangeMonth","extend","customParseFormat","FORMATTYPES","FORMAT","Datepicker","format","dayJsValue","handleSetDate","CalendarMonthTwotone","Items","unit","UnitMaps","hh","mm","s","ss","stepH","stepM","stepS","periods","onFallback","period","hour","minute","second","hours","minutes","hasH","hasM","hasS","handleSetTime","pattern","toLowerCase","updateValue","nums","TimePicker","safeValue","AccessTimeRound","defaultOk","defaultCancel","Popconfirm","InfoOutlined","extra","ok","cancel","popconfirmContent","finally","RadioItem","Radio","Resizable","other","minSize","maxSize","line","asPercent","onResizeComplete","Divider","STATUS","defaultRenderIcon","renderIcon","asList","Step","steps","elProps","itemIndex","transition","itemHeight","onItemClick","selfStyle","Swiper","display","scroll","pauseOnHover","dragOffset","indicator","fixedIndicator","renderIndicator","onBeforeSwipe","onAfterSwipe","listRef","swipable","dragStart","initialized","displayItems","listSize","list","head","offsetPercent","trackStyle","indicatorsLoop","swipeTo","reset","lastDisplay","swipeNext","swipePrev","clientY","clientX","changedTouches","dragEnd","part","absOffset","abs","onMouseOver","itemProps","Tabs","tabs","navsJustify","bar","hideMore","renderMore","onTabChange","navRefs","barRef","navsRef","prevActive","barStyle","cachedTabs","overflow","useSize","cloned","pick","String","tab","tkey","scrollWidth","nav","intersecting","isLine","deltaX","navs","flex","TreeList","depth","contents","itemKey","TreeItem","selected","partofs","checkable","renderExtra","onItemSelect","onItemCheck","expanded","expand","setExpand","handleExpand","fromToggle","itemChecked","paddingLeft","KeyboardArrowDownRound","defaultNodeProps","Tree","disabledRelated","nodeMaps","Map","oNodeProps","isChecked","checkItem","shouldChanged","hasUnchecked","some","changes","parts","hasChecked","recursive","getChecked","getSelected","getPartofs","indeterminate","changedKeys","ListContainer","sortable","onSortEnd","customProps","SortableContainer","draggedItemClassName","FileListItem","mode","onRemove","onPreview","CloseBtn","preload","ListAltRound","Upload","initialFiles","defaultText","cardSize","limit","shouldUpload","uploader","onFilesChange","onUpload","inputRef","PlusSharp","handleRemove","changed","URL","revokeObjectURL","handleUpload","shouldUploadFiles","handlePreview","setFileList","f","getFileList","array","fromIndex","toIndex","arrayMove","SortableItem","same","pf","createObjectURL","at"],"mappings":"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"}
|