@ioca/react 1.1.6 → 1.1.7

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/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/area.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/list/virtual.tsx","../packages/components/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/dropdown/item.tsx","../packages/components/dropdown/dropdown.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/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/number.tsx","../packages/components/input/textarea.tsx","../packages/components/input/index.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): JSX.Element => {\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, forwardRef, 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 = forwardRef<HTMLElement, IButton>((props, ref) => {\n\tconst {\n\t\tas: As = \"a\",\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\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\"]: ripple,\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}) as CompositionButton;\n\nexport default Button;\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, useCallback, useEffect } from \"react\";\nimport Button from \"./button\";\nimport { IButtonToggle } from \"./type\";\n\nexport default function Toggle(props: IButtonToggle) {\n\tconst {\n\t\tactive,\n\t\tactiveClass,\n\t\tafter,\n\t\tdisabled,\n\t\tchildren,\n\t\tclassName,\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 = useCallback(() => {\n\t\tconst hasAfter = after !== undefined;\n\t\tconst nextActive = !state.active;\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\thasAfter &&\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.done = true;\n\t\t\t}, 16);\n\t}, [after]);\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tonClick?.(e);\n\n\t\t!disabled && toggle();\n\t};\n\n\tuseEffect(() => {\n\t\tstate.active !== active && toggle();\n\t}, [active]);\n\n\treturn (\n\t\t<Button\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 { IButtonGroup } from \"./type\";\n\nexport default function Group(props: IButtonGroup) {\n\tconst { children, vertical, className, style } = props;\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{children}\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\nimport { cloneElement, forwardRef, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = forwardRef<HTMLElement, IIcon>((props, ref) => {\n\tconst {\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 elProps = {\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, elProps);\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): JSX.Element => {\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\";\n\nconst Area = (name: string) => (props) =>\n\t(\n\t\t<div\n\t\t\tstyle={props.style}\n\t\t\tclassName={classNames(\"i-card-\" + name, props.className)}\n\t\t>\n\t\t\t{props.children}\n\t\t</div>\n\t);\n\nconst Header = Area(\"header\") as any;\nconst Footer = Area(\"footer\") as any;\nconst Banner = Area(\"banner\") as any;\nconst Tailer = Area(\"tail\") as any;\n\nexport { Banner, Footer, Header, Tailer };\n","import classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport { Banner, Footer, Header, Tailer } from \"./area\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst { shadow = true, border, style, className, children } = props;\n\n\tconst slots: any = useMemo(() => {\n\t\tconst nodes = {};\n\n\t\tChildren.map(children, (child: any) => {\n\t\t\tconst type = child.type;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase Header:\n\t\t\t\t\tnodes[\"header\"] = child;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Footer:\n\t\t\t\t\tnodes[\"footer\"] = child;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Banner:\n\t\t\t\t\tnodes[\"banner\"] = child;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Tailer:\n\t\t\t\t\tnodes[\"tailer\"] = child;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnodes[\"content\"] = [...(nodes[\"content\"] || []), child];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\treturn nodes;\n\t}, [children]);\n\n\tconst { header, banner, content, footer, tailer } = slots;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t>\n\t\t\t{banner}\n\n\t\t\t{header}\n\n\t\t\t{content && <div className='i-card-content'>{content}</div>}\n\n\t\t\t{footer}\n\n\t\t\t{tailer}\n\t\t</div>\n\t);\n};\n\nCard.Header = Header;\nCard.Footer = Footer;\nCard.Banner = Banner;\nCard.Tailer = Tailer;\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\t\t\tif (position === \"left\") {\n\t\t\t\tx = xl < 0 ? tr + offset : xl;\n\t\t\t\tarrowX = xl < 0 ? 0 : cw;\n\t\t\t\tarrowPos = xl < 0 ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tx = w > xr ? tr + offset : xl;\n\t\t\t\tarrowX = w > xr ? 0 : cw;\n\t\t\t\tarrowPos = w > xr ? \"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\ty = yt < 0 ? tb + offset : yt;\n\t\t\t\tarrowY = yt < 0 ? 0 : ch;\n\t\t\t\tarrowPos = yt < 0 ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\ty = h > yb ? tb + offset : yt;\n\t\t\t\tarrowY = h > yb ? 0 : ch;\n\t\t\t\tarrowPos = h > yb ? \"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 { pageX: x, pageY: y } = e;\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst { innerHeight: wh, innerWidth: ww } = window;\n\n\tconst left = x + w >= ww ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= wh ? (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? targetOffset + targetSize\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","import { useMemoizedFn, 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 = useMemoizedFn((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 { useMemoizedFn, 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 = useMemoizedFn((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): JSX.Element => {\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): JSX.Element => {\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;\n\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\n\ndocument.addEventListener(\"mousemove\", (e: MouseEvent) => {\n\tfor (const listener of MouseMoveEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\ndocument.addEventListener(\"mouseup\", (e) => {\n\tfor (const listener of MouseUpEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\nexport function useMouseMove(listener: TMouseEvent) {\n\tuseEffect(() => {\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) {\n\tuseEffect(() => {\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.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 {\n\tCSSProperties,\n\tMouseEvent,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n} 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): JSX.Element => {\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 = useCallback(\n\t\t(i: number, w: number) => {\n\t\t\tif (!resizable) return;\n\n\t\t\tconst [...ws] = state.widths;\n\t\t\tws[i] = w;\n\t\t\tstate.widths = ws;\n\t\t\tonResize?.(columns[i], w);\n\t\t},\n\t\t[resizable]\n\t);\n\n\tconst handleHeaderClick = useCallback(\n\t\t(column?: IColumn, e?: MouseEvent) => {\n\t\t\tif (column?.sorter) {\n\t\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\t\tstate.sortBy,\n\t\t\t\t\tstate.sortType,\n\t\t\t\t\tcolumn.id\n\t\t\t\t);\n\n\t\t\t\tObject.assign(state, {\n\t\t\t\t\tsortBy,\n\t\t\t\t\tsortType,\n\t\t\t\t});\n\n\t\t\t\tonSort?.(sortBy, sortType);\n\t\t\t}\n\n\t\t\tonHeaderClick?.(column, e);\n\t\t},\n\t\t[]\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): JSX.Element => {\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 classNames from \"classnames\";\nimport { useCallback, useEffect, useRef, useState } 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\tclassName,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\tconst [show, setShow] = useState(visible);\n\tconst [active, setActive] = useState(visible);\n\tconst toggable = useRef(true);\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleShow = useCallback(() => {\n\t\tif (!toggable.current) return;\n\n\t\tsetShow(true);\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tsetActive(true);\n\t\t\ttoggable.current = true;\n\t\t}, 24);\n\t}, []);\n\n\tconst handleHide = useCallback(() => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tsetActive(false);\n\t\tsetTimeout(() => {\n\t\t\tsetShow(false);\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 = useCallback(function () {\n\t\tbackdropClosable && handleHide();\n\t}, []);\n\n\treturn createPortal(\n\t\tshow && (\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\t\"i-active\": 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 { forwardRef } from \"react\";\nimport { IListItem } from \"./type\";\n\nconst Item = forwardRef<HTMLLIElement, IListItem>((props, ref) => {\n\tconst {\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, Fragment } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\nimport Virtual from \"./virtual\";\n\nconst List = (props: IList): JSX.Element => {\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\tif (node.type === Fragment) return node;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t...node.props,\n\t\t\t\t\ttype,\n\t\t\t\t});\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Virtual = Virtual;\nList.Item = Item;\n\nexport default List;\n","import VList from \"rc-virtual-list\";\nimport { IVirtual } from \"./type\";\n\nconst Virtual = (props: IVirtual) => {\n\tconst { data, itemKey, renderItem, ...restProps } = props;\n\n\treturn (\n\t\t<VList data={data} itemKey={itemKey} {...restProps}>\n\t\t\t{(item, i) => {\n\t\t\t\treturn renderItem?.(item, i);\n\t\t\t}}\n\t\t</VList>\n\t);\n};\n\nexport default Virtual;\n","import classNames from \"classnames\";\nimport { forwardRef, useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IPopupContent } from \"./type\";\n\nconst Content = forwardRef<HTMLDivElement, IPopupContent>((props, ref) => {\n\tconst {\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 { useResizeObserver } from \"@p/js/hooks\";\nimport { getPointPosition, getPosition } from \"@p/js/utils\";\nimport { useClickAway, 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 state = useReactive<{\n\t\tshow: boolean;\n\t\ttoggling: any;\n\t\tstyle: CSSProperties;\n\t\tarrowProps: Record<string, any>;\n\t}>({\n\t\tshow: false,\n\t\ttoggling: false,\n\t\tstyle: { position: fixed ? \"fixed\" : \"absolute\" },\n\t\tarrowProps: {},\n\t});\n\n\tuseClickAway((e: Event) => {\n\t\tif (!clickOutside) return;\n\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst isContain = triggerRef.current?.contains(tar);\n\n\t\tif (!state.show) return;\n\n\t\t(!isContain || trigger === \"contextmenu\") && handleToggle(false);\n\t}, contentRef);\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\n\t\tstate.toggling && clearTimeout(state.toggling);\n\t\tstate.toggling = setTimeout(() => {\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\tstate.toggling && clearTimeout(state.toggling);\n\t\t\tonVisibleChange?.(true);\n\t\t}, showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!state.show) return;\n\t\tstate.toggling = setTimeout(() => {\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\tstate.toggling && clearTimeout(state.toggling);\n\t\t\t\tonVisibleChange?.(false);\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\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\tstate.toggling = 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\tstate.toggling && clearTimeout(state.toggling);\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\"] = () => handleToggle(true);\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 { type, props } = child;\n\n\t\t\t\tif (typeof type === \"function\") return child;\n\n\t\t\t\tconst { className, ...restProps } = props;\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, ...restProps } = props;\n\tconst Li = <ListItem {...restProps} />;\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): JSX.Element => {\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 classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex = (props: IFlex): JSX.Element => {\n\tconst {\n\t\tas: Component = \"div\",\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 ? data : false;\n\t}\n}\n\nexport default function useForm(form?: IFormInstance) {\n\tconst formRef = useRef<IFormInstance>();\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 } 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): JSX.Element => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\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\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.Provider value={form}>\n\t\t\t<form\n\t\t\t\tstyle={{ ...style, width }}\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.Provider>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n","import classNames from \"classnames\";\nimport { useCallback, 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\t\tchildren: \"确定\",\n\t\t\tonClick: props.onOk,\n\t\t},\n\t\tcancelButtonProps = {\n\t\t\tsecondary: true,\n\t\t\tchildren: \"关闭\",\n\t\t\tonClick: props.onClose,\n\t\t},\n\t\tchildren,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign({}, okButtonProps);\n\t\tconst propsCancel = Object.assign({}, cancelButtonProps);\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\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\tshadow = true,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tfooterLeft,\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 = useCallback(() => {\n\t\tif (!toggable.current) return;\n\n\t\tsetShow(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 = useCallback(() => {\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\tsetShow(false);\n\t\t\ttoggable.current = true;\n\t\t\tonVisibleChange?.(false);\n\t\t\tonClose?.();\n\t\t}, 240);\n\t}, [closable]);\n\n\tconst handleBackdropClick = useCallback(\n\t\tfunction () {\n\t\t\tbackdropClosable && handleHide();\n\t\t},\n\t\t[closable, backdropClosable]\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,\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) => e.stopPropagation()}\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 { forwardRef, useImperativeHandle } from \"react\";\nimport Modal from \"./modal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nconst HookModal = forwardRef<RefHookModal, IModal>((props, ref) => {\n\tconst state = useReactive<IModal>({});\n\n\tuseImperativeHandle(ref, () => ({\n\t\tupdate: (config: IModal = {}) => {\n\t\t\tObject.assign(state, config);\n\t\t},\n\t}));\n\n\treturn <Modal {...props} {...state} />;\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\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\tbackground: `-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})}\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\" | \"height\" | \"size\">\n) {\n\tconst { value, height = 40, size = 8 } = props;\n\n\treturn (\n\t\t<div className='i-progress-circle'>\n\t\t\t<svg width={height} height={height}>\n\t\t\t\t<circle\n\t\t\t\t\tcx={height / 2}\n\t\t\t\t\tcy={height / 2}\n\t\t\t\t\tr={height / 2 - size / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--background-opacity-2)'\n\t\t\t\t\tstrokeWidth={size}\n\t\t\t\t/>\n\t\t\t\t<circle\n\t\t\t\t\tcx={height / 2}\n\t\t\t\t\tcy={height / 2}\n\t\t\t\t\tr={height / 2 - size / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--color-main)'\n\t\t\t\t\tstrokeWidth={size}\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 Number from \"./number\";\nimport Text from \"./text\";\nimport Time from \"./time\";\n\nText.Number = Number;\nText.Time = Time;\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 classNames from \"classnames\";\nimport { MouseEvent, forwardRef } from \"react\";\nimport { IProgress } from \"./type\";\n\nconst Line = forwardRef<\n\tHTMLDivElement,\n\tPick<IProgress, \"value\" | \"size\" | \"barClass\" | \"renderCursor\"> & {\n\t\tdragging: boolean;\n\t\tonMouseDown: (e: MouseEvent) => void;\n\t}\n>((props, ref) => {\n\tconst { value, size, barClass, dragging, renderCursor, onMouseDown } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName='i-progress'\n\t\t\tstyle={{ height: size }}\n\t\t\tonMouseDown={onMouseDown}\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={{ 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 { MouseEvent, 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): JSX.Element => {\n\tconst {\n\t\tvalue = 0,\n\t\tsize = 8,\n\t\theight = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\twidth: 0,\n\t\tstart: 0,\n\t});\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: MouseEvent) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e.pageX - rect.left) * 100) / rect.width;\n\n\t\tObject.assign(state, {\n\t\t\tvalue,\n\t\t\twidth: rect.width,\n\t\t\tstart: rect.left,\n\t\t\tdragging: true,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e: any) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\t\tconst { start, width } = state;\n\t\tconst offset = e.pageX - start;\n\n\t\tif (offset < 0 || offset > width) return;\n\n\t\tstate.value = ((e.pageX - start) * 100) / width;\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};\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\tsize={size}\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/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle value={state.value} height={height} size={size} />\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 { forwardRef, 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, RefVideo } from \"./type\";\n\nconst Video = forwardRef<RefVideo, IVideo>((props, ref): JSX.Element => {\n\tconst {\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-2\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-1\",\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});\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) 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) 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 handleMouseMove = throttle({ interval: 300 }, 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\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<div className='i-video-control flex-1'>\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\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t\t<Button\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\tonClick={handleStop}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tclassName='mr-8'\n\t\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\t\tvalue={(state.current / state.duration) * 100}\n\t\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='i-video-control'>\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\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='i-video-control'>\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 icon={<VolumeOffRound />} size='1.2em' />\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\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tstyle={{ width: 100 }}\n\t\t\t\t\t\t\tclassName='mr-8'\n\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\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});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\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 handleMouseMove = (e) => {\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 className='i-preview-controls'>\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\tshadow={false}\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\tstate.status = \"loading\";\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 />}\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\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<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 && (\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</label>\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 {\n\tChangeEvent,\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n} from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { CompositionInput, IInput } from \"./type\";\n\nconst Input = forwardRef<HTMLInputElement, IInput>((props, ref) => {\n\tconst {\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 = useCallback((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 { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useMemoizedFn, useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, forwardRef, useCallback, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = forwardRef<HTMLInputElement, IInputNumber>((props, ref) => {\n\tconst {\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...rest\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = useCallback(\n\t\t(v: number) => clamp(v, min, max),\n\t\t[min, max]\n\t);\n\n\tconst getFormatNumber = useCallback(\n\t\t(v: number) => formatNumber(v, { precision, thousand }),\n\t\t[precision, thousand]\n\t);\n\n\tconst formatInputValue = useCallback(\n\t\t(v?: string | number) => {\n\t\t\tif (!v) return \"\";\n\t\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\t\treturn v.replaceAll(thousand, \"\");\n\t\t},\n\t\t[thousand]\n\t);\n\n\tconst handleChange = useMemoizedFn((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 = useMemoizedFn((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...rest,\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 { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, forwardRef, useCallback, useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = forwardRef<HTMLTextAreaElement, ITextarea>((props, ref) => {\n\tconst {\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 = useCallback(\n\t\t(e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n\t\t\tconst v = e.target.value;\n\n\t\t\tstate.value = v;\n\n\t\t\tconst ta = refTextarea.current?.firstChild as HTMLElement;\n\t\t\tif (autoSize && ta) {\n\t\t\t\t// ta.style.height = \"inherit\";\n\t\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t\t}\n\n\t\t\tonChange?.(v, e);\n\t\t},\n\t\t[]\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 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 { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound, SyncAltRound } from \"@ricons/material\";\nimport { useMemoizedFn, useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, MouseEvent, useCallback, 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 = useCallback(\n\t\t(v: number) => clamp(v, min, max),\n\t\t[min, max]\n\t);\n\n\tconst getFormatNumber = useCallback(\n\t\t(v: number) => formatNumber(v, { precision, thousand }),\n\t\t[precision, thousand]\n\t);\n\n\tconst formatInputValue = useCallback(\n\t\t(v?: string | number) => {\n\t\t\tif (!v) return \"\";\n\t\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\t\treturn v.replaceAll(thousand, \"\");\n\t\t},\n\t\t[thousand]\n\t);\n\n\tconst handleChange = useMemoizedFn(\n\t\t(e: ChangeEvent<HTMLInputElement>, i: number) => {\n\t\t\tconst { value } = e.target;\n\t\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\t\trange[i] = +v;\n\n\t\t\tstate.value = range;\n\t\t\tonChange?.(range, e);\n\t\t}\n\t);\n\n\tconst handleOperate = useMemoizedFn(\n\t\t(e: MouseEvent<Element>, param: number, i: number) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\t\tconst value = formatInputValue(range[i]) ?? 0;\n\t\t\tconst result = getRangeNumber(+value + param);\n\n\t\t\trange[i] = getFormatNumber(result);\n\n\t\t\tstate.value = range;\n\t\t\tonChange?.(range, e);\n\t\t}\n\t);\n\n\tconst handleSwitch = useMemoizedFn((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 {\n\tReactNode,\n\tforwardRef,\n\tisValidElement,\n\tuseEffect,\n\tuseRef,\n} 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\tmax: 0,\n};\n\nconst ItemDefaultConfig = {\n\tduration: 3000,\n\tclosable: true,\n\tactive: false,\n};\n\nconst container = createContainer();\nconst handler = {\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 = forwardRef<HTMLDivElement, IMessageItem>(function (\n\t{ active, content, top, className, style, onClick },\n\tref\n) {\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\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}, 0);\n\n\t\t\t\titem.duration !== 0 &&\n\t\t\t\t\tsetTimeout(this.close.bind(item), item.duration);\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 handler.close.bind(config);\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\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\treturn {\n\t\topen: handleOpen,\n\t\tupdate: handleUpdate,\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): JSX.Element => {\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): JSX.Element => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\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 active className='i-tag-close' onClick={onClose} />\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\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 { useMemoizedFn, useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport { ChangeEvent, forwardRef, 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 = forwardRef<HTMLInputElement, ISelect>((props, ref) => {\n\tconst {\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 = () => {\n\t\tif (!active) return;\n\n\t\tchangeValue(multiple ? [] : \"\");\n\t};\n\n\tconst handleFilterChange = useMemoizedFn(\n\t\tdebounce({ delay: 400 }, (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 { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\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 } = 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 value={state.value} onChange={handleChange} />\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\nimport { forwardRef } from \"react\";\n\nconst Handle = forwardRef<HTMLDivElement, any>((props, ref) => {\n\tconst { 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\tonChange?.(state.value);\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\tonChange?.(v);\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/>\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={state.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 { useMemoizedFn } from \"ahooks\";\nimport 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 = useMemoizedFn((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, useCallback, 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 = useCallback((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): JSX.Element => {\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): JSX.Element => {\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 { useMemoizedFn, 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 = useMemoizedFn((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): JSX.Element => {\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\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>\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): JSX.Element => {\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\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} = 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={index}\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\tMouseEvent,\n\tforwardRef,\n\tuseCallback,\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, RefSwiper } from \"./type\";\n\nconst Swiper = forwardRef<RefSwiper, ISwiper>((props, ref): JSX.Element => {\n\tconst {\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\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\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 = useCallback(\n\t\t(i: number) => {\n\t\t\tif (!state.swipable || i === state.current) return;\n\t\t\tstate.swipable = false;\n\t\t\tonBeforeSwipe?.(state.current);\n\n\t\t\tlet reset = false;\n\t\t\tlet next = i;\n\t\t\tconst lastDisplay = size - display;\n\n\t\t\tif (loop) {\n\t\t\t\tif (i > lastDisplay) {\n\t\t\t\t\treset = true;\n\t\t\t\t\ti = size;\n\t\t\t\t\tnext = 0;\n\t\t\t\t} else if (i < 0) {\n\t\t\t\t\treset = true;\n\t\t\t\t\ti = -display;\n\t\t\t\t\tnext = lastDisplay;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\t\ti = next;\n\t\t\t}\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.swipable = true;\n\t\t\t}, duration + 32);\n\n\t\t\tif (type === \"fade\") {\n\t\t\t\tstate.current = next;\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.current = i;\n\n\t\t\tif (!reset) {\n\t\t\t\tif (autoplay) {\n\t\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t\t}\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tonAfterSwipe?.(next);\n\t\t\t\t}, duration + 12);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = \"none\";\n\t\t\t\tstate.current = next;\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t\tif (autoplay) {\n\t\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t\t}\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tstate.transition = transition;\n\t\t\t\t}, 60);\n\t\t\t}, duration + 20);\n\t\t},\n\t\t[duration, autoplay]\n\t);\n\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 = useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\t\te.stopPropagation();\n\n\t\t\tObject.assign(state, {\n\t\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\t\tdragging: true,\n\t\t\t\ttransition: \"none\",\n\t\t\t});\n\t\t},\n\t\t[draggable, vertical]\n\t);\n\n\tconst handleMouseMove = useCallback(\n\t\t(e: any) => {\n\t\t\tif (!state.dragging || !listRef.current) return;\n\t\t\te.preventDefault();\n\n\t\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\t\tconst offset =\n\t\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\t\toffsetPercent;\n\n\t\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t\t}, 0)`;\n\t\t},\n\t\t[vertical, listRef.current, offsetPercent]\n\t);\n\n\tconst handleMouseUp = useCallback(\n\t\t(e: any) => {\n\t\t\tif (!state.dragging || !listRef.current) return;\n\n\t\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\t\tconst part =\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] /\n\t\t\t\ttotal;\n\t\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\t\tconst absOffset = Math.abs(offset);\n\n\t\t\tif (absOffset > dragOffset) {\n\t\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\t\tconst p = base + mod;\n\n\t\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\t\tswipeTo(to);\n\t\t\t}\n\n\t\t\tlistRef.current.style.transform = position || \"\";\n\n\t\t\tObject.assign(state, {\n\t\t\t\tdragging: false,\n\t\t\t\ttransition,\n\t\t\t});\n\t\t},\n\t\t[vertical, listRef.current, offsetPercent]\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>\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\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\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<a\n\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t</a>\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 className='i-swiper-indicators'>\n\t\t\t\t\t{indicatorsLoop.map((whatever, 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\tforwardRef,\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, RefTabs, 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 = forwardRef<RefTabs, ITabs>((props, ref) => {\n\tconst {\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\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 ref={navsRef} className='i-tab-navs'>\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) =>\n\t\t\t\t\t\t\t\t\t(navRefs.current[i] =\n\t\t\t\t\t\t\t\t\t\tref as HTMLAnchorElement)\n\t\t\t\t\t\t\t\t}\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 { useMemoizedFn } from \"ahooks\";\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 = useMemoizedFn(\n\t\t(e: MouseEvent<HTMLElement>, fromToggle?: boolean) => {\n\t\t\tif (fromToggle) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\n\t\t\tif (disabled || !children?.length) return;\n\n\t\t\tsetExpand((v) => !v);\n\t\t}\n\t);\n\n\tconst handleItemClick = useMemoizedFn((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 { useMemoizedFn, useReactive } from \"ahooks\";\nimport { forwardRef, useEffect, useImperativeHandle } from \"react\";\nimport \"./index.css\";\nimport { TreeList } from \"./item\";\nimport { ITree, ITreeItem, RefTree } from \"./type\";\n\nconst defaultNodeProps = {\n\tkey: \"key\",\n\ttitle: \"title\",\n\tchildren: \"children\",\n};\n\nconst Tree = forwardRef<RefTree, ITree>((props, ref) => {\n\tconst {\n\t\tdata = [],\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 = useMemoizedFn(\n\t\t(item: ITreeItem, checked: boolean, direction?: \"root\" | \"leaf\") => {\n\t\t\tconst { key = \"\", parent, children } = item;\n\t\t\tconst shouldChanged = { [key]: checked };\n\t\t\tconst partofs = { [key]: false };\n\n\t\t\tif (disabledRelated) return [shouldChanged];\n\n\t\t\tif (checked) {\n\t\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\t\tconst hasUnchecked = parent.children?.some(\n\t\t\t\t\t\t(o) => o.key !== key && !isChecked(o.key)\n\t\t\t\t\t);\n\n\t\t\t\t\tconst [changes, parts] = checkItem(parent, true, \"root\");\n\n\t\t\t\t\tif (!hasUnchecked) {\n\t\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(partofs, hasUnchecked ? parts : {}, {\n\t\t\t\t\t\t[parent.key as string]: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\t\tchildren.map((o) => {\n\t\t\t\t\t\tif (isChecked(o.key)) return;\n\n\t\t\t\t\t\tconst [changes] = checkItem(o, true, \"leaf\");\n\n\t\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn [shouldChanged, partofs];\n\t\t\t}\n\n\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\tconst [changes, parts] = checkItem(parent, false, \"root\");\n\n\t\t\t\tObject.assign(shouldChanged, changes);\n\n\t\t\t\tconst hasChecked = parent.children?.some(\n\t\t\t\t\t(o) => isChecked(o.key) && o.key !== key\n\t\t\t\t);\n\n\t\t\t\tObject.assign(partofs, hasChecked ? {} : parts, {\n\t\t\t\t\t[parent.key as string]: hasChecked,\n\t\t\t\t\t[key]: false,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\tchildren.map((o) => {\n\t\t\t\t\tconst [changes] = checkItem(o, false, \"leaf\");\n\n\t\t\t\t\tif (!isChecked(o.key)) return;\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\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 Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport default function RenderFile(props: IUploadItem) {\n\tconst { mode, index, file, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\tconst { name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\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\tusePreview={false}\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\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\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\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","import usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { CloudUploadTwotone, PlusSharp } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n\tCSSProperties,\n\tChangeEvent,\n\tFragment,\n\tforwardRef,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport \"./index.css\";\nimport renderFile from \"./renderFile\";\nimport { IFile, IUpload, RefUpload } from \"./type\";\n\nconst Upload = forwardRef<RefUpload, IUpload>((props, ref): JSX.Element => {\n\tconst {\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem = renderFile,\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\tupdate: 0,\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<Icon icon={<CloudUploadTwotone />} /> Upload\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 { 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\n\t\t\tconst src = URL.createObjectURL(f);\n\t\t\tf.src = src;\n\t\t\tstate.update += 1;\n\n\t\t\tObject.assign(f, {\n\t\t\t\tuid: uid(7),\n\t\t\t\tsrc: f.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\tfiles.forEach(async (file) => {\n\t\t\tif (!shouldUpload(file)) return;\n\n\t\t\tconst result = await uploader(file);\n\t\t\tconst i = state.files.findIndex((f) => f.uid === result.uid);\n\t\t\ti > -1 && (state.files[i] = result);\n\n\t\t\tresult?.status === \"completed\" && onUpload?.(result);\n\t\t});\n\t};\n\n\tconst handlePreview = (i: number) => {\n\t\tpreview({ items: state.files as TPreviewItem[], initial: i });\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.value = value;\n\t}, [value]);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\t\t}),\n\t\t[]\n\t);\n\n\tconst { message: msg, files: currentFiles } = state;\n\n\treturn (\n\t\t<InputContainer\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<input\n\t\t\t\t{...restProps}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tref={inputRef}\n\t\t\t\ttype='file'\n\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\tmultiple={multiple}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\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<div\n\t\t\t\t\tclassName='i-upload-list'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{currentFiles?.map((file: File, i: number) => (\n\t\t\t\t\t\t<Fragment key={i}>\n\t\t\t\t\t\t\t{renderFile({\n\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\t\tmode,\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</Fragment>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t{msg && <span className='i-upload-message'>{msg}</span>}\n\n\t\t\t\t{currentFiles.length < limit && trigger}\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","forwardRef","ref","as","As","href","ripple","onClick","childNodes","key","attrs","stopPropagation","useEffect","documentElement","dataset","addEventListener","to","Toggle","active","activeClass","after","onToggle","state","useReactive","done","toggle","useCallback","hasAfter","undefined","nextActive","Object","assign","Group","vertical","Icon","rotate","isValidElement","elProps","transform","cloneElement","ToTop","SkipPreviousRound","Affix","position","right","bottom","offset","getContainer","body","hidden","setHidden","useState","hijackChildren","useMemo","Children","map","node","type","container","scrollTo","behavior","debounce","delay","scrollTop","removeEventListener","Badge","content","contentClass","dot","dotSize","rounded","Area","name","Header","Footer","Banner","Tailer","Card","shadow","border","slots","nodes","child","header","banner","footer","tailer","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","yt","yb","getPointPosition","wh","ww","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","status","message","partof","onChange","handleChange","useMemoizedFn","checked","Checkbox","optionInline","labelInline","required","formattedOptions","opt","group","findIndex","item","push","splice","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","useMouseMove","delete","useMouseUp","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","entry","callback","get","isIntersecting","observe","set","unobserve","disconnect","Resize","index","onWidthChange","resizing","preventDefault","onMouseDown","offsetWidth","values","Arrow","d","Sorter","Row","columns","onRowClick","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","handleWidthChange","ws","prevSortBy","prevSortType","types","t","getNextSorter","find","sortFn","a","b","sorted","sort","reverse","current","tds","querySelector","from","scrollBarStyle","ScrollContainer","autoHide","autoHeight","autoHeightMax","renderView","Description","colon","labelWidth","labelAlign","equally","gridTemplateColumns","textAlign","Fragment","gridColumn","gridRow","Drawer","visible","backdropClosable","hideCloseButton","onVisibleChange","onClose","show","setShow","setActive","toggable","handleShow","handleHide","handleBackdropClick","createPortal","alignItems","List","renderLabel","Virtual","itemKey","renderItem","VList","Content","trigger","arrow","arrowProps","arrowCSS","pos","Popup","showDelay","hideDelay","touchable","fitSize","watchResize","clickOutside","referToWindow","triggerRef","contentRef","toggling","useClickAway","tar","isContain","contains","opacity","action","eventMaps","useCreation","click","hover","onMouseEnter","onMouseLeave","focus","onFocus","onBlur","contextmenu","onContextMenu","none","contentTouch","events","ResizeObserver","useResizeObserver","useLayoutEffect","_Fragment","keys","evt","fn","ListItem","Dropdown","minWidth","more","moreProps","Li","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","cacheData","rules","constructor","this","field","PubSub","publish","clear","validate","rule","validator","v","isValid","isAllValid","Form","form","initialValues","onEnter","Provider","onKeyDown","keyCode","DefaultContent","footerLeft","okButtonProps","onOk","cancelButtonProps","showHeader","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","customized","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","Promise","resolve","then","unsubscribe","HookModal","useImperativeHandle","config","Text","Tag","weight","decoration","gradient","gradients","background","backgroundClip","fontWeight","textDecoration","Circle","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","Line","barClass","dragging","renderCursor","Progress","draggable","toFixedValue","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","controlHidden","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","onMouseMove","onCanPlay","controls","PauseRound","PlayArrowRound","StopRound","FullscreenExitRound","FullscreenRound","VolumeOffRound","VolumeDownRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","handleSwitch","next","before","handleRotate","deg","handleMouseWheel","deltaY","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","preview","handleClick","setAttribute","iSize","objectFit","err","InputContainer","tip","img","Input","initValue","prepend","hideVisible","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","code","clearable","showHelper","step","Infinity","hideControl","onInput","rest","getRangeNumber","getFormatNumber","formatInputValue","replaceAll","handleOperate","param","Textarea","autoSize","refTextarea","ta","firstChild","scrollHeight","Range","placeholder","range","SyncAltRound","margin","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","callout","close","queue","heights","tops","onShow","bind","onHide","timer","renderItems","MessageItem","alignSelf","error","success","warning","useModal","open","Page","page","setLoading","async","Pagination","defaultPage","total","sibling","prev","simple","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","end","handlePageChange","p","dotClass","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","activeOptions","Select","hideClear","hideArrow","popupProps","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","ColorMethods","HEX","RGB","HSB","onTypeChange","Handle","color","handle","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","handleDateClick","week","isSame","isSameMonth","isToday","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","transition","itemHeight","selfStyle","Swiper","display","scroll","pauseOnHover","dragOffset","indicator","renderIndicator","onBeforeSwipe","onAfterSwipe","listRef","timerRef","swipable","dragStart","initialized","displayItems","listSize","list","head","offsetPercent","trackStyle","indicatorsLoop","clearTimer","swipeTo","reset","lastDisplay","swipeNext","swipePrev","handleMouseDown","clientY","clientX","handleMouseUp","dragEnd","part","absOffset","abs","onMouseOver","itemProps","Tabs","tabs","bar","hideMore","renderMore","onTabChange","navRefs","barRef","navsRef","prevActive","barStyle","cachedTabs","overflow","useSize","keepDOM","cloned","pick","String","tab","tkey","scrollBy","deltaX","scrollWidth","nav","intersecting","isLine","passive","navs","flex","TreeList","depth","contents","TreeItem","selected","partofs","checkable","renderExtra","onItemClick","onItemSelect","onItemCheck","expanded","expand","setExpand","handleExpand","fromToggle","handleItemClick","itemChecked","paddingLeft","KeyboardArrowDownRound","defaultNodeProps","Tree","disabledRelated","nodeMaps","Map","oNodeProps","isChecked","checkItem","shouldChanged","hasUnchecked","some","changes","parts","hasChecked","recursive","getChecked","getSelected","getPartofs","indeterminate","changedKeys","RenderFile","mode","onRemove","onPreview","CloseBtn","preload","ListAltRound","Upload","cardSize","limit","shouldUpload","uploader","onFilesChange","onUpload","inputRef","PlusSharp","CloudUploadTwotone","handleRemove","changed","URL","revokeObjectURL","handleUpload","forEach","f","handlePreview","getFileList","msg","currentFiles","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/area.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/list/virtual.tsx","../packages/components/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/dropdown/item.tsx","../packages/components/dropdown/dropdown.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/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/number.tsx","../packages/components/input/textarea.tsx","../packages/components/input/index.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): JSX.Element => {\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, forwardRef, 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 = forwardRef<HTMLElement, IButton>((props, ref) => {\n\tconst {\n\t\tas: As = \"a\",\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\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\"]: ripple,\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}) as CompositionButton;\n\nexport default Button;\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\tactive,\n\t\tactiveClass,\n\t\tafter,\n\t\tdisabled,\n\t\tchildren,\n\t\tclassName,\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 = () => {\n\t\tconst hasAfter = after !== undefined;\n\t\tconst nextActive = !state.active;\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\thasAfter &&\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.done = true;\n\t\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\tstate.active !== active && toggle();\n\t}, [active]);\n\n\treturn (\n\t\t<Button\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 { IButtonGroup } from \"./type\";\n\nexport default function Group(props: IButtonGroup) {\n\tconst { children, vertical, className, style } = props;\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{children}\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\nimport { cloneElement, forwardRef, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = forwardRef<HTMLElement, IIcon>((props, ref) => {\n\tconst {\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 elProps = {\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, elProps);\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): JSX.Element => {\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\";\n\nconst Area = (name: string) => (props) =>\n\t(\n\t\t<div\n\t\t\tstyle={props.style}\n\t\t\tclassName={classNames(\"i-card-\" + name, props.className)}\n\t\t>\n\t\t\t{props.children}\n\t\t</div>\n\t);\n\nconst Header = Area(\"header\") as any;\nconst Footer = Area(\"footer\") as any;\nconst Banner = Area(\"banner\") as any;\nconst Tailer = Area(\"tail\") as any;\n\nexport { Banner, Footer, Header, Tailer };\n","import classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport { Banner, Footer, Header, Tailer } from \"./area\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst { shadow = true, border, style, className, children } = props;\n\n\tconst slots: any = useMemo(() => {\n\t\tconst nodes = {};\n\n\t\tChildren.map(children, (child: any) => {\n\t\t\tconst type = child.type;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase Header:\n\t\t\t\t\tnodes[\"header\"] = child;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Footer:\n\t\t\t\t\tnodes[\"footer\"] = child;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Banner:\n\t\t\t\t\tnodes[\"banner\"] = child;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Tailer:\n\t\t\t\t\tnodes[\"tailer\"] = child;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnodes[\"content\"] = [...(nodes[\"content\"] || []), child];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\treturn nodes;\n\t}, [children]);\n\n\tconst { header, banner, content, footer, tailer } = slots;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t>\n\t\t\t{banner}\n\n\t\t\t{header}\n\n\t\t\t{content && <div className='i-card-content'>{content}</div>}\n\n\t\t\t{footer}\n\n\t\t\t{tailer}\n\t\t</div>\n\t);\n};\n\nCard.Header = Header;\nCard.Footer = Footer;\nCard.Banner = Banner;\nCard.Tailer = Tailer;\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 { pageX: x, pageY: y } = e;\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst { innerHeight: wh, innerWidth: ww } = window;\n\n\tconst left = x + w >= ww ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= wh ? (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? targetOffset + targetSize\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","import { useMemoizedFn, 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 = useMemoizedFn((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 { useMemoizedFn, 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 = useMemoizedFn((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): JSX.Element => {\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): JSX.Element => {\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;\n\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst touchable = \"ontouchend\" in document;\nconst EVENTS: any = {\n\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\tUP: touchable ? \"touchend\" : \"mouseup\",\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\nexport function useMouseMove(listener: TMouseEvent) {\n\tuseEffect(() => {\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) {\n\tuseEffect(() => {\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.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): JSX.Element => {\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): JSX.Element => {\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 { 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\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\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 { forwardRef } from \"react\";\nimport { IListItem } from \"./type\";\n\nconst Item = forwardRef<HTMLLIElement, IListItem>((props, ref) => {\n\tconst {\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, Fragment } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\nimport Virtual from \"./virtual\";\n\nconst List = (props: IList): JSX.Element => {\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\tif (node.type === Fragment) return node;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t...node.props,\n\t\t\t\t\ttype,\n\t\t\t\t});\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Virtual = Virtual;\nList.Item = Item;\n\nexport default List;\n","import VList from \"rc-virtual-list\";\nimport { IVirtual } from \"./type\";\n\nconst Virtual = (props: IVirtual) => {\n\tconst { data, itemKey, renderItem, ...restProps } = props;\n\n\treturn (\n\t\t<VList data={data} itemKey={itemKey} {...restProps}>\n\t\t\t{(item, i) => {\n\t\t\t\treturn renderItem?.(item, i);\n\t\t\t}}\n\t\t</VList>\n\t);\n};\n\nexport default Virtual;\n","import classNames from \"classnames\";\nimport { forwardRef, useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IPopupContent } from \"./type\";\n\nconst Content = forwardRef<HTMLDivElement, IPopupContent>((props, ref) => {\n\tconst {\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 { useResizeObserver } from \"@p/js/hooks\";\nimport { getPointPosition, getPosition } from \"@p/js/utils\";\nimport { useClickAway, 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 state = useReactive<{\n\t\tshow: boolean;\n\t\ttoggling: any;\n\t\tstyle: CSSProperties;\n\t\tarrowProps: Record<string, any>;\n\t}>({\n\t\tshow: false,\n\t\ttoggling: false,\n\t\tstyle: { position: fixed ? \"fixed\" : \"absolute\" },\n\t\tarrowProps: {},\n\t});\n\n\tuseClickAway((e: Event) => {\n\t\tif (!clickOutside) return;\n\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst isContain = triggerRef.current?.contains(tar);\n\n\t\tif (!state.show) return;\n\n\t\t(!isContain || trigger === \"contextmenu\") && handleToggle(false);\n\t}, contentRef);\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\n\t\tstate.toggling && clearTimeout(state.toggling);\n\t\tstate.toggling = setTimeout(() => {\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\tstate.toggling && clearTimeout(state.toggling);\n\t\t\tonVisibleChange?.(true);\n\t\t}, showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!state.show) return;\n\t\tstate.toggling = setTimeout(() => {\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\tstate.toggling && clearTimeout(state.toggling);\n\t\t\t\tonVisibleChange?.(false);\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\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\tstate.toggling = 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\tstate.toggling && clearTimeout(state.toggling);\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\"] = () => handleToggle(true);\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 { type, props } = child;\n\n\t\t\t\tif (typeof type === \"function\") return child;\n\n\t\t\t\tconst { className, ...restProps } = props;\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, ...restProps } = props;\n\tconst Li = <ListItem {...restProps} />;\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): JSX.Element => {\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 classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex = (props: IFlex): JSX.Element => {\n\tconst {\n\t\tas: Component = \"div\",\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 ? data : false;\n\t}\n}\n\nexport default function useForm(form?: IFormInstance) {\n\tconst formRef = useRef<IFormInstance>();\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 } 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): JSX.Element => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\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\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.Provider value={form}>\n\t\t\t<form\n\t\t\t\tstyle={{ ...style, width }}\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.Provider>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n","import 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\t\tchildren: \"确定\",\n\t\t\tonClick: props.onOk,\n\t\t},\n\t\tcancelButtonProps = {\n\t\t\tsecondary: true,\n\t\t\tchildren: \"关闭\",\n\t\t\tonClick: props.onClose,\n\t\t},\n\t\tchildren,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign({}, okButtonProps);\n\t\tconst propsCancel = Object.assign({}, cancelButtonProps);\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\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\tshadow = true,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tfooterLeft,\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\tsetShow(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\tsetShow(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\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,\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) => e.stopPropagation()}\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 { forwardRef, useImperativeHandle } from \"react\";\nimport Modal from \"./modal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nconst HookModal = forwardRef<RefHookModal, IModal>((props, ref) => {\n\tconst state = useReactive<IModal>({});\n\n\tuseImperativeHandle(ref, () => ({\n\t\tupdate: (config: IModal = {}) => {\n\t\t\tObject.assign(state, config);\n\t\t},\n\t}));\n\n\treturn <Modal {...props} {...state} />;\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\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\tbackground: `-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})}\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\" | \"height\" | \"size\">\n) {\n\tconst { value, height = 40, size = 8 } = props;\n\n\treturn (\n\t\t<div className='i-progress-circle'>\n\t\t\t<svg width={height} height={height}>\n\t\t\t\t<circle\n\t\t\t\t\tcx={height / 2}\n\t\t\t\t\tcy={height / 2}\n\t\t\t\t\tr={height / 2 - size / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--background-opacity-2)'\n\t\t\t\t\tstrokeWidth={size}\n\t\t\t\t/>\n\t\t\t\t<circle\n\t\t\t\t\tcx={height / 2}\n\t\t\t\t\tcy={height / 2}\n\t\t\t\t\tr={height / 2 - size / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--color-main)'\n\t\t\t\t\tstrokeWidth={size}\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 Number from \"./number\";\nimport Text from \"./text\";\nimport Time from \"./time\";\n\nText.Number = Number;\nText.Time = Time;\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 classNames from \"classnames\";\nimport { MouseEvent, forwardRef } from \"react\";\nimport { IProgress } from \"./type\";\n\nconst Line = forwardRef<\n\tHTMLDivElement,\n\tPick<IProgress, \"value\" | \"size\" | \"barClass\" | \"renderCursor\"> & {\n\t\tdragging: boolean;\n\t\tonMouseDown: (e: MouseEvent) => void;\n\t\tonTouchStart: (e) => void;\n\t}\n>((props, ref) => {\n\tconst {\n\t\tvalue,\n\t\tsize,\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='i-progress'\n\t\t\tstyle={{ height: size }}\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={{ 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): JSX.Element => {\n\tconst {\n\t\tvalue = 0,\n\t\tsize = 8,\n\t\theight = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\twidth: 0,\n\t\tstart: 0,\n\t});\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.pageX - rect.left) * 100) / rect.width;\n\n\t\tObject.assign(state, {\n\t\t\tvalue,\n\t\t\twidth: rect.width,\n\t\t\tstart: rect.left,\n\t\t\tdragging: true,\n\t\t});\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, width } = state;\n\t\tconst offset = e.pageX - start;\n\n\t\tif (offset < 0 || offset > width) return;\n\n\t\tstate.value = ((e.pageX - start) * 100) / width;\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};\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\tsize={size}\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 value={state.value} height={height} size={size} />\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 { forwardRef, 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, RefVideo } from \"./type\";\n\nconst Video = forwardRef<RefVideo, IVideo>((props, ref): JSX.Element => {\n\tconst {\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-2\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-1\",\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});\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) 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) 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 handleMouseMove = throttle({ interval: 300 }, 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\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<div className='i-video-control flex-1'>\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\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t\t<Button\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\tonClick={handleStop}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tclassName='mr-8'\n\t\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\t\tvalue={(state.current / state.duration) * 100}\n\t\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='i-video-control'>\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\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='i-video-control'>\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 icon={<VolumeOffRound />} size='1.2em' />\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\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tstyle={{ width: 100 }}\n\t\t\t\t\t\t\tclassName='mr-8'\n\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\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});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\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 handleMouseMove = (e) => {\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 className='i-preview-controls'>\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\tshadow={false}\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\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<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 && (\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</label>\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, forwardRef, 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 = forwardRef<HTMLInputElement, IInput>((props, ref) => {\n\tconst {\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 { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, forwardRef, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = forwardRef<HTMLInputElement, IInputNumber>((props, ref) => {\n\tconst {\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...rest\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...rest,\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 { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, forwardRef, useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = forwardRef<HTMLTextAreaElement, ITextarea>((props, ref) => {\n\tconst {\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\t// ta.style.height = \"inherit\";\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 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 { 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 {\n\tReactNode,\n\tforwardRef,\n\tisValidElement,\n\tuseEffect,\n\tuseRef,\n} 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\tmax: 0,\n};\n\nconst ItemDefaultConfig = {\n\tduration: 3000,\n\tclosable: true,\n\tactive: false,\n};\n\nconst container = createContainer();\nconst handler = {\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 = forwardRef<HTMLDivElement, IMessageItem>(function (\n\t{ active, content, top, className, style, onClick },\n\tref\n) {\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\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}, 0);\n\n\t\t\t\titem.duration !== 0 &&\n\t\t\t\t\tsetTimeout(this.close.bind(item), item.duration);\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 handler.close.bind(config);\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\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\treturn {\n\t\topen: handleOpen,\n\t\tupdate: handleUpdate,\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): JSX.Element => {\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): JSX.Element => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\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 active className='i-tag-close' onClick={onClose} />\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\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 { useMemoizedFn, useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport { ChangeEvent, forwardRef, 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 = forwardRef<HTMLInputElement, ISelect>((props, ref) => {\n\tconst {\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 = () => {\n\t\tif (!active) return;\n\n\t\tchangeValue(multiple ? [] : \"\");\n\t};\n\n\tconst handleFilterChange = useMemoizedFn(\n\t\tdebounce({ delay: 400 }, (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 { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\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 } = 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 value={state.value} onChange={handleChange} />\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\nimport { forwardRef } from \"react\";\n\nconst Handle = forwardRef<HTMLDivElement, any>((props, ref) => {\n\tconst { 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\tonChange?.(state.value);\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\tonChange?.(v);\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/>\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={state.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 { useMemoizedFn } from \"ahooks\";\nimport 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 = useMemoizedFn((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): JSX.Element => {\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): JSX.Element => {\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 { useMemoizedFn, 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 = useMemoizedFn((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): JSX.Element => {\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): JSX.Element => {\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\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} = 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={index}\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\tforwardRef,\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, RefSwiper } from \"./type\";\n\nconst Swiper = forwardRef<RefSwiper, ISwiper>((props, ref): JSX.Element => {\n\tconst {\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\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\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\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\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\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<a\n\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t</a>\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 className='i-swiper-indicators'>\n\t\t\t\t\t{indicatorsLoop.map((whatever, 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\tforwardRef,\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, RefTabs, 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 = forwardRef<RefTabs, ITabs>((props, ref) => {\n\tconst {\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\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 ref={navsRef} className='i-tab-navs'>\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) =>\n\t\t\t\t\t\t\t\t\t(navRefs.current[i] =\n\t\t\t\t\t\t\t\t\t\tref as HTMLAnchorElement)\n\t\t\t\t\t\t\t\t}\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 { useMemoizedFn } from \"ahooks\";\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 = useMemoizedFn(\n\t\t(e: MouseEvent<HTMLElement>, fromToggle?: boolean) => {\n\t\t\tif (fromToggle) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\n\t\t\tif (disabled || !children?.length) return;\n\n\t\t\tsetExpand((v) => !v);\n\t\t}\n\t);\n\n\tconst handleItemClick = useMemoizedFn((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 { useMemoizedFn, useReactive } from \"ahooks\";\nimport { forwardRef, useEffect, useImperativeHandle } from \"react\";\nimport \"./index.css\";\nimport { TreeList } from \"./item\";\nimport { ITree, ITreeItem, RefTree } from \"./type\";\n\nconst defaultNodeProps = {\n\tkey: \"key\",\n\ttitle: \"title\",\n\tchildren: \"children\",\n};\n\nconst Tree = forwardRef<RefTree, ITree>((props, ref) => {\n\tconst {\n\t\tdata = [],\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 = useMemoizedFn(\n\t\t(item: ITreeItem, checked: boolean, direction?: \"root\" | \"leaf\") => {\n\t\t\tconst { key = \"\", parent, children } = item;\n\t\t\tconst shouldChanged = { [key]: checked };\n\t\t\tconst partofs = { [key]: false };\n\n\t\t\tif (disabledRelated) return [shouldChanged];\n\n\t\t\tif (checked) {\n\t\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\t\tconst hasUnchecked = parent.children?.some(\n\t\t\t\t\t\t(o) => o.key !== key && !isChecked(o.key)\n\t\t\t\t\t);\n\n\t\t\t\t\tconst [changes, parts] = checkItem(parent, true, \"root\");\n\n\t\t\t\t\tif (!hasUnchecked) {\n\t\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(partofs, hasUnchecked ? parts : {}, {\n\t\t\t\t\t\t[parent.key as string]: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\t\tchildren.map((o) => {\n\t\t\t\t\t\tif (isChecked(o.key)) return;\n\n\t\t\t\t\t\tconst [changes] = checkItem(o, true, \"leaf\");\n\n\t\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn [shouldChanged, partofs];\n\t\t\t}\n\n\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\tconst [changes, parts] = checkItem(parent, false, \"root\");\n\n\t\t\t\tObject.assign(shouldChanged, changes);\n\n\t\t\t\tconst hasChecked = parent.children?.some(\n\t\t\t\t\t(o) => isChecked(o.key) && o.key !== key\n\t\t\t\t);\n\n\t\t\t\tObject.assign(partofs, hasChecked ? {} : parts, {\n\t\t\t\t\t[parent.key as string]: hasChecked,\n\t\t\t\t\t[key]: false,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\tchildren.map((o) => {\n\t\t\t\t\tconst [changes] = checkItem(o, false, \"leaf\");\n\n\t\t\t\t\tif (!isChecked(o.key)) return;\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\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 Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport default function RenderFile(props: IUploadItem) {\n\tconst { mode, index, file, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\tconst { name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\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\tusePreview={false}\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\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\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\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","import usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { CloudUploadTwotone, PlusSharp } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n\tCSSProperties,\n\tChangeEvent,\n\tFragment,\n\tforwardRef,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport \"./index.css\";\nimport renderFile from \"./renderFile\";\nimport { IFile, IUpload, RefUpload } from \"./type\";\n\nconst Upload = forwardRef<RefUpload, IUpload>((props, ref): JSX.Element => {\n\tconst {\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem = renderFile,\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\tupdate: 0,\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<Icon icon={<CloudUploadTwotone />} /> Upload\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 { 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\n\t\t\tconst src = URL.createObjectURL(f);\n\t\t\tf.src = src;\n\t\t\tstate.update += 1;\n\n\t\t\tObject.assign(f, {\n\t\t\t\tuid: uid(7),\n\t\t\t\tsrc: f.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\tfiles.forEach(async (file) => {\n\t\t\tif (!shouldUpload(file)) return;\n\n\t\t\tconst result = await uploader(file);\n\t\t\tconst i = state.files.findIndex((f) => f.uid === result.uid);\n\t\t\ti > -1 && (state.files[i] = result);\n\n\t\t\tresult?.status === \"completed\" && onUpload?.(result);\n\t\t});\n\t};\n\n\tconst handlePreview = (i: number) => {\n\t\tpreview({ items: state.files as TPreviewItem[], initial: i });\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.value = value;\n\t}, [value]);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\t\t}),\n\t\t[]\n\t);\n\n\tconst { message: msg, files: currentFiles } = state;\n\n\treturn (\n\t\t<InputContainer\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<input\n\t\t\t\t{...restProps}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tref={inputRef}\n\t\t\t\ttype='file'\n\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\tmultiple={multiple}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\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<div\n\t\t\t\t\tclassName='i-upload-list'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{currentFiles?.map((file: File, i: number) => (\n\t\t\t\t\t\t<Fragment key={i}>\n\t\t\t\t\t\t\t{renderFile({\n\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\t\tmode,\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</Fragment>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t{msg && <span className='i-upload-message'>{msg}</span>}\n\n\t\t\t\t{currentFiles.length < limit && trigger}\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","forwardRef","ref","as","As","href","ripple","onClick","childNodes","key","attrs","stopPropagation","useEffect","documentElement","dataset","addEventListener","to","Toggle","active","activeClass","after","onToggle","state","useReactive","done","toggle","hasAfter","undefined","nextActive","Object","assign","Group","vertical","Icon","rotate","isValidElement","elProps","transform","cloneElement","ToTop","SkipPreviousRound","Affix","position","right","bottom","offset","getContainer","body","hidden","setHidden","useState","hijackChildren","useMemo","Children","map","node","type","container","scrollTo","behavior","debounce","delay","scrollTop","removeEventListener","Badge","content","contentClass","dot","dotSize","rounded","Area","name","Header","Footer","Banner","Tailer","Card","shadow","border","slots","nodes","child","header","banner","footer","tailer","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","wh","ww","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","status","message","partof","onChange","handleChange","useMemoizedFn","checked","Checkbox","optionInline","labelInline","required","formattedOptions","opt","group","findIndex","item","push","splice","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","touchable","EVENTS","MOVE","UP","useMouseMove","delete","useMouseUp","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","entry","callback","get","isIntersecting","observe","set","unobserve","disconnect","Resize","index","onWidthChange","resizing","preventDefault","onMouseDown","offsetWidth","values","passive","Arrow","d","Sorter","Row","columns","onRowClick","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","onVisibleChange","onClose","toggable","show","init","handleShow","handleHide","createPortal","alignItems","List","renderLabel","Virtual","itemKey","renderItem","VList","Content","trigger","arrow","arrowProps","arrowCSS","pos","Popup","showDelay","hideDelay","fitSize","watchResize","clickOutside","referToWindow","triggerRef","contentRef","toggling","useClickAway","tar","isContain","contains","opacity","action","eventMaps","useCreation","click","hover","onMouseEnter","onMouseLeave","focus","onFocus","onBlur","contextmenu","onContextMenu","none","contentTouch","events","ResizeObserver","useResizeObserver","useLayoutEffect","_Fragment","keys","evt","fn","ListItem","Dropdown","minWidth","more","moreProps","Li","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","cacheData","rules","constructor","this","field","PubSub","publish","clear","validate","rule","validator","v","isValid","isAllValid","Form","form","initialValues","onEnter","Provider","onKeyDown","keyCode","DefaultContent","footerLeft","okButtonProps","onOk","cancelButtonProps","showHeader","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","customized","setShow","setActive","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","Promise","resolve","then","unsubscribe","HookModal","useImperativeHandle","config","Text","Tag","weight","decoration","gradient","gradients","background","backgroundClip","fontWeight","textDecoration","Circle","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","Line","barClass","dragging","renderCursor","onTouchStart","Progress","draggable","toFixedValue","handleMouseDown","touches","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","controlHidden","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","onMouseMove","onCanPlay","controls","PauseRound","PlayArrowRound","StopRound","FullscreenExitRound","FullscreenRound","VolumeOffRound","VolumeDownRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","handleSwitch","next","before","handleRotate","deg","handleMouseWheel","deltaY","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","preview","handleClick","complete","setAttribute","iSize","objectFit","err","InputContainer","tip","img","Input","initValue","prepend","hideVisible","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","code","clearable","showHelper","step","Infinity","hideControl","onInput","rest","formatInputValue","replaceAll","handleOperate","param","getFormatNumber","Textarea","autoSize","refTextarea","ta","firstChild","scrollHeight","Range","placeholder","range","SyncAltRound","margin","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","callout","close","queue","heights","tops","onShow","bind","onHide","timer","renderItems","MessageItem","alignSelf","error","success","warning","useModal","open","Page","page","setLoading","async","Pagination","defaultPage","total","sibling","prev","simple","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","end","handlePageChange","p","dotClass","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","activeOptions","Select","hideClear","hideArrow","popupProps","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","ColorMethods","HEX","RGB","HSB","onTypeChange","Handle","color","handle","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","handleDateClick","week","isSame","isSameMonth","isToday","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","transition","itemHeight","selfStyle","Swiper","display","scroll","pauseOnHover","dragOffset","indicator","renderIndicator","onBeforeSwipe","onAfterSwipe","listRef","timerRef","swipable","dragStart","initialized","displayItems","listSize","list","head","offsetPercent","trackStyle","indicatorsLoop","clearTimer","swipeTo","reset","lastDisplay","swipeNext","swipePrev","clientY","clientX","changedTouches","dragEnd","part","absOffset","abs","onMouseOver","itemProps","Tabs","tabs","bar","hideMore","renderMore","onTabChange","navRefs","barRef","navsRef","prevActive","barStyle","cachedTabs","overflow","useSize","cloned","pick","String","tab","tkey","scrollBy","deltaX","scrollWidth","nav","intersecting","isLine","navs","flex","TreeList","depth","contents","TreeItem","selected","partofs","checkable","renderExtra","onItemClick","onItemSelect","onItemCheck","expanded","expand","setExpand","handleExpand","fromToggle","handleItemClick","itemChecked","paddingLeft","KeyboardArrowDownRound","defaultNodeProps","Tree","disabledRelated","nodeMaps","Map","oNodeProps","isChecked","checkItem","shouldChanged","hasUnchecked","some","changes","parts","hasChecked","recursive","getChecked","getSelected","getPartofs","indeterminate","changedKeys","RenderFile","mode","onRemove","onPreview","CloseBtn","preload","ListAltRound","Upload","cardSize","limit","shouldUpload","uploader","onFilesChange","onUpload","inputRef","PlusSharp","CloudUploadTwotone","handleRemove","changed","URL","revokeObjectURL","handleUpload","forEach","f","handlePreview","getFileList","msg","currentFiles","same","pf","createObjectURL","at"],"mappings":"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"}