@ioca/react 1.1.1 → 1.1.2

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/input/container.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/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/datepicker/dates.tsx","../packages/components/datepicker/panel.tsx","../packages/components/datepicker/datepicker.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/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/image/index.tsx","../packages/components/image/list.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/popconfirm/popconfirm.tsx","../packages/components/radio/item.tsx","../packages/components/radio/radio.tsx","../packages/components/tag/tag.tsx","../packages/components/select/options.tsx","../packages/components/select/select.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={{ fontSize: size, ...style }}\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>\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): JSX.Element => {\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): JSX.Element => {\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) => {\n\t\tconst { key, disabled } = item;\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={() => handleToggle(item)}\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 { useMemoizedFn, useReactive } from \"ahooks\";\nimport { MouseEvent } from \"react\";\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 = useMemoizedFn((e: MouseEvent) => {\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 = useMemoizedFn((e: any) => {\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 ?? \"auto\"),\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\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 { 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 { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport { useMemoizedFn, useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport {\n\tChangeEvent,\n\tKeyboardEvent,\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 = useMemoizedFn((e: KeyboardEvent<HTMLElement>) => {\n\t\te.code === \"Enter\" && onEnter?.();\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 { useMemoizedFn, useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport {\n\tChangeEvent,\n\tKeyboardEvent,\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n} 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 = useMemoizedFn((e: KeyboardEvent<HTMLElement>) => {\n\t\te.code === \"Enter\" && onEnter?.();\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 ?? [];\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 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'></path>\n\t\t\t\t\t{/* <path d='M0 0L1 0C1 4, 2 5.5, 4 7.5S7,10 7,12S6 14.5, 4 16.5S1,20 1,24L0 24L0 0z'></path> */}\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, ...rest } = props;\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...eventMaps[trigger],\n\t\t\t\t\t...rest,\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 { 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 Dates from \"./dates\";\nimport { IBaseDates } from \"./type\";\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={() => (state.selectable = false)}\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 \"./index.css\";\nimport Panel from \"./panel\";\nimport { IDatePicker } from \"./type\";\n\ndayjs.extend(customParseFormat);\n\nconst FORMATTYPES = [\"YYYY-MM-DD\", \"YYYY-M-D\", \"YYYY/MM/DD\", \"YYYY/M/D\"];\n\nconst Datepicker = (props: IDatePicker): JSX.Element => {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tweeks,\n\t\tformat = \"YYYY-MM-DD\",\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\n\t\thandleSetDate();\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\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\twatchResize\n\t\t\tonVisibleChange={setActive}\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\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\";\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 } 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\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 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: { [key: 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\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\tPubSub.publish(`${id}:set:${name}`, field[name]);\n\t\t});\n\t}\n\n\tclear() {\n\t\tif (!this.data) return;\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\t...rest\n\t} = props;\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules: { ...rules },\n\t\t});\n\t}, [form, rules]);\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\t{...rest}\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\tuseCallback,\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 = useCallback(\n\t\t(v) => {\n\t\t\tif (!name) return;\n\n\t\t\tform.set(name, v);\n\t\t},\n\t\t[name]\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\tsetTimeout(() => {\n\t\t\tform.data[name] = form.data[name] ?? undefined;\n\t\t}, 0);\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${id}:set:${name}`);\n\t\t\tPubSub.unsubscribe(`${id}:invalid:${name}`);\n\t\t};\n\t}, [name]);\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 { useMemoizedFn, 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 = useMemoizedFn((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 = useMemoizedFn((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 = useMemoizedFn(() => {\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 { 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});\n\tconst $v = useRef<HTMLVideoElement>(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 = $v.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 = $v.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 = $v.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 = $v.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 = $v.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 = $v.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 = $v.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = $v.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = $v.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: () => $v.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tconst v = $v.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\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>\n\t\t\t<video\n\t\t\t\tref={$v}\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{!hideControls && !useOriginControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName='i-video-controls'\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'>\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\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\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 { throttle } from \"radash\";\nimport { useMemo, useRef } from \"react\";\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});\n\tconst box = useRef<HTMLDivElement>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t};\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\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName='i-preview-content'\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `rotate(${state.rotate}deg) scale(${state.scale})`,\n\t\t\t\t}}\n\t\t\t\tonWheel={handleMouseWheel}\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-4'>\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\tchildren,\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{children && <div className='i-image-text'>{children}</div>}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Image as CompositionImage;\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 { 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\nexport default function 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(direction?: string) {\n\tconst container = document.createElement(\"div\");\n\tcontainer.dataset.id = \"messages\";\n\tdocument.body.append(container);\n\n\treturn container;\n}\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 { 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\t\tawait onOk?.();\n\t\tstate.loading = false;\n\t\tstate.visible = false;\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 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 {\n\tChangeEvent,\n\tMouseEvent,\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} 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\";\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\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 = useCallback((value: any, option?: TOption) => {\n\t\tonSelect?.(value, option);\n\n\t\tif (multiple) {\n\t\t\tconst values = [...(state.value as any[])];\n\t\t\tconst i = values.findIndex((v) => v === value);\n\n\t\t\ti > -1 ? values.splice(i, 1) : values.push(value);\n\t\t\tchangeValue(values as any);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tchangeValue(value);\n\t}, []);\n\n\tconst handleVisibleChange = (visible: boolean) => {\n\t\tsetActive(visible);\n\n\t\tif (!filter) return;\n\n\t\tstate.filterValue = \"\";\n\t};\n\n\tconst handleHelperClick = (e: MouseEvent) => {\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\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 \"./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\t\t\t\tconst cloned = children\n\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","fontSize","children","_jsx","stroke","viewBox","xmlns","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","handleMouseDown","offsetWidth","preventDefault","onMouseDown","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","InputContainer","tip","Input","initValue","prepend","clear","hideVisible","onEnter","visible","v","handleKeydown","code","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","onKeyDown","clearable","showHelper","Number","step","Infinity","hideControl","onInput","onBlur","rest","getRangeNumber","getFormatNumber","formatInputValue","replaceAll","handleOperate","param","Textarea","autoSize","refTextarea","ta","firstChild","scrollHeight","Range","placeholder","range","handleSwitch","SyncAltRound","margin","Content","trigger","arrow","arrowProps","arrowCSS","pos","createPortal","Popup","showDelay","hideDelay","touchable","fitSize","watchResize","clickOutside","referToWindow","onVisibleChange","triggerRef","contentRef","show","toggling","useClickAway","tar","isContain","contains","handleShow","opacity","handleHide","action","eventMaps","useCreation","click","hover","onMouseEnter","onMouseLeave","focus","onFocus","contextmenu","onContextMenu","none","contentTouch","events","ResizeObserver","useResizeObserver","useLayoutEffect","_Fragment","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","next","getMoreYears","throttle","interval","isUp","deltaY","_","KeyboardArrowLeftRound","KeyboardArrowRightRound","onWheel","handleChangeMonth","extend","customParseFormat","FORMATTYPES","Datepicker","format","popupProps","setActive","dayJsValue","isValid","handleSetDate","CalendarMonthTwotone","Description","colon","labelWidth","labelAlign","equally","gridTemplateColumns","textAlign","Fragment","gridColumn","gridRow","Drawer","backdropClosable","hideCloseButton","onClose","setShow","toggable","handleBackdropClick","alignItems","List","renderLabel","Virtual","itemKey","renderItem","VList","ListItem","Dropdown","minWidth","more","moreProps","Li","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","rules","constructor","this","field","PubSub","publish","keys","validate","rule","validator","isAllValid","Form","form","initialValues","Provider","DefaultContent","footerLeft","okButtonProps","onOk","cancelButtonProps","showHeader","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","customized","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","evt","unsubscribe","HookModal","useImperativeHandle","config","Text","Tag","weight","decoration","gradient","gradients","background","backgroundClip","fontWeight","textDecoration","Circle","pathLength","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","handleMouseMove","handleMouseUp","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","$v","timeUpdateListener","paused","currentTime","playChangeListener","fsChangeListener","parentElement","fullscreenElement","volumeChangeListener","handlePlay","play","pause","handleStop","handleFullscreen","el","exitFullscreen","requestFullscreen","stop","fullscreen","getVideo","onCanPlay","controls","PauseRound","PlayArrowRound","StopRound","FullscreenExitRound","FullscreenRound","VolumeOffRound","VolumeDownRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","before","handleRotate","deg","handleMouseWheel","AspectRatioRound","OpenInNewRound","download","FileDownloadOutlined","RotateRightRound","RotateLeftRound","usePreview","modalProps","unMount","Image","initSize","lazyload","fallback","HideImageTwotone","fit","previewable","onLoad","onError","preview","setAttribute","iSize","objectFit","err","img","handleClick","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","callout","close","queue","heights","tops","onShow","bind","onHide","timer","renderItems","MessageItem","alignSelf","useModal","open","Page","page","setLoading","async","Pagination","defaultPage","total","sibling","prev","simple","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","end","handlePageChange","p","Promise","resolve","defaultOk","defaultCancel","Popconfirm","InfoOutlined","extra","ok","cancel","popconfirmContent","RadioItem","Radio","dotClass","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","activeOptions","Select","hideClear","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","Divider","STATUS","defaultRenderIcon","renderIcon","line","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","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","s","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/input/container.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/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/datepicker/dates.tsx","../packages/components/datepicker/panel.tsx","../packages/components/datepicker/datepicker.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/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/image/index.tsx","../packages/components/image/list.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/popconfirm/popconfirm.tsx","../packages/components/radio/item.tsx","../packages/components/radio/radio.tsx","../packages/components/tag/tag.tsx","../packages/components/select/options.tsx","../packages/components/select/select.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={{ fontSize: size, ...style }}\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>\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): JSX.Element => {\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): JSX.Element => {\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) => {\n\t\tconst { key, disabled } = item;\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={() => handleToggle(item)}\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 { useMemoizedFn, useReactive } from \"ahooks\";\nimport { MouseEvent } from \"react\";\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 = useMemoizedFn((e: MouseEvent) => {\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 = useMemoizedFn((e: any) => {\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 ?? \"auto\"),\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\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 { 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 { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport { useMemoizedFn, useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport {\n\tChangeEvent,\n\tKeyboardEvent,\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 = useMemoizedFn((e: KeyboardEvent<HTMLElement>) => {\n\t\te.code === \"Enter\" && onEnter?.();\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 { useMemoizedFn, useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport {\n\tChangeEvent,\n\tKeyboardEvent,\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n} 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 = useMemoizedFn((e: KeyboardEvent<HTMLElement>) => {\n\t\te.code === \"Enter\" && onEnter?.();\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 ?? [];\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 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'></path>\n\t\t\t\t\t{/* <path d='M0 0L1 0C1 4, 2 5.5, 4 7.5S7,10 7,12S6 14.5, 4 16.5S1,20 1,24L0 24L0 0z'></path> */}\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, ...rest } = props;\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...eventMaps[trigger],\n\t\t\t\t\t...rest,\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 { 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 Dates from \"./dates\";\nimport { IBaseDates } from \"./type\";\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={() => (state.selectable = false)}\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 \"./index.css\";\nimport Panel from \"./panel\";\nimport { IDatePicker } from \"./type\";\n\ndayjs.extend(customParseFormat);\n\nconst FORMATTYPES = [\"YYYY-MM-DD\", \"YYYY-M-D\", \"YYYY/MM/DD\", \"YYYY/M/D\"];\n\nconst Datepicker = (props: IDatePicker): JSX.Element => {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tweeks,\n\t\tformat = \"YYYY-MM-DD\",\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\n\t\thandleSetDate();\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\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\twatchResize\n\t\t\tonVisibleChange={setActive}\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\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\";\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 } 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\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 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: { [key: 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\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\tPubSub.publish(`${id}:set:${name}`, field[name]);\n\t\t});\n\t}\n\n\tclear() {\n\t\tif (!this.data) return;\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\t...rest\n\t} = props;\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules: { ...rules },\n\t\t});\n\t}, [form, rules]);\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\t{...rest}\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\tuseCallback,\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 = useCallback(\n\t\t(v) => {\n\t\t\tif (!name) return;\n\n\t\t\tform.set(name, v);\n\t\t},\n\t\t[name]\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\tsetTimeout(() => {\n\t\t\tform.data[name] = form.data[name] ?? undefined;\n\t\t}, 0);\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${id}:set:${name}`);\n\t\t\tPubSub.unsubscribe(`${id}:invalid:${name}`);\n\t\t};\n\t}, [name]);\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 { useMemoizedFn, 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 = useMemoizedFn((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 = useMemoizedFn((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 = useMemoizedFn(() => {\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 { 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});\n\tconst $v = useRef<HTMLVideoElement>(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 = $v.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 = $v.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 = $v.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 = $v.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 = $v.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 = $v.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 = $v.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = $v.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = $v.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: () => $v.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tconst v = $v.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\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>\n\t\t\t<video\n\t\t\t\tref={$v}\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{!hideControls && !useOriginControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName='i-video-controls'\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'>\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\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\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 { throttle } from \"radash\";\nimport { useMemo, useRef } from \"react\";\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});\n\tconst box = useRef<HTMLDivElement>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t};\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\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName='i-preview-content'\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `rotate(${state.rotate}deg) scale(${state.scale})`,\n\t\t\t\t}}\n\t\t\t\tonWheel={handleMouseWheel}\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-4'>\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\tchildren,\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{children && <div className='i-image-text'>{children}</div>}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Image as CompositionImage;\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 { 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\nexport default function 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(direction?: string) {\n\tconst container = document.createElement(\"div\");\n\tcontainer.dataset.id = \"messages\";\n\tdocument.body.append(container);\n\n\treturn container;\n}\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 { 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\t\tawait onOk?.();\n\t\tstate.loading = false;\n\t\tstate.visible = false;\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 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 {\n\tChangeEvent,\n\tMouseEvent,\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} 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\";\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\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 = useCallback((value: any, option?: TOption) => {\n\t\tonSelect?.(value, option);\n\n\t\tif (multiple) {\n\t\t\tconst values = [...(state.value as any[])];\n\t\t\tconst i = values.findIndex((v) => v === value);\n\n\t\t\ti > -1 ? values.splice(i, 1) : values.push(value);\n\t\t\tchangeValue(values as any);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tchangeValue(value);\n\t}, []);\n\n\tconst handleVisibleChange = (visible: boolean) => {\n\t\tsetActive(visible);\n\n\t\tif (!filter) return;\n\n\t\tstate.filterValue = \"\";\n\t};\n\n\tconst handleHelperClick = (e: MouseEvent) => {\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\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 \"./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","fontSize","children","_jsx","stroke","viewBox","xmlns","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","handleMouseDown","offsetWidth","preventDefault","onMouseDown","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","InputContainer","tip","Input","initValue","prepend","clear","hideVisible","onEnter","visible","v","handleKeydown","code","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","onKeyDown","clearable","showHelper","Number","step","Infinity","hideControl","onInput","onBlur","rest","getRangeNumber","getFormatNumber","formatInputValue","replaceAll","handleOperate","param","Textarea","autoSize","refTextarea","ta","firstChild","scrollHeight","Range","placeholder","range","handleSwitch","SyncAltRound","margin","Content","trigger","arrow","arrowProps","arrowCSS","pos","createPortal","Popup","showDelay","hideDelay","touchable","fitSize","watchResize","clickOutside","referToWindow","onVisibleChange","triggerRef","contentRef","show","toggling","useClickAway","tar","isContain","contains","handleShow","opacity","handleHide","action","eventMaps","useCreation","click","hover","onMouseEnter","onMouseLeave","focus","onFocus","contextmenu","onContextMenu","none","contentTouch","events","ResizeObserver","useResizeObserver","useLayoutEffect","_Fragment","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","next","getMoreYears","throttle","interval","isUp","deltaY","_","KeyboardArrowLeftRound","KeyboardArrowRightRound","onWheel","handleChangeMonth","extend","customParseFormat","FORMATTYPES","Datepicker","format","popupProps","setActive","dayJsValue","isValid","handleSetDate","CalendarMonthTwotone","Description","colon","labelWidth","labelAlign","equally","gridTemplateColumns","textAlign","Fragment","gridColumn","gridRow","Drawer","backdropClosable","hideCloseButton","onClose","setShow","toggable","handleBackdropClick","alignItems","List","renderLabel","Virtual","itemKey","renderItem","VList","ListItem","Dropdown","minWidth","more","moreProps","Li","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","rules","constructor","this","field","PubSub","publish","keys","validate","rule","validator","isAllValid","Form","form","initialValues","Provider","DefaultContent","footerLeft","okButtonProps","onOk","cancelButtonProps","showHeader","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","customized","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","evt","unsubscribe","HookModal","useImperativeHandle","config","Text","Tag","weight","decoration","gradient","gradients","background","backgroundClip","fontWeight","textDecoration","Circle","pathLength","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","handleMouseMove","handleMouseUp","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","$v","timeUpdateListener","paused","currentTime","playChangeListener","fsChangeListener","parentElement","fullscreenElement","volumeChangeListener","handlePlay","play","pause","handleStop","handleFullscreen","el","exitFullscreen","requestFullscreen","stop","fullscreen","getVideo","onCanPlay","controls","PauseRound","PlayArrowRound","StopRound","FullscreenExitRound","FullscreenRound","VolumeOffRound","VolumeDownRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","before","handleRotate","deg","handleMouseWheel","AspectRatioRound","OpenInNewRound","download","FileDownloadOutlined","RotateRightRound","RotateLeftRound","usePreview","modalProps","unMount","Image","initSize","lazyload","fallback","HideImageTwotone","fit","previewable","onLoad","onError","preview","setAttribute","iSize","objectFit","err","img","handleClick","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","callout","close","queue","heights","tops","onShow","bind","onHide","timer","renderItems","MessageItem","alignSelf","useModal","open","Page","page","setLoading","async","Pagination","defaultPage","total","sibling","prev","simple","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","end","handlePageChange","p","Promise","resolve","defaultOk","defaultCancel","Popconfirm","InfoOutlined","extra","ok","cancel","popconfirmContent","RadioItem","Radio","dotClass","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","activeOptions","Select","hideClear","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","Divider","STATUS","defaultRenderIcon","renderIcon","line","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","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","s","createObjectURL","at"],"mappings":"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"}