@ioca/react 1.1.8 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/css/index.css +1 -1
- package/lib/css/index.css.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/types/index.d.ts +4 -1
- package/package.json +1 -1
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../packages/js/useRipple/index.ts","../packages/components/loading/loading.tsx","../packages/components/button/button.tsx","../packages/components/button/index.tsx","../packages/components/button/toggle.tsx","../packages/components/button/group.tsx","../packages/components/icon/icon.tsx","../packages/components/affix/totop.tsx","../packages/components/affix/affix.tsx","../packages/components/badge/badge.tsx","../packages/components/card/card.tsx","../packages/js/usePreview/type.ts","../packages/js/utils.ts","../packages/components/checkbox/item.tsx","../packages/components/checkbox/checkbox.tsx","../packages/components/utils/helpericon/helpericon.tsx","../packages/components/collapse/collapse.tsx","../packages/components/utils/empty/index.tsx","../packages/components/datagrid/cell.tsx","../packages/components/collapse/item.tsx","../packages/js/hooks.ts","../packages/components/datagrid/resize.tsx","../packages/components/datagrid/sorter.tsx","../packages/components/datagrid/row.tsx","../packages/components/datagrid/datagrid.tsx","../packages/components/description/description.tsx","../packages/components/drawer/drawer.tsx","../packages/components/list/item.tsx","../packages/components/list/list.tsx","../packages/components/list/virtual.tsx","../packages/components/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/dropdown/item.tsx","../packages/components/dropdown/dropdown.tsx","../packages/components/flex/flex.tsx","../packages/components/form/context.tsx","../packages/components/form/useForm.ts","../packages/components/form/form.tsx","../packages/components/modal/modal.tsx","../packages/components/form/field.tsx","../packages/components/modal/hookModal.tsx","../packages/components/text/text.tsx","../packages/components/progress/circle.tsx","../packages/components/text/index.tsx","../packages/components/text/number.tsx","../packages/components/text/time.tsx","../packages/components/text/highlight.tsx","../packages/components/progress/line.tsx","../packages/components/progress/progress.tsx","../packages/components/video/video.tsx","../packages/js/usePreview/renderFile.tsx","../packages/js/usePreview/content.tsx","../packages/js/usePreview/index.tsx","../packages/components/image/image.tsx","../packages/components/input/container.tsx","../packages/components/image/index.tsx","../packages/components/image/list.tsx","../packages/components/input/input.tsx","../packages/components/input/index.tsx","../packages/components/input/textarea.tsx","../packages/components/input/number.tsx","../packages/components/input/range.tsx","../packages/components/message/message.tsx","../packages/components/modal/index.tsx","../packages/components/modal/useModal.tsx","../packages/components/pagination/page.tsx","../packages/components/pagination/pagination.tsx","../packages/components/tag/tag.tsx","../packages/components/select/options.tsx","../packages/components/select/select.tsx","../packages/components/picker/colors/footer.tsx","../packages/components/picker/colors/handle.tsx","../packages/components/picker/colors/index.tsx","../packages/components/picker/dates/dates.tsx","../packages/components/picker/dates/panel.tsx","../packages/components/picker/dates/index.tsx","../packages/components/picker/time/item.tsx","../packages/components/picker/time/panel.tsx","../packages/components/picker/time/index.tsx","../packages/components/popconfirm/popconfirm.tsx","../packages/components/radio/item.tsx","../packages/components/radio/radio.tsx","../packages/components/resizable/resizable.tsx","../packages/components/step/divider.tsx","../packages/components/step/item.tsx","../packages/components/step/step.tsx","../packages/components/swiper/item.tsx","../packages/components/swiper/swiper.tsx","../packages/components/tabs/item.tsx","../packages/components/tabs/tabs.tsx","../packages/components/tree/item.tsx","../packages/components/tree/tree.tsx","../packages/components/upload/renderFile.tsx","../packages/components/upload/upload.tsx"],"sourcesContent":["import \"./ripple.css\";\n\nconst TIMEOUT = 500;\n\nconst useRipple = () => {\n\tif (document.documentElement.dataset[\"useripple\"]) return;\n\tdocument.documentElement.dataset[\"useripple\"] = \"enable\";\n\n\tdocument.addEventListener(\"mousedown\", listener);\n};\n\nfunction listener(e: MouseEvent) {\n\tconst target = e.target as HTMLElement;\n\tconst parent = target.closest(\"[data-ripple]\") as HTMLElement;\n\n\tif (!target || !parent) return;\n\n\ttriggerRipple(parent, e);\n}\n\nfunction triggerRipple(target: HTMLElement, e: MouseEvent) {\n\tconst [$box, $ripple] = createRipple();\n\tconst rect = target.getBoundingClientRect();\n\tconst size = Math.max(rect.width, rect.height) * 2;\n\n\t$ripple.style.cssText = `\n left: ${e.pageX - rect.left}px;\n top: ${e.pageY - rect.top}px;\n width: ${size}px;\n height: ${size}px;\n transition: all ${TIMEOUT / 1000}s;\n `;\n\ttarget.insertAdjacentElement(\"afterbegin\", $box);\n\ttarget.offsetHeight;\n\t$ripple.classList.add(\"i-ripple-active\");\n\n\tsetTimeout(() => {\n\t\t$box.remove();\n\t}, TIMEOUT);\n}\n\nfunction createRipple() {\n\tconst $box = document.createElement(\"SPAN\");\n\tconst $ripple = document.createElement(\"SPAN\");\n\n\t$box.className = \"i-ripple-container\";\n\t$ripple.className = \"i-ripple\";\n\n\t$box.append($ripple);\n\n\treturn [$box, $ripple];\n}\n\nexport default useRipple;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n","import useRipple from \"@p/js/useRipple\";\nimport classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\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};\n\nexport default Button as CompositionButton;\n","import Button from \"./button\";\nimport Group from \"./group\";\nimport Toggle from \"./toggle\";\n\nButton.Toggle = Toggle;\nButton.Group = Group;\n\nexport default Button;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useEffect } from \"react\";\nimport Button from \"./button\";\nimport { IButtonToggle } from \"./type\";\n\nexport default function Toggle(props: IButtonToggle) {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\tactiveClass,\n\t\tafter,\n\t\tdisabled,\n\t\tchildren,\n\t\tclassName,\n\t\tonClick,\n\t\tonToggle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t\tdone: true,\n\t});\n\n\tconst toggle = () => {\n\t\tconst hasAfter = after !== undefined;\n\t\tconst nextActive = !state.active;\n\n\t\tObject.assign(state, {\n\t\t\tactive: nextActive,\n\t\t\tdone: !hasAfter,\n\t\t});\n\t\tonToggle?.(nextActive);\n\n\t\thasAfter &&\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.done = true;\n\t\t\t}, 16);\n\t};\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tonClick?.(e);\n\n\t\t!disabled && toggle();\n\t};\n\n\tuseEffect(() => {\n\t\tstate.active !== active && toggle();\n\t}, [active]);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\t{ [activeClass || \"\"]: state.active },\n\t\t\t\t\"i-btn-toggle\"\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-btn-toggle-content\", {\n\t\t\t\t\t\"i-btn-toggle-active\": state.done,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{state.active ? after ?? children : children}\n\t\t\t</div>\n\t\t</Button>\n\t);\n}\n","import classNames from \"classnames\";\nimport { 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, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = (props: IIcon) => {\n\tconst {\n\t\tref,\n\t\ticon,\n\t\tsize = \"1.425em\",\n\t\trotate,\n\t\tstyle,\n\t\tclassName,\n\t\t...restProps\n\t} = props;\n\n\tif (!isValidElement(icon)) return icon;\n\n\tconst elProps = {\n\t\tref,\n\t\tstyle: {\n\t\t\ttransform: rotate ? `rotate(${rotate}deg)` : undefined,\n\t\t\t...style,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t},\n\t\tclassName: classNames(\"i-icon\", className),\n\t\t...restProps,\n\t};\n\n\treturn cloneElement(icon, elProps);\n};\n\nexport default Icon;\n","import { SkipPreviousRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport { IAffix } from \"./type\";\n\nfunction ToTop(props: IAffix) {\n\tconst { style, className, onClick } = props;\n\n\treturn (\n\t\t<Button\n\t\t\tsquare\n\t\t\tclassName={classNames(\"i-affix-totop\", className)}\n\t\t\tstyle={{ ...style }}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Icon icon={<SkipPreviousRound />} rotate={90} />\n\t\t</Button>\n\t);\n}\n\nexport default ToTop;\n","import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => document.body,\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst { hideShadow, border, style, className, children, header, footer } =\n\t\tprops;\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: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n","import { CSSProperties, ReactNode } from \"react\";\nimport { IModal } from \"../../components/modal/type\";\n\nexport type TPreviewItem = {\n\tsrc: string;\n\tname?: ReactNode;\n\tthumb?: string;\n\trotate?: number;\n\tzoom?: number;\n\tstyle?: CSSProperties;\n\ttype?: TFileType;\n\tsuffix?: string;\n};\n\nexport enum TFileType {\n\tIMAGE = \"IMAGE\",\n\tVIDEO = \"VIDEO\",\n\tAUDIO = \"AUDIO\",\n\tPDF = \"PDF\",\n\tEXCEL = \"EXCEL\",\n\tTXT = \"TXT\",\n\tUNKNOWN = \"UNKNOWN\",\n}\n\nexport interface IPreview {\n\titems: (TPreviewItem | string)[];\n\tinitial?: number;\n\tcontrols?: boolean;\n\tloop?: boolean;\n\tclassName?: string;\n\tstyle?: CSSProperties;\n\tmodalProps?: IModal;\n\trenderImage?: (file: TPreviewItem) => ReactNode;\n\trenderFile?: (file: TPreviewItem) => ReactNode;\n\tonClose?: () => void;\n\tonChange?: (after: number, before?: number) => void;\n\tonZoom?: (scale: number) => void;\n\tonRotate?: (deg: number) => void;\n}\n","import { MouseEvent, ReactNode } from \"react\";\nimport { Root, createRoot } from \"react-dom/client\";\nimport { TFileType } from \"../js/usePreview/type\";\nimport { TOption, TOptions, TRelativeOptions } from \"../type\";\n\ntype TComputePosition = {\n\tcontainerSize: number;\n\ttargetSize: number;\n\ttargetOffset: number;\n\tcontentSize: number;\n\tgap: number;\n\talign?: \"start\" | \"center\" | \"end\";\n};\n\nexport function getPosition(\n\t$source?: HTMLElement | null,\n\t$popup?: HTMLElement | null,\n\toptions: TRelativeOptions = {}\n): [\n\tx: number,\n\ty: number,\n\tz: {\n\t\tarrowX: number;\n\t\tarrowY: number;\n\t\tarrowPos: string;\n\t}\n] {\n\tconst { refWindow, gap = 0, offset = 0, position = \"top\", align } = options;\n\n\tif (!$source || !$popup)\n\t\treturn [\n\t\t\t0,\n\t\t\t0,\n\t\t\t{\n\t\t\t\tarrowX: 0,\n\t\t\t\tarrowY: 0,\n\t\t\t\tarrowPos: \"bottom\",\n\t\t\t},\n\t\t];\n\n\tconst rectT = $source.getBoundingClientRect();\n\tconst rectC = $popup.getBoundingClientRect();\n\n\tlet w = window.innerWidth;\n\tlet h = window.innerHeight;\n\tlet {\n\t\tleft: tl,\n\t\ttop: tt,\n\t\tright: tr,\n\t\tbottom: tb,\n\t\twidth: tw,\n\t\theight: th,\n\t} = rectT;\n\tconst { height: ch, width: cw } = rectC;\n\n\tif (!refWindow) {\n\t\tconst rectPa = $source.offsetParent?.getBoundingClientRect();\n\n\t\tw = rectPa?.width || w;\n\t\th = rectPa?.height || h;\n\t\ttl = $source.offsetLeft;\n\t\ttt = $source.offsetTop;\n\t\ttr = tl + rectT.width;\n\t\ttb = tt + rectT.height;\n\t}\n\n\tlet y = 0;\n\tlet x = 0;\n\tlet arrowX = 0;\n\tlet arrowY = 0;\n\tlet arrowPos = \"bottom\";\n\n\tswitch (position) {\n\t\tcase \"left\":\n\t\tcase \"right\":\n\t\t\ty =\n\t\t\t\tth !== ch\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: h,\n\t\t\t\t\t\t\ttargetSize: th,\n\t\t\t\t\t\t\ttargetOffset: tt,\n\t\t\t\t\t\t\tcontentSize: ch,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tt;\n\t\t\tarrowY = y < tt ? tt - y + th / 2 : th / 2;\n\n\t\t\tconst xl = tl - offset - cw;\n\t\t\tconst xr = tr + offset + cw;\n\n\t\t\tif (position === \"left\") {\n\t\t\t\tconst R = xl < 0 && xr <= w;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tconst R = w > xr || xl < 0;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\tcase \"bottom\":\n\t\t\tx =\n\t\t\t\ttw !== cw\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: w,\n\t\t\t\t\t\t\ttargetOffset: tl,\n\t\t\t\t\t\t\ttargetSize: tw,\n\t\t\t\t\t\t\tcontentSize: cw,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tl;\n\t\t\tarrowX = x > tl ? cw / 2 : tl - x + tw / 2;\n\n\t\t\tconst yt = tt - offset - ch;\n\t\t\tconst yb = tb + offset + ch;\n\t\t\tif (position === \"top\") {\n\t\t\t\tconst T = yt < 0 && yb <= h;\n\t\t\t\ty = T ? tb + offset : yt;\n\t\t\t\tarrowY = T ? 0 : ch;\n\t\t\t\tarrowPos = T ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\tconst B = h > yb || yt < 0;\n\t\t\t\ty = B ? tb + offset : yt;\n\t\t\t\tarrowY = B ? 0 : ch;\n\t\t\t\tarrowPos = B ? \"top\" : \"bottom\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn [\n\t\tx,\n\t\ty,\n\t\t{\n\t\t\tarrowX,\n\t\t\tarrowY,\n\t\t\tarrowPos,\n\t\t},\n\t];\n}\n\nexport function getPointPosition(e: MouseEvent, content: HTMLElement) {\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst parent = content.offsetParent;\n\tlet pw,\n\t\tph,\n\t\tpl = 0,\n\t\tpt = 0;\n\n\tif (parent) {\n\t\tconst {\n\t\t\twidth: ow,\n\t\t\theight: oh,\n\t\t\tleft: ol,\n\t\t\ttop: ot,\n\t\t} = parent.getBoundingClientRect();\n\t\tpw = ow;\n\t\tph = oh;\n\t\tpt = ot;\n\t\tpl = ol;\n\t} else {\n\t\tpw = window.innerWidth;\n\t\tph = window.innerHeight;\n\t}\n\tconst x = e.pageX - pl;\n\tconst y = e.pageY - pt;\n\n\tconst left = x + w >= pw ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= ph ? (y - h > 0 ? y - h : y) : y;\n\n\treturn [left, top];\n}\n\nfunction computePosition({\n\tcontainerSize,\n\ttargetSize,\n\ttargetOffset,\n\tcontentSize,\n\tgap,\n\talign = \"center\",\n}: TComputePosition) {\n\tconst centerPoint = targetOffset + targetSize / 2;\n\n\tswitch (align) {\n\t\tcase \"start\":\n\t\t\treturn targetOffset + contentSize > containerSize\n\t\t\t\t? containerSize - contentSize - gap\n\t\t\t\t: targetOffset;\n\t\tcase \"center\":\n\t\t\tif (targetSize >= contentSize) {\n\t\t\t\treturn centerPoint - contentSize / 2;\n\t\t\t}\n\n\t\t\tif (centerPoint + contentSize / 2 + gap > containerSize) {\n\t\t\t\treturn targetOffset + targetSize - contentSize;\n\t\t\t}\n\n\t\t\tif (centerPoint - contentSize / 2 - gap < 0) {\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\treturn centerPoint - contentSize / 2;\n\t\tcase \"end\":\n\t\t\tconst result = targetOffset + targetSize - contentSize;\n\t\t\treturn result > 0 ? result : gap;\n\t\tdefault:\n\t\t\treturn centerPoint - contentSize / 2;\n\t}\n}\n\nexport function formatOption(options: TOptions): TOption[] {\n\treturn options.map((option) =>\n\t\t[\"string\", \"number\"].includes(typeof option)\n\t\t\t? { label: option, value: option }\n\t\t\t: option\n\t) as TOption[];\n}\n\nexport function animate(\n\tfrom: number,\n\tto: number,\n\tduration: number = 1000,\n\tcallback?: (v: number) => void,\n\teasing: (t: number) => number = (t) => 1 - Math.pow(1 - t, 4)\n) {\n\tconst start = performance.now();\n\tconst diff = to - from;\n\tlet raf = requestAnimationFrame(loop);\n\n\tfunction loop() {\n\t\traf = requestAnimationFrame(loop);\n\n\t\tconst past = performance.now() - start;\n\t\tlet percent = past / duration;\n\n\t\tif (percent >= 1) {\n\t\t\tpercent = 1;\n\t\t\tcancelAnimationFrame(raf);\n\t\t}\n\n\t\tconst pass = diff * easing(percent);\n\t\tcallback?.(pass);\n\t}\n}\n\nexport function formatNumber(\n\tvalue: number,\n\toptions: {\n\t\tprecision?: number;\n\t\tthousand?: string;\n\t} = {}\n) {\n\tconst { precision, thousand } = options;\n\n\tconst result = value.toFixed(precision);\n\n\tif (!thousand) return result;\n\n\tconst points = result.split(\".\");\n\tconst integer = points[0].replace(\n\t\t/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g,\n\t\t`$&${thousand}`\n\t);\n\n\tif (points.length === 1) return integer;\n\n\treturn `${integer}.${points[1]}`;\n}\n\nexport function renderNode(node: ReactNode, container = document.body) {\n\tconst div: HTMLDivElement | null = document.createElement(\"div\");\n\tcontainer.append(div);\n\n\tconst root: Root | null = createRoot(div);\n\tconst sto = setTimeout(() => {\n\t\troot?.render(node);\n\t}, 0);\n\n\treturn () => {\n\t\tdiv?.remove();\n\t\troot?.unmount();\n\t\tsto && clearTimeout(sto);\n\t};\n}\n\nexport function getSuffixByUrl(url: string) {\n\treturn url.match(/\\.([^\\./\\?]+)($|\\?)/)?.[1];\n}\n\nexport function getFileType(suffix: string, type?: string): TFileType {\n\tswitch (true) {\n\t\tcase [\"jpg\", \"jpeg\", \"png\", \"webp\", \"svg\"].includes(suffix) ||\n\t\t\ttype?.startsWith(\"image/\"):\n\t\t\treturn TFileType[\"IMAGE\"];\n\t\tcase [\"mp4\", \"avi\"].includes(suffix) || type?.startsWith(\"video/\"):\n\t\t\treturn TFileType[\"VIDEO\"];\n\t\tdefault:\n\t\t\treturn TFileType[\"UNKNOWN\"];\n\t}\n}\n\nexport function fullScreen(el: HTMLElement) {\n\tel.requestFullscreen?.();\n}\n\nexport function exitFullScreen() {\n\tdocument.exitFullscreen?.();\n}\n\nexport function formatTime(\n\ttime: number,\n\toptions?: {\n\t\tzero?: boolean;\n\t\tunits?: string[];\n\t}\n) {\n\tconst result: string[] = [];\n\tconst { zero = true, units = [\"\", \":\", \":\"] } = options || {};\n\n\tconst l = units.length;\n\tlet i = 0;\n\n\twhile (i < l) {\n\t\tif (time <= 0 && i > 1) break;\n\n\t\tconst n = Math.round(time % 60);\n\n\t\ttime = Math.floor(time / 60);\n\n\t\tresult.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);\n\t}\n\n\treturn result.join(\"\");\n}\n\nexport function getNextSorter(\n\tprevSortBy: string,\n\tprevSortType: string,\n\tsortBy: string\n): [sortBy: string, sortType: string] {\n\tconst types = [\"desc\", \"asc\"];\n\n\tif (prevSortBy === sortBy) {\n\t\tconst i = types.findIndex((t) => t === prevSortType) + 1;\n\t\tconst type = types[i] || \"\";\n\t\tconst by = type === \"\" ? \"\" : sortBy;\n\n\t\treturn [by, type];\n\t}\n\n\treturn [sortBy, \"desc\"];\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n\tif (!+bytes) return \"0 Bytes\";\n\n\tconst k = 1024;\n\tconst dm = decimals < 0 ? 0 : decimals;\n\tconst sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n\treturn value < min ? min : value > max ? max : value;\n}\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport { ICheckboxItem } from \"./type\";\n\nexport default function CheckboxItem(props: ICheckboxItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = false,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tdisabled,\n\t\tpartof,\n\t\tchildren,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst checked = e.target.checked;\n\n\t\tObject.assign(state, {\n\t\t\tvalue: checked,\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonChange?.(checked, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${state.status}`]: state.status !== \"normal\",\n\t\t\t\t\tdisabled,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype='checkbox'\n\t\t\t\tname={name}\n\t\t\t\tclassName={classNames(\"i-checkbox-input\", {\n\t\t\t\t\t[`i-checkbox-${type}`]: !partof,\n\t\t\t\t\t\"i-checkbox-partof\": partof,\n\t\t\t\t})}\n\t\t\t\tchecked={state.value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-checkbox-text'>{children || label}</span>\n\n\t\t\t{state.message && (\n\t\t\t\t<span className='i-checkbox-message'>*{state.message}</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{\n\t\tvalue: any;\n\t}>({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...state.value];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tstate.value = group;\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-checkbox-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CheckboxItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={state.value.includes(option.value)}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n","import { CloseRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { createElement } from \"react\";\nimport Icon from \"../../icon\";\nimport \"./index.css\";\nimport { IHelperIcon } from \"./type\";\n\nconst Helpericon = (props: IHelperIcon) => {\n\tconst {\n\t\tas = \"a\",\n\t\tactive,\n\t\tclassName,\n\t\ticon = <CloseRound />,\n\t\t...restProps\n\t} = props;\n\n\tif (!active) return <></>;\n\n\treturn createElement(\n\t\tas,\n\t\t{\n\t\t\tclassName: classNames(\"i-helpericon\", className),\n\t\t\t...restProps,\n\t\t},\n\t\t[\n\t\t\tcreateElement(Icon, {\n\t\t\t\tkey: uid(3),\n\t\t\t\ticon,\n\t\t\t}),\n\t\t]\n\t);\n};\n\nexport default Helpericon;\n","import { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { ICollapse, ICollapseItem, TKey } from \"./type\";\n\nconst Collapse = (props: ICollapse) => {\n\tconst {\n\t\tactive,\n\t\titems,\n\t\tmultiple,\n\t\tborder,\n\t\theaderClickable,\n\t\tclassName,\n\t\tchildren,\n\t\trenderToggle = (active: boolean) =>\n\t\t\tactive ? <MinusRound /> : <PlusRound />,\n\t\tonCollapse,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t});\n\n\tconst collapses = useMemo(() => {\n\t\tif (!items) {\n\t\t\tif (!children) return [];\n\n\t\t\treturn (\n\t\t\t\tChildren.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: TKey;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst { title, children, content, disabled, ...restProps } =\n\t\t\t\t\t\tnodeProps;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...restProps,\n\t\t\t\t\t\tkey: key || i,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tcontent: children || content,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t};\n\t\t\t\t}) || []\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t}, [children]);\n\n\tconst handleHeaderClick = (item: ICollapseItem) => {\n\t\tif (!headerClickable) return;\n\n\t\thandleToggle(item);\n\t};\n\n\tconst handleToggle = (item: ICollapseItem, e?) => {\n\t\tconst { key, disabled } = item;\n\t\te?.stopPropagation();\n\t\tif (disabled) return;\n\n\t\tif (!multiple) {\n\t\t\tstate.active = state.active === key ? undefined : key;\n\t\t\tonCollapse?.(key as TKey, state.active !== undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Array.isArray(state.active)) state.active = [];\n\n\t\tconst i = state.active.findIndex((k) => k === key);\n\n\t\tif (i > -1) {\n\t\t\tstate.active.splice(i, 1);\n\t\t} else {\n\t\t\tkey !== undefined && state.active.push(key);\n\t\t}\n\t\tonCollapse?.(key as TKey, i < 0);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-collapse\",\n\t\t\t\t{\n\t\t\t\t\t\"i-collapse-bordered\": border,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{collapses.map((item) => {\n\t\t\t\tconst {\n\t\t\t\t\tkey,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps\n\t\t\t\t} = item;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? ((state.active as TKey[]) || []).includes(key)\n\t\t\t\t\t: state.active === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tclassName={classNames(\"i-collapse-item\", className, {\n\t\t\t\t\t\t\t\"i-collapse-active\": isActive,\n\t\t\t\t\t\t\t\"i-collapse-disabled\": disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='i-collapse-header'\n\t\t\t\t\t\t\tonClick={() => handleHeaderClick(item)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\tclassName='i-collapse-toggle'\n\t\t\t\t\t\t\t\ticon={renderToggle(isActive)}\n\t\t\t\t\t\t\t\tonClick={(e) => handleToggle(item, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className='i-collapse-content'>{content}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCollapse.Item = Item;\n\nexport default Collapse;\n","import { InboxTwotone } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport default function Empty(props) {\n\tconst { className, ...restProps } = props;\n\n\treturn (\n\t\t<InboxTwotone\n\t\t\tclassName={classNames(\"i-empty\", className)}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\nimport { ICell, IColumn } from \"./type\";\n\nexport function getCellStyle({\n\tjustify,\n\tcol,\n\trow,\n\tcolSpan = 1,\n\trowSpan = 1,\n}: Pick<IColumn, \"justify\" | \"fixed\"> & {\n\tcol: number;\n\trow: number;\n\tcolSpan?: number;\n\trowSpan?: number;\n\tisHeader?: boolean;\n}) {\n\tconst style = {\n\t\t\"--datagrid-justify\": justify,\n\t\tgridArea: `${row + 1} / ${col + 1} / ${row + 1 + rowSpan} / ${\n\t\t\tcol + 1 + colSpan\n\t\t}`,\n\t\tinsetInline: `var(--datagrid-cell-inset-${col})`,\n\t};\n\n\treturn style;\n}\n\nexport function Cell(props: ICell) {\n\tconst {\n\t\tcolumn,\n\t\trow,\n\t\tcol,\n\t\tdata,\n\t\tcellEllipsis,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\tconst { id, fixed, justify, rowSpan, render } = column;\n\tconst style = getCellStyle({ justify, fixed, col, row, rowSpan });\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t[`i-datagrid-cell-fixed-${fixed}`]: fixed,\n\t\t\t})}\n\t\t\tdata-col={id}\n\t\t\tstyle={style}\n\t\t\tonClick={(e) => onCellClick?.(data, column, row, col, e)}\n\t\t\tonDoubleClick={(e) =>\n\t\t\t\tonCellDoubleClick?.(data, column, row, col, e)\n\t\t\t}\n\t\t>\n\t\t\t{render?.(data[id], data, col) ?? (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-datagrid-cell-content\", {\n\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\": cellEllipsis,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{data[id]}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { ICollapseItem } from \"./type\";\n\nexport default function Item(props: ICollapseItem) {\n\treturn <></>;\n}\n","import { useEffect } from \"react\";\n\ntype TMouseEvent = (e: MouseEvent) => void;\n\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst touchable = \"ontouchend\" in document;\nconst EVENTS: any = {\n\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\tUP: touchable ? \"touchend\" : \"mouseup\",\n};\n\ndocument.addEventListener(\n\tEVENTS.MOVE,\n\t(e: MouseEvent) => {\n\t\tfor (const listener of MouseMoveEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t},\n\t{ passive: false }\n);\n\ndocument.addEventListener(EVENTS.UP, (e) => {\n\tfor (const listener of MouseUpEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\nexport function useMouseMove(listener: TMouseEvent) {\n\tuseEffect(() => {\n\t\tMouseMoveEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseMoveEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useMouseUp(listener: TMouseEvent) {\n\tuseEffect(() => {\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\n\tconst WM = new WeakMap();\n\tconst IO = new IntersectionObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\n\t\t});\n\t}, configs);\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\tWM.set(target, callback);\n\t\ttarget && IO.observe(target);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n\nexport function useResizeObserver() {\n\tconst WM = new WeakMap();\n\tconst IO = new ResizeObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target);\n\t\t});\n\t});\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\ttarget && IO.observe(target);\n\t\tWM.set(target, callback);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\n\nexport default function Resize(props) {\n\tconst { index, onWidthChange } = props;\n\tconst state = useReactive({\n\t\tresizing: false,\n\t\tx: 0,\n\t\twidth: 0,\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst width = (tar.offsetParent as HTMLElement).offsetWidth;\n\n\t\tObject.assign(state, {\n\t\t\tx: e.pageX,\n\t\t\tresizing: true,\n\t\t\twidth,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tconst after = state.width + e.pageX - state.x;\n\t\tif (after <= 24) return;\n\n\t\tonWidthChange(index, after);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<i\n\t\t\tclassName='i-datagrid-resizor'\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Arrow = (props) => (\n\t<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n\t\t<g fill='none'>\n\t\t\t<path\n\t\t\t\td='M9 17.898c0 1.074 1.265 1.648 2.073.941l6.31-5.522a1.75 1.75 0 0 0 0-2.634l-6.31-5.522C10.265 4.454 9 5.028 9 6.102v11.796z'\n\t\t\t\tfill='currentColor'\n\t\t\t></path>\n\t\t</g>\n\t</svg>\n);\n\nexport default function Sorter(props) {\n\tconst { type } = props;\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-datagrid-sorter\", {\n\t\t\t\t[`i-datagrid-sorter-${type}`]: type,\n\t\t\t})}\n\t\t>\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t</a>\n\t);\n}\n","import classNames from \"classnames\";\nimport { Cell, getCellStyle } from \"./cell\";\nimport Resize from \"./resize\";\nimport Sorter from \"./sorter\";\nimport { IHeader, IRow } from \"./type\";\n\nexport default function Row(props: IRow) {\n\tconst {\n\t\trow,\n\t\tdata,\n\t\tcolumns,\n\t\tcellEllipsis,\n\t\tonRowClick,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-row' onClick={() => onRowClick?.(data, row)}>\n\t\t\t{columns.map((col, i) => (\n\t\t\t\t<Cell\n\t\t\t\t\tkey={i}\n\t\t\t\t\tcolumn={col}\n\t\t\t\t\tcol={i}\n\t\t\t\t\trow={row}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function Header(props: IHeader) {\n\tconst {\n\t\tcolumns,\n\t\tresizable,\n\t\tcellEllipsis,\n\t\tsortBy,\n\t\tsortType,\n\t\tonWidthChange,\n\t\tonHeaderClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-header i-datagrid-row'>\n\t\t\t{columns.map((column, col) => {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\ttitle,\n\t\t\t\t\tfixed,\n\t\t\t\t\tcolSpan,\n\t\t\t\t\tsorter,\n\t\t\t\t\tjustify,\n\t\t\t\t\trenderHeader,\n\t\t\t\t} = column;\n\t\t\t\tconst style = getCellStyle({\n\t\t\t\t\tjustify,\n\t\t\t\t\trow: 0,\n\t\t\t\t\tcol,\n\t\t\t\t\tcolSpan,\n\t\t\t\t});\n\n\t\t\t\tconst order = sortBy === id ? sortType : \"\";\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\tdata-col={id}\n\t\t\t\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t\t\t\t\"i-datagrid-has-sorter\": sorter,\n\t\t\t\t\t\t\t\"i-datagrid-cell-fixed\": fixed,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{ ...style, insetBlockStart: 0 }}\n\t\t\t\t\t\tonClick={(e) => onHeaderClick?.(column, e)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderHeader?.(column, col) ?? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content\",\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\":\n\t\t\t\t\t\t\t\t\t\t\tcellEllipsis,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title || id}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{sorter && <Sorter type={order} />}\n\n\t\t\t\t\t\t{resizable && (\n\t\t\t\t\t\t\t<Resize index={col} onWidthChange={onWidthChange} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","import { getNextSorter } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport ScrollContainer, { Scrollbars } from \"react-custom-scrollbars-2\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => <Loading size='1.5em' className='color-3' />,\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst scrollbar = useRef<Scrollbars>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && scrollbar.current?.scrollTop(0);\n\t}, [loading]);\n\n\tconst scrollBarStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<ScrollContainer\n\t\t\tref={scrollbar}\n\t\t\tautoHide\n\t\t\tautoHeight\n\t\t\tautoHeightMax={height}\n\t\t\tstyle={scrollBarStyle}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t\trenderView={(props) => (\n\t\t\t\t<div\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={classNames({ \"i-datagrid-loading\": loading })}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tonScroll={onScroll}\n\t\t>\n\t\t\t<div ref={container} className='i-datagrid'>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</ScrollContainer>\n\t);\n};\n\nexport default Datagrid;\n","import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t\tinit: false,\n\t});\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tstate.active = true;\n\t\t\ttoggable.current = true;\n\t\t\tstate.init = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tstate.active = false;\n\t\tsetTimeout(() => {\n\t\t\tif (!keepDOM) {\n\t\t\t\tstate.show = false;\n\t\t\t}\n\t\t\tonVisibleChange?.(false);\n\t\t\ttoggable.current = true;\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\treturn createPortal(\n\t\tstate.show && (\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\t\"i-active\": state.active,\n\t\t\t\t})}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</header>\n\n\t\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t\t<div className='i-drawer-footer'>{footer}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n","import classNames from \"classnames\";\nimport { IListItem } from \"./type\";\n\nconst Item = (props: IListItem) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttype,\n\t\talign,\n\t\tdisabled,\n\t\tlabel,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<li\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-list-item\", className, {\n\t\t\t\t\"i-list-item-active\": active,\n\t\t\t\t\"i-list-option\": type === \"option\",\n\t\t\t\tdisabled,\n\t\t\t})}\n\t\t\tstyle={{ alignItems: align, ...style }}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label !== undefined && (\n\t\t\t\t<span className='i-list-item-label'>{label}</span>\n\t\t\t)}\n\t\t\t{children}\n\t\t</li>\n\t);\n};\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, cloneElement, Fragment } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\nimport Virtual from \"./virtual\";\n\nconst List = (props: IList) => {\n\tconst { label, type, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\tif (node.type === Fragment) return node;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t...node.props,\n\t\t\t\t\ttype,\n\t\t\t\t});\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Virtual = Virtual;\nList.Item = Item;\n\nexport default List;\n","import VList from \"rc-virtual-list\";\nimport { IVirtual } from \"./type\";\n\nconst Virtual = (props: IVirtual) => {\n\tconst { data, itemKey, renderItem, ...restProps } = props;\n\n\treturn (\n\t\t<VList data={data} itemKey={itemKey} {...restProps}>\n\t\t\t{(item, i) => {\n\t\t\t\treturn renderItem?.(item, i);\n\t\t\t}}\n\t\t</VList>\n\t);\n};\n\nexport default Virtual;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IPopupContent } from \"./type\";\n\nconst Content = (props: IPopupContent) => {\n\tconst {\n\t\tref,\n\t\tgetContainer = (trigger) => trigger?.offsetParent ?? document.body,\n\t\ttrigger,\n\t\tarrow,\n\t\tarrowProps = {},\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\tconst arrowCSS = useMemo(() => {\n\t\tlet { left, top, pos } = arrowProps;\n\t\tlet transform = \"\";\n\n\t\tswitch (pos) {\n\t\t\tcase \"left\":\n\t\t\t\tleft += 2;\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\t\tleft -= 2;\n\t\t\t\ttransform = `translate(0, -50%)`;\n\t\t\t\tbreak;\n\t\t\tcase \"top\":\n\t\t\t\ttop -= 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\ttop += 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\ttransform,\n\t\t};\n\t}, [arrowProps]);\n\n\tconst content = (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-popup\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{arrow && (\n\t\t\t\t<svg\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-popup-arrow'\n\t\t\t\t\tstyle={arrowCSS}\n\t\t\t\t>\n\t\t\t\t\t<path d='M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' />\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{children}\n\t\t</div>\n\t);\n\n\treturn createPortal(content, getContainer(trigger));\n};\n\nexport default Content;\n","import { 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\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 { className, ...restProps } = child.props as any;\n\t\t\t\tObject.keys(eventMaps[trigger]).map((evt) => {\n\t\t\t\t\tif (!restProps[evt]) return;\n\t\t\t\t\tconst fn = eventMaps[trigger][evt];\n\n\t\t\t\t\teventMaps[trigger][evt] = (e) => {\n\t\t\t\t\t\tfn();\n\t\t\t\t\t\trestProps[evt](e);\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\tref: triggerRef,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps,\n\t\t\t\t\t...eventMaps[trigger],\n\t\t\t\t});\n\t\t\t})}\n\n\t\t\t{state.show && (\n\t\t\t\t<Content\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\n\t\t\t\t\tstyle={{ ...style, ...state.style }}\n\t\t\t\t\tarrowProps={state.arrowProps}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\t{...contentTouch}\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\n\t\t\t\t\tgetContainer={getContainer}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Content>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import List from \"../list\";\nimport Popup from \"../popup\";\nimport { IDropItem } from \"./type\";\n\nconst { Item: ListItem } = List;\n\nconst Item = (props: IDropItem) => {\n\tconst { more, moreProps, ...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) => {\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) => {\n\tconst {\n\t\tas: Component = \"div\",\n\t\talign,\n\t\tjustify,\n\t\tdirection,\n\t\twrap,\n\t\tgap,\n\t\tcolumns,\n\t\tclassName,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\") return `repeat(${columns}, 1fr)`;\n\n\t\treturn columns;\n\t}, [columns]);\n\n\treturn (\n\t\t<Component\n\t\t\t{...restProps}\n\t\t\tstyle={{\n\t\t\t\talignItems: align,\n\t\t\t\tjustifyContent: justify,\n\t\t\t\tgap,\n\t\t\t\tflexDirection: direction,\n\t\t\t\tflexWrap: wrap === true ? \"wrap\" : wrap,\n\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t[columns ? \"grid\" : \"flex\"]: true,\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport default Flex;\n","import { createContext } from \"react\";\nimport { IFormInstance } from \"./useForm\";\n\nconst Context = createContext({} as IFormInstance);\n\nexport default Context;\n","import PubSub from \"pubsub-js\";\nimport { uid } from \"radash\";\nimport { useRef } from \"react\";\nimport { IForm, TRule } from \"./type\";\n\nexport class IFormInstance {\n\treadonly id?: string;\n\tdata: Record<string, any> = {};\n\tcacheData: Record<string, any> = {};\n\trules?: Pick<IForm, \"rules\"> = {};\n\n\tconstructor() {\n\t\tthis.id = uid(8);\n\t\tthis.data = {};\n\t}\n\n\tget(field?: string) {\n\t\treturn field ? this.data[field] : this.data;\n\t}\n\n\tset(field: any, value?: any) {\n\t\tconst id = this.id;\n\t\tif (!this.data) return;\n\n\t\tif (typeof field === \"string\") {\n\t\t\tthis.data[field] = value;\n\t\t\tthis.cacheData[field] = value;\n\t\t\tPubSub.publish(`${id}:set:${field}`, value);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(field).map((name) => {\n\t\t\tthis.data[name] = field[name];\n\t\t\tthis.cacheData[name] = field[name];\n\t\t\tPubSub.publish(`${id}:set:${name}`, field[name]);\n\t\t});\n\t}\n\n\tdelete(field) {\n\t\tdelete this.data[field];\n\t}\n\n\tclear() {\n\t\tif (!this.data) return;\n\t\tthis.cacheData = {};\n\n\t\tObject.keys(this.data).map((name) => {\n\t\t\tPubSub.publish(`${this.id}:set:${name}`, undefined);\n\t\t\tthis.data[name] = undefined;\n\t\t});\n\t}\n\n\tasync validate(field?: string) {\n\t\tconst { id, rules, data } = this;\n\t\tif (!rules) return data;\n\n\t\tif (field) {\n\t\t\tconst o = rules[field];\n\t\t\tconst rule: TRule = {\n\t\t\t\tvalidator: (v) =>\n\t\t\t\t\tArray.isArray(v)\n\t\t\t\t\t\t? v.length > 0\n\t\t\t\t\t\t: ![undefined, null, \"\"].includes(v),\n\t\t\t\tmessage: undefined,\n\t\t\t};\n\n\t\t\tif (typeof o === \"function\") {\n\t\t\t\trule.validator = o;\n\t\t\t} else if (o === true) {\n\t\t\t\trule.message = \"required\";\n\t\t\t} else {\n\t\t\t\tObject.assign(rule, o);\n\t\t\t}\n\n\t\t\tconst isValid = rule.validator?.(data[field], this);\n\n\t\t\tif (!isValid) {\n\t\t\t\tPubSub.publish(`${id}:invalid:${field}`, {\n\t\t\t\t\tmessage: rule.message,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\tmessage: null,\n\t\t\t\tstatus: \"normal\",\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tlet isAllValid = true;\n\n\t\tObject.keys(data).map((name) => {\n\t\t\tconst o = rules[name];\n\t\t\tif (o === undefined) return;\n\n\t\t\tconst rule: TRule = {\n\t\t\t\tvalidator: (v) => (Array.isArray(v) ? v.length > 0 : !!v),\n\t\t\t\tmessage: undefined,\n\t\t\t};\n\n\t\t\tif (typeof o === \"function\") {\n\t\t\t\trule.validator = o;\n\t\t\t} else if (o === true) {\n\t\t\t\trule.message = \"required\";\n\t\t\t} else {\n\t\t\t\tObject.assign(rule, o);\n\t\t\t}\n\n\t\t\tconst isValid = rule.validator?.(data[name], this);\n\n\t\t\tif (!isValid) {\n\t\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\t\tmessage: rule.message,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t});\n\t\t\t\tisAllValid = false;\n\t\t\t} else {\n\t\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\t\tmessage: null,\n\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn isAllValid ? data : false;\n\t}\n}\n\nexport default function useForm(form?: IFormInstance) {\n\tconst formRef = useRef<IFormInstance>(null);\n\n\tif (!formRef.current) {\n\t\tformRef.current = form ?? new IFormInstance();\n\t}\n\n\treturn formRef.current;\n}\n","import classNames from \"classnames\";\nimport { useEffect } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tchildren,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst handleEnter = (e) => {\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(form.data, form);\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\treturn (\n\t\t<Context.Provider value={form}>\n\t\t\t<form\n\t\t\t\tstyle={{ ...style, width }}\n\t\t\t\tclassName={classNames(\"i-form\", className)}\n\t\t\t\tonKeyDown={handleEnter}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context.Provider>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n","import classNames from \"classnames\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Button from \"../button\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { CompositionModal, IModal, IModalContent } from \"./type\";\n\nfunction DefaultContent(props: IModalContent) {\n\tconst {\n\t\ttitle,\n\t\tfooter,\n\t\thideCloseButton,\n\t\tfooterLeft,\n\t\tokButtonProps = {\n\t\t\tchildren: \"确定\",\n\t\t\tonClick: props.onOk,\n\t\t},\n\t\tcancelButtonProps = {\n\t\t\tsecondary: true,\n\t\t\tchildren: \"关闭\",\n\t\t\tonClick: props.onClose,\n\t\t},\n\t\tchildren,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign({}, okButtonProps);\n\t\tconst propsCancel = Object.assign({}, cancelButtonProps);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{footerLeft}\n\t\t\t\t<Button {...propsOk} />\n\t\t\t\t<Button {...propsCancel} />\n\t\t\t</>\n\t\t);\n\t}, [footer, okButtonProps, cancelButtonProps]);\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t<header className='i-modal-header'>\n\t\t\t\t\t{title && <b>{title}</b>}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\tclassName='i-modal-close'\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<div className='i-modal-content'>{children}</div>\n\n\t\t\t<footer className='i-modal-footer'>{renderFooter}</footer>\n\t\t</>\n\t);\n}\n\nfunction Modal(props: IModal) {\n\tconst {\n\t\tvisible,\n\t\ttitle,\n\t\tfooter,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tclosable = true,\n\t\thideBackdrop,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\tshadow = true,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tfooterLeft,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\tonOk,\n\t\t...restProps\n\t} = props;\n\tconst [show, setShow] = useState(visible);\n\tconst [active, setActive] = useState(false);\n\tconst [bounced, setBounced] = useState(false);\n\tconst toggable = useRef(true);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tsetShow(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tsetActive(true);\n\t\t\tonVisibleChange?.(true);\n\t\t\ttoggable.current = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tif (!closable) {\n\t\t\tsetBounced(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetBounced(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t}, 400);\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tsetTimeout(() => {\n\t\t\tsetShow(false);\n\t\t\ttoggable.current = true;\n\t\t\tonVisibleChange?.(false);\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tif (!show) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-modal-container\",\n\t\t\t\t{\n\t\t\t\t\t\"i-modal-backdrop\": !hideBackdrop,\n\t\t\t\t\t\"i-modal-customized\": customized,\n\t\t\t\t\t\"i-modal-active\": active,\n\t\t\t\t\tfixed,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\tonClick={handleBackdropClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-modal\", {\n\t\t\t\t\tbounced,\n\t\t\t\t\tshadow,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{customized && children}\n\n\t\t\t\t{!customized && (\n\t\t\t\t\t<DefaultContent\n\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\thideCloseButton={hideCloseButton}\n\t\t\t\t\t\tfooter={footer}\n\t\t\t\t\t\tokButtonProps={okButtonProps}\n\t\t\t\t\t\tcancelButtonProps={cancelButtonProps}\n\t\t\t\t\t\tchildren={children}\n\t\t\t\t\t\tfooterLeft={footerLeft}\n\t\t\t\t\t\tonOk={onOk}\n\t\t\t\t\t\tonClose={handleHide}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body\n\t);\n}\n\nexport default Modal as CompositionModal;\n","import { useReactive } from \"ahooks\";\nimport PubSub from \"pubsub-js\";\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from \"react\";\nimport Context from \"./context\";\nimport { IField } from \"./type\";\n\nfunction Field(props: IField) {\n\tconst { name, required, children } = props;\n\tconst state = useReactive({\n\t\tvalue: undefined,\n\t\tstatus: \"normal\",\n\t\tmessage: undefined,\n\t\tupdate: 0,\n\t});\n\tconst form = useContext(Context);\n\tconst { id } = form;\n\n\tconst handleChange = (v) => {\n\t\tif (!name) return;\n\n\t\tform.set(name, v);\n\t};\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node) => {\n\t\t\tif (!isValidElement(node)) return null;\n\n\t\t\tconst { onChange } = node.props as any;\n\t\t\tconst { value, status, message } = state;\n\n\t\t\treturn cloneElement(node, {\n\t\t\t\tvalue,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t\trequired,\n\t\t\t\tonChange: (...args) => {\n\t\t\t\t\thandleChange(args[0]);\n\t\t\t\t\tonChange?.(...args);\n\t\t\t\t\tObject.assign(state, {\n\t\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t\t\tmessage: undefined,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t} as any);\n\t\t});\n\t}, [children, state.update]);\n\n\tuseEffect(() => {\n\t\tif (!name) return;\n\n\t\tPubSub.subscribe(`${id}:set:${name}`, (evt, v) => {\n\t\t\tstate.value = v;\n\t\t\tstate.update += 1;\n\t\t});\n\t\tPubSub.subscribe(`${id}:invalid:${name}`, (evt, v) => {\n\t\t\tObject.assign(state, v);\n\t\t\tstate.update += 1;\n\t\t});\n\n\t\tPromise.resolve().then(() => {\n\t\t\tform.set(name, form.cacheData[name] ?? undefined);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${id}:set:${name}`);\n\t\t\tPubSub.unsubscribe(`${id}:invalid:${name}`);\n\t\t\tform.delete(name);\n\t\t};\n\t}, [name, children]);\n\n\tif (!name) return children;\n\n\treturn hijackChildren;\n}\n\nexport default Field;\n","import { useReactive } from \"ahooks\";\nimport { RefObject, useImperativeHandle } from \"react\";\nimport Modal from \"./modal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nconst HookModal = (\n\tprops: IModal & { ref?: RefObject<RefHookModal | null> }\n) => {\n\tconst { ref } = props;\n\tconst state = useReactive<IModal>({});\n\n\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\twave,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\tconst gradients = useMemo(() => {\n\t\tif (!gradient || !Array.isArray(gradient)) return {};\n\n\t\treturn {\n\t\t\tbackgroundImage: `-webkit-linear-gradient(${gradient.join(\",\")})`,\n\t\t\tbackgroundClip: \"text\",\n\t\t};\n\t}, [gradient]);\n\n\treturn (\n\t\t<Tag\n\t\t\tstyle={{\n\t\t\t\tfontSize: size,\n\t\t\t\tfontWeight: weight,\n\t\t\t\ttextDecoration: decoration,\n\t\t\t\t...gradients,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t\"i-text-gradient\": gradient,\n\t\t\t\t\"i-text-gradient-wave\": wave,\n\t\t\t})}\n\t\t>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport default Text as CompositionText;\n","import Text from \"../text\";\nimport { IProgress } from \"./type\";\n\nexport default function Circle(\n\tprops: Pick<IProgress, \"value\" | \"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 HighLight from \"./highlight\";\nimport Number from \"./number\";\nimport Text from \"./text\";\nimport Time from \"./time\";\n\nText.Number = Number;\nText.Time = Time;\nText.HighLight = HighLight;\n\nexport default Text;\n","import { animate, formatNumber } from \"@p/js/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Text from \"./text\";\nimport { ITextNumber } from \"./type\";\n\nexport default function Number(props: ITextNumber) {\n\tconst {\n\t\tcount,\n\t\tto,\n\t\tdecimal,\n\t\tthousand = \",\",\n\t\tduration = 2400,\n\t\teasing,\n\t\t...restProps\n\t} = props;\n\tconst [n, setN] = useState(count);\n\n\tconst number = useMemo(() => {\n\t\tif (n === undefined) return;\n\n\t\tconst z = n.toFixed(decimal);\n\n\t\tif (!thousand) return z;\n\n\t\treturn formatNumber(n, { precision: decimal, thousand });\n\t}, [n, thousand]);\n\n\tuseEffect(() => {\n\t\tif (count === undefined || to === undefined) return;\n\n\t\tanimate(count, to, duration, (v) => setN(count + v), easing);\n\t}, [to]);\n\n\tuseEffect(() => setN(count), [count]);\n\n\treturn <Text {...restProps}>{number}</Text>;\n}\n","import { formatTime } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextTime } from \"./type\";\n\nexport default function Number(props: ITextTime) {\n\tconst { seconds, zero, units, ...restProps } = props;\n\n\tconst text = useMemo(() => {\n\t\tif (seconds === undefined) return \"\";\n\n\t\treturn formatTime(seconds, {\n\t\t\tzero,\n\t\t\tunits,\n\t\t});\n\t}, [seconds]);\n\n\treturn <Text {...restProps}>{text}</Text>;\n}\n","import { findAll } from \"highlight-words-core\";\nimport { Fragment, useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextHighLight } from \"./type\";\n\nexport default function HighLight(props: ITextHighLight) {\n\tconst {\n\t\tkeyword,\n\t\ttext,\n\t\tescape,\n\t\tcaseSensitive,\n\t\trenderWord = (word) => <mark>{word}</mark>,\n\t\t...restProps\n\t} = props;\n\n\tconst content = useMemo(() => {\n\t\tconst source = text;\n\t\tconst searchWords = typeof keyword === \"string\" ? [keyword] : keyword;\n\n\t\tconst chunks = findAll({\n\t\t\tsearchWords,\n\t\t\ttextToHighlight: text,\n\t\t\tcaseSensitive,\n\t\t\tautoEscape: escape,\n\t\t});\n\n\t\tconst result = chunks.map((chunk, i) => {\n\t\t\tconst { end, highlight, start } = chunk;\n\t\t\tconst word = source.slice(start, end);\n\n\t\t\treturn highlight ? (\n\t\t\t\t<Fragment key={i}>{renderWord(word)}</Fragment>\n\t\t\t) : (\n\t\t\t\tword\n\t\t\t);\n\t\t});\n\n\t\treturn result;\n\t}, [keyword, text, escape, caseSensitive]);\n\n\treturn <Text {...restProps}>{content}</Text>;\n}\n","import classNames from \"classnames\";\nimport { MouseEvent, RefObject } from \"react\";\nimport { IProgress } from \"./type\";\n\nconst Line = (\n\tprops: Pick<IProgress, \"value\" | \"size\" | \"barClass\" | \"renderCursor\"> & {\n\t\tref: RefObject<HTMLDivElement | null>;\n\t\tdragging: boolean;\n\t\tonMouseDown: (e: MouseEvent) => void;\n\t\tonTouchStart: (e) => void;\n\t}\n) => {\n\tconst {\n\t\tref,\n\t\tvalue,\n\t\tsize,\n\t\tbarClass,\n\t\tdragging,\n\t\trenderCursor,\n\t\tonMouseDown,\n\t\tonTouchStart,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName='i-progress'\n\t\t\tstyle={{ height: size }}\n\t\t\tonMouseDown={onMouseDown}\n\t\t\tonTouchStart={onTouchStart}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-progress-bar\", barClass, {\n\t\t\t\t\t\"no-transition\": dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{ width: `${value}%` }}\n\t\t\t>\n\t\t\t\t{renderCursor && (\n\t\t\t\t\t<a className='i-progress-cursor'>\n\t\t\t\t\t\t{renderCursor(value ?? 0)}\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Line;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tsize = 8,\n\t\theight = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\twidth: 0,\n\t\tstart: 0,\n\t});\n\n\tconst toFixedValue = useMemo(() => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t}, [state.value, precision]);\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e.pageX - rect.left) * 100) / rect.width;\n\n\t\tObject.assign(state, {\n\t\t\tvalue,\n\t\t\twidth: rect.width,\n\t\t\tstart: rect.left,\n\t\t\tdragging: true,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, width } = state;\n\t\tconst offset = e.pageX - start;\n\n\t\tif (offset < 0 || offset > width) return;\n\n\t\tstate.value = ((e.pageX - start) * 100) / width;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(toFixedValue);\n\t\tstate.dragging = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle value={state.value} height={height} size={size} />\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n","import { exitFullScreen, fullScreen } from \"@p/js/utils\";\nimport {\n\tFullscreenExitRound,\n\tFullscreenRound,\n\tPauseRound,\n\tPlayArrowRound,\n\tStopRound,\n\tVolumeDownRound,\n\tVolumeOffRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Progress from \"../progress\";\nimport Text from \"../text\";\nimport \"./index.css\";\nimport { IVideo } from \"./type\";\n\nconst Video = (props: IVideo) => {\n\tconst {\n\t\tref,\n\t\tstyle,\n\t\thideControls,\n\t\tautoplay,\n\t\tmuted,\n\t\tvolume = 50,\n\t\theight,\n\t\twidth,\n\t\tuseOriginControls,\n\t\ttimeProgressProps = {\n\t\t\tbarClass: \"bg-2\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-1\",\n\t\t},\n\t\tclassName,\n\t\tonFullScreenChange,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tplaying: autoplay,\n\t\tvolume: muted ? 0 : volume,\n\t\tvolumeCache: 0,\n\t\tmuted,\n\t\tcurrent: 0,\n\t\tduration: 0,\n\t\tisFullscreen: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst timeUpdateListener = (e) => {\n\t\tconst tar = e.target;\n\t\tif (tar.paused) return;\n\n\t\tObject.assign(state, {\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t};\n\n\tconst playChangeListener = (e) => {\n\t\tstate.playing = !e.target.paused;\n\t};\n\n\tconst fsChangeListener = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\n\t};\n\n\tconst volumeChangeListener = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tvolume: tar.volume * 100,\n\t\t\tmuted: tar.volume === 0,\n\t\t});\n\t};\n\n\tconst handlePlay = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.paused ? v.play() : v.pause();\n\t};\n\n\tconst handleReady = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tduration: tar.duration,\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t\ttar.volume = state.volume / 100;\n\t};\n\n\tconst handleMuted = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tif (v.volume > 0) {\n\t\t\tstate.volumeCache = v.volume;\n\t\t\tv.volume = 0;\n\t\t\treturn;\n\t\t}\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\n\t};\n\n\tconst handleStop = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = 0;\n\t\tv.pause();\n\t};\n\n\tconst handleFullscreen = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\n\t\tonFullScreenChange?.(!state.isFullscreen);\n\t};\n\n\tconst handleUpdateTime = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = (state.duration * t) / 100;\n\t};\n\n\tconst handleUpdateVolume = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tconst showControls = !hideControls && !useOriginControls;\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!showControls) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst handleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.pause();\n\t\t},\n\t\tstop: handleStop,\n\t\tfullscreen: handleFullscreen,\n\t\tgetVideo: () => videoRef.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\n\t\tv.addEventListener(\"play\", playChangeListener);\n\t\tv.addEventListener(\"pause\", playChangeListener);\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\n\n\t\treturn () => {\n\t\t\tclearHiddenTO();\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-video\", className)}\n\t\t\tstyle={{ height, width, ...style }}\n\t\t\tonClick={handlePlay}\n\t\t\tonDoubleClick={() => handleFullscreen()}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tonCanPlay={handleReady}\n\t\t\t\t{...restProps}\n\t\t\t\tcontrols={useOriginControls}\n\t\t\t/>\n\n\t\t\t{showControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<div className='i-video-control flex-1'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tonClick={handleStop}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tclassName='mr-8'\n\t\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\t\tvalue={(state.current / state.duration) * 100}\n\t\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='i-video-control'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='i-video-control'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tactive={state.volume <= 0}\n\t\t\t\t\t\t\tafter={\n\t\t\t\t\t\t\t\t<Icon icon={<VolumeOffRound />} size='1.2em' />\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={handleMuted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tstyle={{ width: 100 }}\n\t\t\t\t\t\t\tclassName='mr-8'\n\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Video;\n","import Icon from \"@p/components/icon\";\nimport Video from \"@p/components/video\";\nimport { FeedOutlined } from \"@ricons/material\";\nimport { TFileType, TPreviewItem } from \"./type\";\n\nexport default function renderFile(props: TPreviewItem) {\n\tconst { name, suffix, type } = props;\n\n\tswitch (type) {\n\t\tcase TFileType.IMAGE:\n\t\t\treturn <img src={props.src} />;\n\t\tcase TFileType.VIDEO:\n\t\t\treturn <Video {...props} />;\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div className='i-preview-unknown'>\n\t\t\t\t\t<Icon icon={<FeedOutlined />} size='3em' />\n\t\t\t\t\t<h5 className='mt-4'>{name || suffix || \"?\"}</h5>\n\t\t\t\t</div>\n\t\t\t);\n\t}\n}\n","import Button from \"@p/components/button\";\nimport Icon from \"@p/components/icon\";\nimport {\n\tAspectRatioRound,\n\tCloseRound,\n\tFileDownloadOutlined,\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tOpenInNewRound,\n\tRotateLeftRound,\n\tRotateRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useMemo, useRef } from \"react\";\nimport { useMouseMove, useMouseUp } from \"../hooks\";\nimport { getFileType, getSuffixByUrl } from \"../utils\";\nimport DefaultRenderFile from \"./renderFile\";\nimport { IPreview, TFileType, TPreviewItem } from \"./type\";\n\nexport default function Content(props: IPreview) {\n\tconst {\n\t\titems = [],\n\t\tinitial = 0,\n\t\trenderFile = DefaultRenderFile,\n\t\tonRotate,\n\t\tonChange,\n\t\tonClose,\n\t\tonZoom,\n\t} = props;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\trotate: 0,\n\t\tscale: 1,\n\t\ttranslate: [0, 0],\n\t\tstart: [0, 0],\n\t\tdragging: false,\n\t});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t\tstate.translate = translate.current = [0, 0];\n\t};\n\n\tconst handleRotate = (deg: number) => {\n\t\tstate.rotate += deg;\n\n\t\tonRotate?.(state.rotate);\n\t};\n\n\tconst handleMouseWheel = throttle({ interval: 60 }, (e) => {\n\t\tif (!isImage) return;\n\t\tlet after = state.scale + (e.deltaY < 0 ? 0.05 : -0.05);\n\t\tif (after > 2) after = 2;\n\t\tif (after < 0.25) after = 0.25;\n\n\t\tonZoom?.(after);\n\t\tstate.scale = after;\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!isImage) return;\n\t\te.preventDefault();\n\t\tstate.dragging = true;\n\t\tstate.start = [e.pageX, e.pageY];\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging) return;\n\t\te.preventDefault();\n\n\t\tconst [x, y] = translate.current;\n\t\tconst [ox, oy] = state.start;\n\t\tconst offsetX = e.pageX - ox;\n\t\tconst offsetY = e.pageY - oy;\n\n\t\tstate.translate = [x + offsetX, y + offsetY];\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging) return;\n\t\tstate.dragging = false;\n\t\ttranslate.current = state.translate;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName={classNames(\"i-preview-content\", {\n\t\t\t\t\t\"no-transition\": state.dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate(${state.translate\n\t\t\t\t\t\t.map((n) => `${n}px`)\n\t\t\t\t\t\t.join(\",\")}) rotate(${state.rotate}deg) scale(${\n\t\t\t\t\t\tstate.scale\n\t\t\t\t\t})`,\n\t\t\t\t}}\n\t\t\t\tonWheel={handleMouseWheel}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\n\t\t\t<div className='i-preview-controls'>\n\t\t\t\t<Button square flat onClick={onClose}>\n\t\t\t\t\t<Icon icon={<CloseRound />} />\n\t\t\t\t</Button>\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<span className='px-8'>\n\t\t\t\t\t\t{state.current + 1} / {files.length}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{state.scale !== 1 && (\n\t\t\t\t\t<Button flat onClick={() => (state.scale = 1)}>\n\t\t\t\t\t\t<Icon icon={<AspectRatioRound />} />\n\t\t\t\t\t\t<span className='mt-2'>\n\t\t\t\t\t\t\t{(state.scale * 100).toFixed(0)}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button square flat href={file.src} target='_blank'>\n\t\t\t\t\t<Icon icon={<OpenInNewRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat href={file.src} download target='_blank'>\n\t\t\t\t\t<Icon icon={<FileDownloadOutlined />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(90)}>\n\t\t\t\t\t<Icon icon={<RotateRightRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(-90)}>\n\t\t\t\t\t<Icon icon={<RotateLeftRound />} />\n\t\t\t\t</Button>\n\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current - 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current + 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","import HookModal from \"@p/components/modal/hookModal\";\nimport { RefHookModal } from \"@p/components/modal/type\";\nimport { useRef } from \"react\";\nimport { renderNode } from \"../utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPreview } from \"./type\";\n\nexport default function usePreview() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst preview = (config: IPreview) => {\n\t\tconst { items, modalProps, onClose, ...restProps } = config;\n\n\t\tconst handleClose = () => {\n\t\t\tonClose?.();\n\t\t\tunMount?.();\n\t\t};\n\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\tclassName='i-preview'\n\t\t\t\tcustomized\n\t\t\t\tshadow={false}\n\t\t\t\t{...modalProps}\n\t\t\t\tchildren={\n\t\t\t\t\t<Content\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tonClose={() => {\n\t\t\t\t\t\t\tref.current?.update({ visible: false });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tfixed\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn preview;\n}\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TFileType } from \"@p/js/usePreview/type\";\nimport { HideImageTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport Icon from \"../icon\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionImage, IImage } from \"./type\";\n\nconst Image = (props: IImage) => {\n\tconst {\n\t\tsrc,\n\t\tround,\n\t\tsize,\n\t\tinitSize,\n\t\tlazyload,\n\t\tfallback = (\n\t\t\t<Icon icon={<HideImageTwotone />} size='2em' className='color-5' />\n\t\t),\n\t\tfit,\n\t\tstyle,\n\t\tclassName,\n\t\tcover,\n\t\tcoverClass,\n\t\tusePreview: previewable,\n\t\tonLoad,\n\t\tonError,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{ status?: string }>({\n\t\tstatus: \"loading\",\n\t});\n\tconst ref = useRef<HTMLImageElement>(null);\n\tconst wh = fit ? \"100%\" : undefined;\n\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst preview = usePreview();\n\n\tconst handleError = (err) => {\n\t\tonError?.(err);\n\t\tstate.status = \"error\";\n\t};\n\n\tconst handleLoad = (e) => {\n\t\tonLoad?.(e);\n\t\tstate.status = undefined;\n\t};\n\n\tconst handleClick = (e) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tsrc &&\n\t\t\tpreview({\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\ttype: TFileType.IMAGE,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!src) return;\n\n\t\tif (!ref.current?.complete) {\n\t\t\tstate.status = \"loading\";\n\t\t}\n\n\t\tif (!lazyload || !ref.current) return;\n\n\t\tobserve(ref.current, (tar: HTMLElement, visible: boolean) => {\n\t\t\tif (!visible) return;\n\n\t\t\ttar.setAttribute(\"src\", tar.dataset.src || \"\");\n\t\t\tunobserve(tar);\n\t\t});\n\n\t\treturn () => {\n\t\t\tref.current && unobserve(ref.current);\n\t\t};\n\t}, [src]);\n\n\trestProps[lazyload ? \"data-src\" : \"src\"] = src;\n\tconst iSize = state.status === \"loading\" ? initSize : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: size ?? iSize,\n\t\t\t\theight: size ?? iSize,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(\"i-image\", className, {\n\t\t\t\trounded: round,\n\t\t\t\t[`i-image-${state.status}`]: state.status,\n\t\t\t})}\n\t\t>\n\t\t\t{state.status === \"error\" ? (\n\t\t\t\tfallback\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{src && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={{ objectFit: fit, width: wh, height: wh }}\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\t\t\tonError={handleError}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{src && state.status === \"loading\" && <Loading absolute />}\n\n\t\t\t\t\t{cover && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\"i-image-cover\", coverClass)}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cover}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Image as CompositionImage;\n","import classNames from \"classnames\";\nimport { IInputContainer } from \"./type\";\n\nexport default function InputContainer(props: IInputContainer) {\n\tconst {\n\t\tlabel,\n\t\tclassName,\n\t\tlabelInline,\n\t\tstyle,\n\t\tchildren,\n\t\tstatus,\n\t\ttip,\n\t\trequired,\n\t} = props;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{children}\n\n\t\t\t{tip && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={classNames(\"i-input-message\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{tip}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import Image from \"./image\";\nimport List from \"./list\";\n\nImage.List = List;\n\nexport default Image;\n","import usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { getFileType, getSuffixByUrl } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Flex from \"../flex\";\nimport Image from \"./image\";\nimport { IImageList } from \"./type\";\n\nexport default function List(props: IImageList) {\n\tconst {\n\t\titems = [],\n\t\tgap = 8,\n\t\tcolumns,\n\t\twrap,\n\t\tdirection,\n\t\tusePreview: previewable,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\tconst preview = usePreview();\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst handleClick = (e, i) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tpreview({\n\t\t\t\titems: files,\n\t\t\t\tinitial: i,\n\t\t\t});\n\t};\n\n\tif (!files.length) return \"\";\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName='i-image-list'\n\t\t\tgap={gap}\n\t\t\tcolumns={columns}\n\t\t\twrap={wrap}\n\t\t\tdirection={direction}\n\t\t>\n\t\t\t{files.map((img, i) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Image\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tsrc={img.src}\n\t\t\t\t\t\tsize={60}\n\t\t\t\t\t\tusePreview={false}\n\t\t\t\t\t\tonClick={(e) => handleClick(e, i)}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Flex>\n\t);\n}\n","import { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { CompositionInput, IInput } from \"./type\";\n\nconst Input = ((props: IInput) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue = \"\",\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tclear,\n\t\thideVisible,\n\t\tborder,\n\t\trequired,\n\t\tonChange,\n\t\tonEnter,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t\tvisible: false,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\te.code === \"Enter\" && onEnter?.(e);\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (type === \"password\" && !hideVisible) {\n\t\t\tObject.assign(state, {\n\t\t\t\tvisible: !state.visible,\n\t\t\t\ttype: !state.visible ? \"text\" : \"password\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst v = \"\";\n\t\tonChange?.(v);\n\t};\n\n\tconst HelperIcon = useMemo(() => {\n\t\tif (type === \"password\") {\n\t\t\treturn state.visible ? <VisibilityRound /> : <VisibilityOffRound />;\n\t\t}\n\n\t\treturn undefined;\n\t}, [state.visible]);\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\ttype: state.type,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: classNames(\"i-input\", `i-input-${type}`),\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\tconst clearable = clear && state.value;\n\tconst showHelper = type === \"password\" && !!state.value;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t\trequired={required}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive={!!clearable || showHelper}\n\t\t\t\t\ticon={HelperIcon}\n\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t/>\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n}) as CompositionInput;\n\nexport default Input;\n","import Input from \"./input\";\nimport Number from \"./number\";\nimport Range from \"./range\";\nimport Textarea from \"./textarea\";\n\nInput.Textarea = Textarea;\nInput.Number = Number;\nInput.Range = Range;\n\nexport default Input;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = (props: ITextarea) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue,\n\t\tinitValue,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tautoSize,\n\t\tborder,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\tconst refTextarea = useRef<HTMLDivElement>(null);\n\n\tconst handleChange = (\n\t\te: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n\t) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\n\t\tconst ta = refTextarea.current?.firstChild as HTMLElement;\n\t\tif (autoSize && ta) {\n\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t}\n\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.code !== \"Enter\") return;\n\n\t\te.stopPropagation();\n\t\tonEnter?.(e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-textarea\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={refTextarea}\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<textarea {...inputProps} />\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Textarea;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = (props: IInputNumber) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tstep = 1,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\tthousand,\n\t\tprecision,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tappend,\n\t\tborder,\n\t\tprepend,\n\t\tmessage,\n\t\ttip,\n\t\thideControl,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\tonInput,\n\t\tonBlur,\n\t\t...rest\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tstate.value = v;\n\t\tonChange?.(+v, e);\n\t};\n\n\tconst handleOperate = (param: number) => {\n\t\tconst value = formatInputValue(state.value) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\tstate.value = getFormatNumber(result);\n\n\t\tonChange?.(result);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-input-number\",\n\t\tonChange: handleChange,\n\t\t...rest,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(-step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Number;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound, SyncAltRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, MouseEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputRange } from \"./type\";\n\nconst Range = (props: IInputRange) => {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tappend,\n\t\tprepend,\n\t\tstep = 1,\n\t\tthousand,\n\t\tprecision,\n\t\thideControl,\n\t\tplaceholder,\n\t\tborder,\n\t\tonChange,\n\t\tonBlur,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>, i: number) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\trange[i] = +v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleOperate = (\n\t\te: MouseEvent<Element>,\n\t\tparam: number,\n\t\ti: number\n\t) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\tconst value = formatInputValue(range[i]) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\trange[i] = getFormatNumber(result);\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleSwitch = (e: MouseEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst range = state.value ? state.value : [];\n\t\tconst v = range[0];\n\t\trange[0] = range[1];\n\t\trange[1] = v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tname,\n\t\tclassName: \"i-input i-input-number\",\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[0] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[0]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 0)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\ticon={<SyncAltRound />}\n\t\t\t\t\tstyle={{ margin: 0 }}\n\t\t\t\t\tonClick={handleSwitch}\n\t\t\t\t/>\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[1] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[1]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 1)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Range;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { ReactNode, isValidElement, useEffect, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport \"./index.css\";\nimport type { IMessage, IMessageItem, THeights, TMessageQueue } from \"./type\";\n\nconst AlignMap = {\n\tleft: \"flex-start\",\n\tcenter: \"center\",\n\tright: \"flex-end\",\n};\n\nconst GlobalConfig = {\n\talign: \"center\",\n\toffset: \"12px\",\n\tgap: 12,\n\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 = function ({\n\tref,\n\tactive,\n\tcontent,\n\ttop,\n\tclassName,\n\tstyle,\n\tonClick,\n}: IMessageItem) {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-message\", className, {\n\t\t\t\t\"i-message-active\": active,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\ttop,\n\t\t\t}}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t{content}\n\t\t</div>\n\t);\n};\n\nfunction Messages() {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<{\n\t\ttops: THeights;\n\t\titems: TMessageQueue;\n\t}>({\n\t\titems: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t\ttops: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t});\n\tconst offsetTop = {\n\t\tleft: 0,\n\t\tcenter: 0,\n\t\tright: 0,\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(handler, {\n\t\t\tcallout: function (item: IMessage) {\n\t\t\t\tconst { align = \"center\", unshift, onShow } = item;\n\t\t\t\tconst size = queue[align][unshift ? \"unshift\" : \"push\"](item);\n\t\t\t\tstate.items[align] = [...queue[align]];\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst h = ref.current?.offsetHeight || 0;\n\n\t\t\t\t\tqueue[align][unshift ? 0 : size - 1].active = true;\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\theights[align][unshift ? \"unshift\" : \"push\"](h);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tonShow?.();\n\t\t\t\t}, 0);\n\n\t\t\t\titem.duration !== 0 &&\n\t\t\t\t\tsetTimeout(this.close.bind(item), item.duration);\n\t\t\t},\n\t\t\tclose: function () {\n\t\t\t\tconst item = this as IMessage;\n\t\t\t\tconst { align = \"center\", onHide } = item;\n\t\t\t\tconst index = queue[align].findIndex((i) => i.id === item.id);\n\t\t\t\tif (index < 0) return;\n\n\t\t\t\tqueue[align][index].active = false;\n\t\t\t\tstate.items[align] = [...queue[align]];\n\n\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\tconst index = queue[align].findIndex(\n\t\t\t\t\t\t(i) => i.id === item.id\n\t\t\t\t\t);\n\n\t\t\t\t\tqueue[align].splice(index, 1);\n\t\t\t\t\theights[align].splice(index, 1);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\titem.timer && clearTimeout(item.timer);\n\t\t\t\t\tonHide?.();\n\t\t\t\t}, 240);\n\t\t\t},\n\t\t});\n\t}, []);\n\n\tconst renderItems = (item, i) => {\n\t\tif (!item) return <></>;\n\n\t\tconst { id, active, content, align = \"center\", className } = item;\n\t\toffsetTop[align] += state.tops[align][i - 1] || 0;\n\t\tconst top = GlobalConfig.gap * i + offsetTop[align];\n\n\t\treturn (\n\t\t\t<MessageItem\n\t\t\t\tkey={id}\n\t\t\t\tref={ref}\n\t\t\t\tactive={active}\n\t\t\t\tcontent={content}\n\t\t\t\ttop={top}\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{ alignSelf: AlignMap[align] }}\n\t\t\t\tonClick={handler.close.bind(item)}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className='i-messages'>\n\t\t\t{state.items.left.map(renderItems)}\n\t\t\t{state.items.center.map(renderItems)}\n\t\t\t{state.items.right.map(renderItems)}\n\t\t</div>\n\t);\n}\n\nexport function setMessageConfig(config: IMessage) {\n\tObject.assign(GlobalConfig, config);\n}\n\nfunction message(config: IMessage | ReactNode) {\n\tif (\n\t\t[\"string\", \"number\"].includes(typeof config) ||\n\t\tisValidElement(config)\n\t) {\n\t\tconfig = { content: config as ReactNode };\n\t}\n\n\tconfig = Object.assign(\n\t\t{ id: uid(7) },\n\t\tItemDefaultConfig,\n\t\tconfig as IMessage\n\t);\n\n\thandler.callout(config as IMessage);\n\n\treturn handler.close.bind(config);\n}\n\nfunction createContainer() {\n\tconst container = document.createElement(\"div\");\n\tcontainer.dataset.id = \"messages\";\n\tdocument.body.append(container);\n\n\treturn container;\n}\n\nmessage.error = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-error\",\n\t});\n};\n\nmessage.success = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-success\",\n\t});\n};\n\nmessage.warning = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-warning\",\n\t});\n};\n\nexport default message;\n","import Modal from \"./modal\";\nimport useModal from \"./useModal\";\n\nModal.useModal = useModal;\n\nexport default Modal;\n","import { renderNode } from \"@p/js/utils\";\nimport { useRef } from \"react\";\nimport HookModal from \"./hookModal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nexport default function useModal() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst handleOpen = (props: IModal) => {\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\t{...props}\n\t\t\t\tonClose={() => {\n\t\t\t\t\tprops.onClose?.();\n\t\t\t\t\tunMount?.();\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst handleUpdate = (props: IModal) => {\n\t\tif (!ref.current) return;\n\n\t\tconst { update } = ref.current;\n\t\tupdate(props);\n\t};\n\n\treturn {\n\t\topen: handleOpen,\n\t\tupdate: handleUpdate,\n\t};\n}\n","import classNames from \"classnames\";\nimport { useState } from \"react\";\nimport Loading from \"../loading\";\nimport { IPageItem } from \"./type\";\n\nconst Page = (props: IPageItem) => {\n\tconst { page, active, children, onChange } = props;\n\tconst [loading, setLoading] = useState(false);\n\n\tconst handleClick = async () => {\n\t\tif (active || loading) return;\n\n\t\tsetLoading(true);\n\t\tawait onChange?.(page);\n\t\tsetLoading(false);\n\t};\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-page\", {\n\t\t\t\t\"i-page-active\": active,\n\t\t\t\t\"i-page-loading\": loading,\n\t\t\t\t\"i-page-disabled\": false,\n\t\t\t})}\n\t\t\tdata-page={page}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{loading && <Loading />}\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n\nexport default Page;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tMoreHorizRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Page from \"./page\";\nimport { IPagination } from \"./type\";\n\nconst Pagination = (props: IPagination) => {\n\tconst {\n\t\tpage: defaultPage = 1,\n\t\tsize = 10,\n\t\ttotal = 0,\n\t\tsibling = 2,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} />,\n\t\tsimple,\n\t\tjumper,\n\t\tclassName,\n\t\trenderEllipsis = () => (\n\t\t\t<Icon icon={<MoreHorizRound />} className='color-7' />\n\t\t),\n\t\trenderPage = (i) => i,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst [page, setPage] = useState(defaultPage);\n\tconst [loading, setLoading] = useState(false);\n\n\tconst totalPage = useMemo(() => Math.ceil(total / size), [size, total]);\n\n\tconst [start, end, loop] = useMemo(() => {\n\t\tconst start = Math.max(1, page - sibling);\n\t\tconst end = Math.min(totalPage, page + sibling);\n\n\t\treturn [\n\t\t\tstart,\n\t\t\tend,\n\t\t\tArray.from({ length: end - start + 1 }).map((n, i) => start + i),\n\t\t];\n\t}, [page, totalPage, sibling]);\n\n\tif (totalPage <= page && page === 1) return <></>;\n\n\tconst handlePageChange = async (p?: number) => {\n\t\tif (!onChange || loading) return;\n\t\tsetLoading(true);\n\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\tif (p === undefined) return;\n\t\t\tawait onChange(p);\n\t\t\tsetPage(p);\n\t\t\tsetLoading(false);\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tuseEffect(() => setPage(defaultPage), [defaultPage]);\n\n\treturn (\n\t\t<div className={classNames(\"i-pagination\", className)} {...restProps}>\n\t\t\t{prev && (\n\t\t\t\t<Page page={page - 1 || 1} onChange={handlePageChange}>\n\t\t\t\t\t{prev}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 1 && (\n\t\t\t\t<Page page={1} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(1)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 2 && renderEllipsis()}\n\n\t\t\t{loop.map((p) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Page\n\t\t\t\t\t\tkey={p}\n\t\t\t\t\t\tpage={p}\n\t\t\t\t\t\tactive={p === page}\n\t\t\t\t\t\tonChange={handlePageChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderPage(p)}\n\t\t\t\t\t</Page>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{end < totalPage - 1 && renderEllipsis()}\n\n\t\t\t{end < totalPage && (\n\t\t\t\t<Page page={totalPage} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(totalPage)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{next && (\n\t\t\t\t<Page page={page + 1} onChange={handlePageChange}>\n\t\t\t\t\t{next}\n\t\t\t\t</Page>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Pagination;\n","import classNames from \"classnames\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { ITag } from \"./type\";\n\nconst Tag = (props: ITag) => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\n\t\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 { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport { ChangeEvent, useEffect, useMemo, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport { TOption } from \"../../type\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { Options, displayValue } from \"./options\";\nimport { ISelect } from \"./type\";\n\nconst Select = (props: ISelect) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tname,\n\t\tlabel,\n\t\tvalue = \"\",\n\t\tplaceholder,\n\t\toptions = [],\n\t\tmultiple,\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tstyle,\n\t\tclassName,\n\t\tmessage,\n\t\tstatus = \"normal\",\n\t\thideClear,\n\t\thideArrow,\n\t\tmaxDisplay,\n\t\tborder,\n\t\tfilter,\n\t\ttip,\n\t\tfilterPlaceholder = \"...\",\n\t\tpopupProps,\n\t\tonSelect,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tinputValue: \"\",\n\t\tfilterValue: \"\",\n\t\tvalue,\n\t\tloading: false,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst filterOptions = useMemo(() => {\n\t\tconst { filterValue: fv } = state;\n\t\tif (!fv || !filter) return formattedOptions;\n\n\t\tconst filterFn =\n\t\t\ttypeof filter === \"function\"\n\t\t\t\t? filter\n\t\t\t\t: (opt) => opt.value.includes(fv) || opt.label.includes(fv);\n\n\t\treturn formattedOptions.filter(filterFn);\n\t}, [formattedOptions, filter, state.filterValue]);\n\n\tconst changeValue = (v: any) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSelect = (value: any, option?: TOption) => {\n\t\tonSelect?.(value, option);\n\n\t\tif (multiple) {\n\t\t\tconst values = [...(state.value as any[])];\n\t\t\tconst i = values.findIndex((v) => v === value);\n\n\t\t\ti > -1 ? values.splice(i, 1) : values.push(value);\n\t\t\tchangeValue(values as any);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tchangeValue(value);\n\t};\n\n\tconst handleVisibleChange = (visible: boolean) => {\n\t\tsetActive(visible);\n\n\t\tif (!filter) return;\n\n\t\tstate.filterValue = \"\";\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (!active) return;\n\n\t\tchangeValue(multiple ? [] : \"\");\n\t};\n\n\tconst handleFilterChange = debounce(\n\t\t{ delay: 400 },\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst v = e.target.value;\n\t\t\tstate.filterValue = v;\n\t\t}\n\t);\n\n\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tstate.filterValue = e.target.value;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst hasValue = multiple\n\t\t? (state.value as any[]).length > 0\n\t\t: !!state.value;\n\tconst clearable = !hideClear && active && hasValue;\n\tconst text = message ?? tip;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t<Popup\n\t\t\t\tposition='bottom'\n\t\t\t\tarrow={false}\n\t\t\t\tfitSize\n\t\t\t\t{...popupProps}\n\t\t\t\tvisible={active}\n\t\t\t\ttrigger='none'\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t\tcontent={\n\t\t\t\t\t<Options\n\t\t\t\t\t\toptions={filterOptions}\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tfilter={!!filter}\n\t\t\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonFilter={handleFilterChange}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t\t\t\"i-input-focus\": active,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={() => setActive(true)}\n\t\t\t\t>\n\t\t\t\t\t{prepend}\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\ttype='hidden'\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{multiple ? (\n\t\t\t\t\t\thasValue ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-input i-select\", {\n\t\t\t\t\t\t\t\t\t\"i-select-multiple\": multiple,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{displayValue({\n\t\t\t\t\t\t\t\t\toptions: formattedOptions,\n\t\t\t\t\t\t\t\t\tvalue: state.value,\n\t\t\t\t\t\t\t\t\tmultiple,\n\t\t\t\t\t\t\t\t\tmaxDisplay,\n\t\t\t\t\t\t\t\t\tonSelect: handleSelect,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\n\t\t\t\t\t{!multiple && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={active ? state.filterValue : state.value}\n\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\tplaceholder={state.value || placeholder}\n\t\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\t\treadOnly={!filter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideArrow}\n\t\t\t\t\t\ticon={clearable ? undefined : <UnfoldMoreRound />}\n\t\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{append}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\n\t\t\t{text && <span className='i-input-message'>{text}</span>}\n\t\t</label>\n\t);\n};\n\nexport default Select;\n","import { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Input from \"../../input\";\nimport Select from \"../../select\";\n\nexport const ColorMethods = {\n\tHEX: \"toHexString\",\n\tRGB: \"toRgbString\",\n\tHSB: \"toHsbString\",\n};\n\nexport default function Footer(props) {\n\tconst { value, type, onTypeChange, onChange } = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t});\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tstate.type = t;\n\t\tonTypeChange(t);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t\tstate.type = type;\n\t}, [value, type]);\n\n\treturn (\n\t\t<div className='i-colorpicker-footer'>\n\t\t\t<Select\n\t\t\t\treadOnly\n\t\t\t\thideClear\n\t\t\t\thideArrow\n\t\t\t\tstyle={{ width: \"5.6em\" }}\n\t\t\t\toptions={[\"RGB\", \"HEX\", \"HSB\"]}\n\t\t\t\tvalue={state.type}\n\t\t\t\tonChange={handleTypeChange}\n\t\t\t/>\n\t\t\t<Input value={state.value} onChange={handleChange} />\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Handle = (props) => {\n\tconst { ref, color, handle, placeholder, className, ...restProps } = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-colorpicker-handle\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{handle !== \"text\" && (\n\t\t\t\t<i\n\t\t\t\t\tclassName='i-colorpicker-square'\n\t\t\t\t\tstyle={{ background: color }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{handle !== \"square\" && (\n\t\t\t\t<span className='i-colorpicker-text' style={{ color }}>\n\t\t\t\t\t{color ?? placeholder}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Handle;\n","import ColorsPanel from \"@rc-component/color-picker\";\nimport \"@rc-component/color-picker/assets/index.css\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Popup from \"../../popup\";\nimport { IColorPicker } from \"../type\";\nimport Footer, { ColorMethods } from \"./footer\";\nimport Handle from \"./handle\";\nimport \"./index.css\";\n\nexport default function ColorPicker(props: IColorPicker) {\n\tconst {\n\t\tvalue,\n\t\ttype = \"HEX\",\n\t\tdisabledAlpha,\n\t\tchildren,\n\t\tusePanel,\n\t\thandle = \"both\",\n\t\tplaceholder = \"Colors\",\n\t\tpopupProps,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttype,\n\t\tvalue,\n\t\tsyncValue: value,\n\t\tvisible: popupProps?.visible,\n\t});\n\n\tconst handleChange = (target) => {\n\t\tstate.syncValue = target;\n\t};\n\n\tconst handleComplete = (target) => {\n\t\tconst method = ColorMethods[state.type];\n\n\t\tif (target.a !== 1) {\n\t\t\ttarget.a = parseFloat(target.a.toFixed(3));\n\t\t}\n\n\t\tstate.value = target[method]?.();\n\t\tonChange?.(state.value);\n\t};\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\tpopupProps?.onVisibleChange?.(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tconst method = ColorMethods[t];\n\n\t\tstate.type = t;\n\t\tstate.value = state.syncValue[method]?.();\n\t};\n\n\tconst handleValueChange = (v) => {\n\t\tstate.value = v;\n\t\tstate.syncValue = v;\n\t\tonChange?.(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.syncValue = value;\n\t\tstate.value = value;\n\t}, [value]);\n\n\tif (usePanel) {\n\t\treturn <ColorsPanel {...props} />;\n\t}\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\ttouchable\n\t\t\tposition='bottom'\n\t\t\t{...popupProps}\n\t\t\tvisible={state.visible}\n\t\t\tcontent={\n\t\t\t\t<ColorsPanel\n\t\t\t\t\tvalue={state.syncValue}\n\t\t\t\t\tdisabledAlpha={disabledAlpha}\n\t\t\t\t\tpanelRender={(panel) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{panel}\n\t\t\t\t\t\t\t\t<Footer\n\t\t\t\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t\t\t\ttype={state.type}\n\t\t\t\t\t\t\t\t\tonTypeChange={handleTypeChange}\n\t\t\t\t\t\t\t\t\tonChange={handleValueChange}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonChangeComplete={handleComplete}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children ?? (\n\t\t\t\t<Handle\n\t\t\t\t\tcolor={state.value}\n\t\t\t\t\thandle={handle}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Popup>\n\t);\n}\n","import classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { ReactNode, useMemo } from \"react\";\nimport { IBaseDates } from \"../type\";\n\nconst Dates = (\n\tprops: IBaseDates & {\n\t\tmonth: any;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tmonth,\n\t\tweeks = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\trenderDate = (date: Dayjs) => date.date(),\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\tconst today = dayjs();\n\n\tconst dates = useMemo(() => {\n\t\tconst dates: Dayjs[] = [];\n\n\t\tconst lastDateOfLastMonth = month.add(-1, \"month\").endOf(\"month\");\n\t\tlet { $W, $D } = lastDateOfLastMonth;\n\n\t\tif ($W !== 0) {\n\t\t\tconst lastMonthDates = Array.from({ length: $W }).map(\n\t\t\t\t(whatever, i) => lastDateOfLastMonth.add(i + 1 - $W, \"day\")\n\t\t\t);\n\t\t\tdates.push(...lastMonthDates);\n\t\t}\n\n\t\tconst lastDate = month.endOf(\"month\");\n\t\t$D = lastDate.$D;\n\t\t$W = lastDate.$W;\n\t\tdates.push(\n\t\t\t...Array.from({ length: $D }).map((whatever, i) =>\n\t\t\t\tlastDate.add(i + 1 - $D, \"day\")\n\t\t\t)\n\t\t);\n\n\t\tif ($W !== 0) {\n\t\t\tdates.push(\n\t\t\t\t...Array.from({ length: 7 - $W }).map((whatever, i) =>\n\t\t\t\t\tlastDate.add(i + 1, \"day\")\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn dates;\n\t}, [month]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\tif (disabledDate?.(date)) return;\n\n\t\tonDateClick?.(date);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className='i-datepicker-weeks'>\n\t\t\t\t{weeks.map((week: ReactNode, i: number) => (\n\t\t\t\t\t<span key={i} className='i-datepicker-week'>\n\t\t\t\t\t\t{week}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className='i-datepicker-dates'>\n\t\t\t\t{dates.map((date, i: number) => {\n\t\t\t\t\tconst active = date.isSame(value, \"day\");\n\t\t\t\t\tconst isSameMonth = date.isSame(month, \"month\");\n\t\t\t\t\tconst isToday = date.isSame(today, \"day\");\n\t\t\t\t\tconst disabled = disabledDate?.(date);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-item\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\": active,\n\t\t\t\t\t\t\t\t\"i-datepicker-same-month\": isSameMonth,\n\t\t\t\t\t\t\t\t\"i-datepicker-today\": isToday,\n\t\t\t\t\t\t\t\t\"i-datepicker-disabled\": disabled,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() => handleDateClick(date)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderDate(date)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default Dates;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { throttle } from \"radash\";\nimport { ReactNode, useEffect, useRef } from \"react\";\nimport Icon from \"../../icon\";\nimport Helpericon from \"../../utils/helpericon\";\nimport { IBaseDates } from \"../type\";\nimport Dates from \"./dates\";\n\nconst MONTHS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\nconst YearMonth = (\n\tprops: IBaseDates & {\n\t\tonClick?: () => void;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tunitMonth = \"月\",\n\t\tunitYear = \"年\",\n\t\trenderYear,\n\t\trenderMonth,\n\t\tonClick,\n\t} = props;\n\n\treturn (\n\t\t<a className='i-datepicker-action' data-ripple onClick={onClick}>\n\t\t\t<span>{renderYear?.(value.year())}</span>\n\t\t\t{unitYear}\n\t\t\t<span>{renderMonth?.(value.month() + 1)}</span>\n\t\t\t{unitMonth}\n\t\t</a>\n\t);\n};\n\nconst Panel = (props: IBaseDates) => {\n\tconst {\n\t\tvalue,\n\t\tunitYear,\n\t\tunitMonth,\n\t\trenderDate,\n\t\trenderMonth = (m: ReactNode) => m,\n\t\trenderYear = (y: ReactNode) => y,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttoday: value,\n\t\tmonth: value || dayjs(),\n\t\tselectedYear: dayjs(),\n\t\tyears: [] as number[],\n\t\tselectable: false,\n\t});\n\n\tconst $years = useRef<HTMLDivElement>(null);\n\n\tconst handleOperateMonth = (next: boolean) => {\n\t\tstate.month = state.month[next ? \"add\" : \"subtract\"](1, \"month\");\n\t};\n\n\tconst handleChangeDate = (date: Dayjs) => {\n\t\tif (date.isSame(state.today, \"day\")) return;\n\n\t\tif (!date.isSame(state.month, \"month\")) {\n\t\t\tstate.month = date;\n\t\t}\n\n\t\tstate.today = date;\n\t\tonDateClick?.(date);\n\t};\n\n\tconst handleChangeMonth = (month: number) => {\n\t\tstate.month = state.month\n\t\t\t.year(state.selectedYear.year())\n\t\t\t.month(month - 1);\n\t\tstate.selectable = false;\n\t};\n\n\tconst getMoreYears = throttle({ interval: 100 }, (e) => {\n\t\tconst isUp = e.deltaY < 0;\n\n\t\tstate.years = state.years.map((y) => (y += isUp ? -1 : 1));\n\t});\n\n\tuseEffect(() => {\n\t\tif (!state.selectable) return;\n\n\t\tstate.selectedYear = state.month;\n\t\tconst y = state.selectedYear.year();\n\t\tconst years = Array.from({ length: 7 }).map((_, i) => y - 3 + i);\n\n\t\tstate.years = [...years];\n\t}, [state.selectable]);\n\n\tuseEffect(() => {\n\t\tstate.today = value;\n\t\tstate.month = value || dayjs();\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-datepicker'>\n\t\t\t<div className='i-datepicker-units'>\n\t\t\t\t<YearMonth\n\t\t\t\t\tvalue={state.month}\n\t\t\t\t\tunitYear={unitYear}\n\t\t\t\t\tunitMonth={unitMonth}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tonClick={() => (state.selectable = true)}\n\t\t\t\t/>\n\t\t\t\t<a\n\t\t\t\t\tclassName='ml-auto i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(false)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t</a>\n\t\t\t\t<a\n\t\t\t\t\tclassName='i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(true)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t</a>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-datepicker-ym\", {\n\t\t\t\t\t\"i-datepicker-active\": state.selectable,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName='i-datepicker-close'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tstate.selectable = false;\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tref={$years}\n\t\t\t\t\tclassName='i-datepicker-years'\n\t\t\t\t\tonWheel={getMoreYears}\n\t\t\t\t>\n\t\t\t\t\t{state.years.map((y) => (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tkey={y}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-year\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\ty === state.selectedYear.year(),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t(state.selectedYear =\n\t\t\t\t\t\t\t\t\tstate.selectedYear.year(y))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderYear(y)}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t<div className='i-datepicker-months'>\n\t\t\t\t\t{MONTHS.map((m) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={m}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-month\", {\n\t\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\t\tm === state.month.month() + 1,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => handleChangeMonth(m)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderMonth(m)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dates\n\t\t\t\tvalue={state.today}\n\t\t\t\tmonth={state.month}\n\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\tonDateClick={handleChangeDate}\n\t\t\t\trenderDate={renderDate}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Panel;\n","import { CalendarMonthTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { IDatePicker } from \"../type\";\nimport \"./index.css\";\nimport Panel from \"./panel\";\n\ndayjs.extend(customParseFormat);\n\nconst FORMATTYPES = [\"YYYY-MM-DD\", \"YYYY-M-D\", \"YYYY/MM/DD\", \"YYYY/M/D\"];\nconst FORMAT = \"YYYY-MM-DD\";\n\nconst Datepicker = (props: IDatePicker) => {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tweeks,\n\t\tformat = FORMAT,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderDate,\n\t\trenderMonth,\n\t\trenderYear,\n\t\tpopupProps,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t\tonChange,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst dayJsValue = useMemo(() => {\n\t\tif (!state.value) return null;\n\n\t\tconst date = dayjs(state.value as string, format, true);\n\n\t\tif (date.isValid()) return date;\n\n\t\treturn null;\n\t}, [state.value]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\thandleChange(date.format(format));\n\t};\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSetDate = () => {\n\t\tif (!state.value) return;\n\n\t\tconst date = dayjs(state.value as string, FORMATTYPES, true);\n\n\t\tif (date.isValid()) {\n\t\t\thandleChange(date.format(format));\n\t\t\treturn;\n\t\t}\n\n\t\thandleChange(\"\");\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleSetDate();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\twatchResize\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={dayJsValue}\n\t\t\t\t\tweeks={weeks}\n\t\t\t\t\trenderDate={renderDate}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\t\tonDateClick={handleDateClick}\n\t\t\t\t/>\n\t\t\t}\n\t\t\t{...popupProps}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<CalendarMonthTwotone />}\n\t\t\t\t\t\tclassName='i-datepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonEnter={handleSetDate}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n};\n\nexport default Datepicker;\n","import classNames from \"classnames\";\n\nexport default function Items(props) {\n\tconst { items = [], active, renderItem, unit, onClick } = props;\n\n\treturn items.map((n) => {\n\t\tconst isActive = n === active;\n\n\t\treturn (\n\t\t\t<a\n\t\t\t\tkey={n}\n\t\t\t\tclassName={classNames(\"i-timepicker-item\", {\n\t\t\t\t\t\"i-timepicker-item-active\": isActive,\n\t\t\t\t})}\n\t\t\t\tonClick={() => onClick(n)}\n\t\t\t>\n\t\t\t\t{renderItem?.(n, isActive, unit) ?? (n < 10 ? `0${n}` : n)}\n\t\t\t</a>\n\t\t);\n\t});\n}\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useMemo } from \"react\";\nimport \"./index.css\";\nimport Items from \"./item\";\n\nconst UnitMaps = {\n\th: \"hour\",\n\thh: \"hour\",\n\tm: \"minute\",\n\tmm: \"minute\",\n\ts: \"second\",\n\tss: \"second\",\n};\n\nexport default function Panel(props) {\n\tconst {\n\t\tvalue,\n\t\tstepH = 1,\n\t\tstepM = 1,\n\t\tstepS = 1,\n\t\tformat,\n\t\tperiods,\n\t\trenderItem,\n\t\tonChange,\n\t\tonFallback,\n\t} = props;\n\tconst state = useReactive<any>({\n\t\tperiod: undefined,\n\t\thour: undefined,\n\t\tminute: undefined,\n\t\tsecond: undefined,\n\t});\n\n\tconst [hours, minutes, seconds] = useMemo(() => {\n\t\tconst hasH = format.includes(\"h\");\n\t\tconst hasM = format.includes(\"m\");\n\t\tconst hasS = format.includes(\"s\");\n\t\tconst hours = hasH\n\t\t\t? Array.from(\n\t\t\t\t\t{ length: (periods ? 12 : 24) / stepH },\n\t\t\t\t\t(_, i) => i * stepH\n\t\t\t )\n\t\t\t: [];\n\t\tconst minutes = hasM\n\t\t\t? Array.from({ length: 60 / stepM }, (_, i) => i * stepM)\n\t\t\t: [];\n\t\tconst seconds = hasS\n\t\t\t? Array.from({ length: 60 / stepS }, (_, i) => i * stepS)\n\t\t\t: [];\n\n\t\treturn [hours, minutes, seconds];\n\t}, [stepH, stepM, stepS, format, periods]);\n\n\tconst updateValue = () => {\n\t\tconst reg = /(hh|h){1}|(mm|m){1}|(ss|s){1}/gi;\n\t\tlet result = format.replace(reg, (pattern) => {\n\t\t\tconst p = pattern.toLowerCase();\n\t\t\tconst u = UnitMaps[p];\n\t\t\tconst n = state[u] ?? 0;\n\n\t\t\treturn p.length > 1 && n < 10 ? `0${n ?? 0}` : n ?? 0;\n\t\t});\n\n\t\tif (periods && hours.length > 0) {\n\t\t\tresult = `${state.period ?? periods[0]} ${result}`;\n\t\t}\n\n\t\tonChange(result);\n\t};\n\n\tconst handleSetTime = (v, unit) => {\n\t\tstate[unit] = v;\n\t\tupdateValue();\n\t};\n\n\tuseEffect(() => {\n\t\tlet time = value ?? \"\";\n\n\t\tif (periods && hours.length > 0 && value) {\n\t\t\tconst [p, t] = value.split(\" \");\n\t\t\ttime = t ?? \"\";\n\t\t\tstate.period = periods.includes(p) ? p : undefined;\n\t\t}\n\n\t\tconst nums = time.match(/\\d+/g) ?? [];\n\n\t\tif (!nums.length) {\n\t\t\tonFallback(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet i = 0;\n\t\tconst r = format.replace(/(hh|h)+|(mm|m)+|(ss|s)+/gi, (p) => {\n\t\t\tconst n = nums[i++] ?? 0;\n\t\t\tlet o = p;\n\n\t\t\tif (UnitMaps[p] === \"hour\") {\n\t\t\t\to = Math.min(periods ? 11 : 23, n);\n\t\t\t}\n\n\t\t\to = Math.min(59, n);\n\n\t\t\tstate[UnitMaps[p]] = o;\n\t\t\treturn p.length > 1 && o < 10 ? `0${o}` : o;\n\t\t});\n\n\t\tonFallback(r);\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-timepicker'>\n\t\t\t{hours.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{periods && (\n\t\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\t\titems={periods}\n\t\t\t\t\t\t\t\tactive={state.period}\n\t\t\t\t\t\t\t\tonClick={(p) => handleSetTime(p, \"period\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\titems={hours}\n\t\t\t\t\t\t\tactive={state.hour}\n\t\t\t\t\t\t\tunit='hour'\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\tonClick={(h) => handleSetTime(h, \"hour\")}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{minutes.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={minutes}\n\t\t\t\t\t\tactive={state.minute}\n\t\t\t\t\t\tunit='minute'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(m) => handleSetTime(m, \"minute\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{seconds.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={seconds}\n\t\t\t\t\t\tactive={state.second}\n\t\t\t\t\t\tunit='second'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(s) => handleSetTime(s, \"second\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { AccessTimeRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { ITimePicker } from \"../type\";\nimport Panel from \"./panel\";\n\nconst FORMAT = \"hh:mm:ss\";\n\nexport default function TimePicker(props: ITimePicker) {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tformat = FORMAT,\n\t\tperiods,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderItem,\n\t\tonChange,\n\t\tonBlur,\n\t\tpopupProps,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\tsafeValue: undefined,\n\t});\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t};\n\n\tconst handleFallback = (v) => {\n\t\tstate.safeValue = v;\n\t};\n\n\tconst handleValidTime = () => {\n\t\tif (!state.value) return;\n\n\t\tstate.value = state.safeValue;\n\t\thandleChange(state.safeValue);\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleValidTime();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\twatchResize\n\t\t\t{...popupProps}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tformat={format}\n\t\t\t\t\tperiods={periods}\n\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonFallback={handleFallback}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<AccessTimeRound />}\n\t\t\t\t\t\tclassName='i-timepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n}\n","import { InfoOutlined } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { MouseEvent } from \"react\";\nimport Button from \"../button\";\nimport { IButton } from \"../button/type\";\nimport Flex from \"../flex\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport { IPopconfirm } from \"./type\";\n\nconst defaultOk = {\n\tchildren: \"确定\",\n};\n\nconst defaultCancel = {\n\tchildren: \"取消\",\n\tsecondary: true,\n};\n\nconst Popconfirm = (props: IPopconfirm) => {\n\tconst {\n\t\ttrigger = \"click\",\n\t\tvisible,\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' />,\n\t\tcontent,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\talign = \"end\",\n\t\tposition = \"top\",\n\t\toffset = 12,\n\t\textra,\n\t\tonOk,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tloading: false,\n\t\tvisible,\n\t});\n\n\tconst ok: IButton = okButtonProps\n\t\t? Object.assign({}, defaultOk, okButtonProps)\n\t\t: defaultOk;\n\tconst cancel: IButton = cancelButtonProps\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\n\t\t: defaultCancel;\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\trestProps.onVisibleChange?.(v);\n\t};\n\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\n\t\tstate.loading = true;\n\t\tok.onClick?.(e);\n\n\t\tonOk?.()\n\t\t\t?.then(() => {\n\t\t\t\tstate.visible = false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tstate.loading = false;\n\t\t\t});\n\t};\n\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\n\t\tcancel.onClick?.(e);\n\t\tawait onClose?.();\n\t\tstate.visible = false;\n\t};\n\n\tconst popconfirmContent = (\n\t\t<div className='i-popconfirm'>\n\t\t\t<Flex gap={12}>\n\t\t\t\t{icon}\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\n\t\t\t</Flex>\n\n\t\t\t<Flex\n\t\t\t\tgap={12}\n\t\t\t\tjustify='flex-end'\n\t\t\t\tclassName='mt-8 i-popconfirm-footer'\n\t\t\t>\n\t\t\t\t{cancelButtonProps !== null && (\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\n\t\t\t\t)}\n\t\t\t\t{extra}\n\t\t\t\t{okButtonProps !== null && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t{...ok}\n\t\t\t\t\t\tonClick={handleOk}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<Popup\n\t\t\tcontent={popconfirmContent}\n\t\t\t{...restProps}\n\t\t\ttrigger={trigger}\n\t\t\tvisible={state.visible}\n\t\t\talign={align}\n\t\t\toffset={offset}\n\t\t\tposition={position}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nexport default Popconfirm;\n","import classNames from \"classnames\";\nimport { ChangeEvent } from \"react\";\nimport { IRadioItem } from \"./type\";\n\nexport default function RadioItem(props: IRadioItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tname,\n\t\tvalue,\n\t\tchecked,\n\t\tdisabled,\n\t\tchildren,\n\t\tonChange,\n\t} = props;\n\n\tconst handleChange = (e: ChangeEvent) => {\n\t\tonChange?.(value, e);\n\t};\n\n\treturn (\n\t\t<label className={classNames(\"i-radio-item\", { disabled })}>\n\t\t\t<input\n\t\t\t\ttype='radio'\n\t\t\t\tname={name}\n\t\t\t\tchecked={checked}\n\t\t\t\tclassName={classNames(\"i-radio-input\", `i-radio-${type}`)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-radio-text'>{children}</span>\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tstate.value = value;\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => (\n\t\t\t\t\t<RadioItem\n\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\tchecked={state.value === option.value}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</RadioItem>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n","import \"./index.css\";\n\nexport default function Divider() {\n\treturn <i className='i-step-divider' />;\n}\n","import { CheckRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Divider from \"./divider\";\nimport { IStepItem } from \"./type\";\n\nconst STATUS = [\"finished\", \"active\", \"pending\"];\n\nfunction defaultRenderIcon(i: number, status: string) {\n\treturn (\n\t\t<span className='i-step-item-index'>\n\t\t\t{status === \"finished\" ? (\n\t\t\t\t<CheckRound style={{ width: \"1em\", height: \"1.5em\" }} />\n\t\t\t) : (\n\t\t\t\ti + 1\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction Item(props: IStepItem) {\n\tconst {\n\t\tindex = 0,\n\t\tactive = 0,\n\t\trenderIcon = defaultRenderIcon,\n\t\ttitle,\n\t\tvertical,\n\t\tline = <Divider />,\n\t\tasList,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\tconst status = STATUS[index === active ? 1 : index < active ? 0 : 2];\n\n\tconst handleClick = () => {\n\t\tonClick?.(index);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-step-item-${status}`]: !asList,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{vertical ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-left'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='i-step-item-right'>\n\t\t\t\t\t\t<div className='i-step-item-title'>{title}</div>\n\t\t\t\t\t\t{children && (\n\t\t\t\t\t\t\t<div className='i-step-item-content'>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-title'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\n\t\t\t\t\t\t<span>{title}</span>\n\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t{children && (\n\t\t\t\t\t\t<div className='i-step-item-content'>{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, ReactNode, useMemo } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IStep } from \"./type\";\n\nconst Step = (props: IStep) => {\n\tconst {\n\t\tactive = 0,\n\t\tvertical,\n\t\trenderIcon,\n\t\tline,\n\t\tstyle,\n\t\tasList,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\n\tconst steps = useMemo(() => {\n\t\tconst nodes: ReactNode[] = [];\n\t\tlet index = 0;\n\n\t\tChildren.map(children, (el: any) => {\n\t\t\tif (!el || el.type !== Item) return;\n\n\t\t\tconst { props: elProps } = el;\n\n\t\t\tnodes.push({\n\t\t\t\t...el,\n\t\t\t\tprops: {\n\t\t\t\t\trenderIcon,\n\t\t\t\t\tline,\n\t\t\t\t\tonClick,\n\t\t\t\t\t...elProps,\n\t\t\t\t\tvertical,\n\t\t\t\t\tactive,\n\t\t\t\t\tasList,\n\t\t\t\t\tindex: index++,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\treturn nodes;\n\t}, [active, children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step\",\n\t\t\t\t{ \"i-step-vertical\": vertical },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{steps}\n\t\t</div>\n\t);\n};\n\nStep.Item = Item;\n\nexport default Step;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { ISwiperItem } from \"./type\";\n\nfunction Item(props: ISwiperItem) {\n\tconst {\n\t\tindex = 0,\n\t\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\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { CompositionSwiper, ISwiper } from \"./type\";\n\nconst Swiper = ((props: ISwiper) => {\n\tconst {\n\t\tref,\n\t\ttype = \"normal\",\n\t\tinitial = 0,\n\t\tdisplay = 1,\n\t\tscroll = 1,\n\t\tloop = true,\n\t\tvertical,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} size='2em' />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} size='2em' />,\n\t\tduration = 600,\n\t\tinterval = 3000,\n\t\tautoplay,\n\t\tpauseOnHover,\n\t\tarrow = true,\n\t\treverse,\n\t\tdraggable,\n\t\tdragOffset = 40,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tindicator,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\n\t} = props;\n\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst transition = `all ${duration / 1000}s`;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\tswipable: true,\n\t\ttransition: type === \"fade\" ? \"none\" : transition,\n\t\tdragStart: 0,\n\t\tdragging: false,\n\t\tinitialized: false,\n\t});\n\n\tconst items = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type !== Item) return;\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\tconst [displayItems, extra, size, total, listSize] = useMemo(() => {\n\t\tconst extra =\n\t\t\ttype === \"normal\" && loop && items.length > display\n\t\t\t\t? display + 1\n\t\t\t\t: 0;\n\t\tlet list: any = [];\n\n\t\tif (extra <= 0) {\n\t\t\tlist = [...items];\n\t\t} else {\n\t\t\tconst head = items.slice(0, extra);\n\t\t\tconst tail = items.slice(-extra);\n\t\t\tlist = [...tail, ...items, ...head];\n\t\t}\n\n\t\tconst listSize = `${(list.length / display) * 100}%`;\n\n\t\treturn [list, extra, items.length, list.length, listSize];\n\t}, [display, loop, type, items]);\n\n\tconst offsetPercent = useMemo(\n\t\t() => (-100 * (state.current + extra)) / total,\n\t\t[state.current, total]\n\t);\n\n\tconst position = useMemo(() => {\n\t\tif (size <= display || type === \"fade\") return;\n\n\t\tconst offset = vertical\n\t\t\t? `0, ${offsetPercent}%`\n\t\t\t: `${offsetPercent}%, 0`;\n\t\treturn `translate3d(${offset}, 0)`;\n\t}, [offsetPercent, vertical, display, size, type]);\n\n\tconst trackStyle = useMemo(() => {\n\t\tif (!vertical || !itemHeight) return;\n\n\t\treturn {\n\t\t\theight: itemHeight * display,\n\t\t};\n\t}, [vertical, itemHeight, display]);\n\n\tconst indicatorsLoop = useMemo(() => {\n\t\treturn Array.from({\n\t\t\tlength: Math.ceil((size - display) / scroll) + 1,\n\t\t});\n\t}, [loop, indicator]);\n\n\tconst clearTimer = () => {\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst swipeTo = (i: number) => {\n\t\tif (!state.swipable || i === state.current) return;\n\t\tstate.swipable = false;\n\t\tonBeforeSwipe?.(state.current);\n\n\t\tlet reset = false;\n\t\tlet next = i;\n\t\tconst lastDisplay = size - display;\n\n\t\tif (loop) {\n\t\t\tif (i > lastDisplay) {\n\t\t\t\treset = true;\n\t\t\t\ti = size;\n\t\t\t\tnext = 0;\n\t\t\t} else if (i < 0) {\n\t\t\t\treset = true;\n\t\t\t\ti = -display;\n\t\t\t\tnext = lastDisplay;\n\t\t\t}\n\t\t} else {\n\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\ti = next;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.swipable = true;\n\t\t}, duration + 32);\n\n\t\tif (type === \"fade\") {\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\treturn;\n\t\t}\n\n\t\tstate.current = i;\n\n\t\tif (!reset) {\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t}, duration + 12);\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.transition = \"none\";\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = transition;\n\t\t\t}, 60);\n\t\t}, duration + 20);\n\t};\n\tconst swipeNext = () => {\n\t\tswipeTo(reverse ? state.current - scroll : state.current + scroll);\n\t};\n\n\tconst swipePrev = () => {\n\t\tswipeTo(reverse ? state.current + scroll : state.current - scroll);\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\te.stopPropagation();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tObject.assign(state, {\n\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\tdragging: true,\n\t\t\ttransition: \"none\",\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst offset =\n\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\toffsetPercent;\n\n\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t}, 0)`;\n\t};\n\n\tconst handleMouseUp = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\n\t\tif (e.changedTouches) {\n\t\t\te = e.changedTouches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst part =\n\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] / total;\n\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\tconst absOffset = Math.abs(offset);\n\n\t\tif (absOffset > dragOffset) {\n\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\tconst p = base + mod;\n\n\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\tswipeTo(to);\n\t\t}\n\n\t\tlistRef.current.style.transform = position || \"\";\n\n\t\tObject.assign(state, {\n\t\t\tdragging: false,\n\t\t\ttransition,\n\t\t});\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tswipeTo,\n\t\tswipeNext,\n\t\tswipePrev,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (!autoplay) return;\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t};\n\t}, [autoplay, interval]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-swiper\",\n\t\t\t\t{\n\t\t\t\t\t\"i-swiper-vertical\": vertical,\n\t\t\t\t\t\"i-swiper-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-swiper-track'\n\t\t\t\tstyle={trackStyle}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={listRef}\n\t\t\t\t\tclassName={classNames(\"i-swiper-list\", {\n\t\t\t\t\t\t\"i-swiper-fade\": type === \"fade\",\n\t\t\t\t\t})}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t[vertical ? \"height\" : \"width\"]: listSize,\n\t\t\t\t\t\ttransform: position,\n\t\t\t\t\t\ttransition: state.transition,\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t>\n\t\t\t\t\t{displayItems.map((item, i) => {\n\t\t\t\t\t\tconst { props: itemProps } = item;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\tactive={i - extra === state.current}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\tgap={gap}\n\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\titemHeight={itemHeight}\n\t\t\t\t\t\t\t\tvertical={vertical}\n\t\t\t\t\t\t\t\t{...itemProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{arrow && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{indicator && (\n\t\t\t\t<div className='i-swiper-indicators'>\n\t\t\t\t\t{indicatorsLoop.map((whatever, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-swiper-indicator\", {\n\t\t\t\t\t\t\t\t\t\"i-indicator-active\":\n\t\t\t\t\t\t\t\t\t\ti ===\n\t\t\t\t\t\t\t\t\t\tMath[loop ? \"floor\" : \"ceil\"](\n\t\t\t\t\t\t\t\t\t\t\t((state.current + size) % size) /\n\t\t\t\t\t\t\t\t\t\t\t\tscroll\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => swipeTo(i * scroll)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderIndicator?.(i)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}) as CompositionSwiper;\n\nSwiper.Item = Item;\n\nexport default Swiper;\n","import { ITabItem } from \"./type\";\n\nconst Item = (props: ITabItem) => {\n\treturn <></>;\n};\n\nexport default Item;\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport { MoreHorizRound } from \"@ricons/material\";\nimport { useReactive, useSize } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { pick } from \"radash\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n} from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs, TTabKey } from \"./type\";\n\ntype TState = {\n\tactive?: TTabKey;\n\tprevActive?: TTabKey;\n\tbarStyle: CSSProperties;\n\tcachedTabs: TTabKey[];\n\toverflow: boolean;\n\tmore: ITabItem[];\n\ttabs: ITabItem[];\n};\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\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) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": state.active === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={state.barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && state.overflow && state.more.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{state.more.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = i, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = state.active === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(state.more)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\tconst { key = i, content } = tab;\n\t\t\t\t\tconst isActive = state.active === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && state.cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n","import { KeyboardArrowDownRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useState } from \"react\";\nimport Checkbox from \"../checkbox\";\nimport Icon from \"../icon\";\nimport { ITree, ITreeHeader, PropsTreeItem } from \"./type\";\n\ninterface ITreeList extends Omit<ITree, \"nodeProps\"> {\n\tnodeProps: {\n\t\tkey: string;\n\t\ttitle: string;\n\t\tchildren: string;\n\t};\n}\n\nexport function TreeList(props: ITreeList) {\n\tconst {\n\t\tdata = [],\n\t\tdepth = 0,\n\t\tround,\n\t\tstyle,\n\t\tclassName,\n\t\tparent,\n\t\tnodeProps,\n\t\t...restProps\n\t} = props;\n\n\tconst contents = data.map((item, i) => {\n\t\tconst { type } = item;\n\t\tconst title = item[nodeProps.title];\n\t\tconst itemKey =\n\t\t\titem[nodeProps.key] ||\n\t\t\t(parent?.key !== undefined ? `${parent.key}-${i}` : `${i}`);\n\n\t\titem.key = itemKey;\n\t\titem.parent = parent;\n\n\t\tif (type === \"title\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className='i-tree-group-title'>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif (type && type !== \"item\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className={`i-tree-type-${type}`}>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TreeItem\n\t\t\t\tkey={itemKey}\n\t\t\t\tindex={i}\n\t\t\t\titem={item}\n\t\t\t\tdepth={depth}\n\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t);\n\t});\n\n\tif (depth > 0) return <>{contents}</>;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree\", className, {\n\t\t\t\t\"i-tree-round\": round,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{contents}\n\t\t</div>\n\t);\n}\n\nconst Header = (props: ITreeHeader) => {\n\tconst { as: Tag = \"a\", href, selected, children, ...restProps } = props;\n\n\tconst className = classNames(\"i-tree-item-header\", {\n\t\t\"i-tree-item-selected\": selected,\n\t});\n\n\tif (typeof Tag === \"string\") {\n\t\treturn (\n\t\t\t<Tag href={href} className={className} {...restProps}>\n\t\t\t\t{children}\n\t\t\t</Tag>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tag to={href || \"\"} className={className} {...restProps}>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport const TreeItem = (props: PropsTreeItem) => {\n\tconst {\n\t\titem,\n\t\tdepth = 0,\n\t\tindex,\n\t\tselected,\n\t\tchecked = [],\n\t\tpartofs = {},\n\t\tcheckable,\n\t\tnodeProps,\n\t\trenderExtra,\n\t\tonItemClick,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\n\tconst { as, key = \"\", href, icon, title, expanded, disabled } = item;\n\tconst children = item[nodeProps.children];\n\n\tconst [expand, setExpand] = useState(expanded);\n\n\tconst handleExpand = (e: MouseEvent<HTMLElement>, fromToggle?: boolean) => {\n\t\tif (fromToggle) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (disabled || !children?.length) return;\n\n\t\tsetExpand((v) => !v);\n\t};\n\n\tconst handleItemClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\thandleExpand(e);\n\t\tonItemClick?.(item, e);\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tconst handleItemCheck = (checked) => onItemCheck?.(item, checked, []);\n\tconst itemChecked = checked.includes(key);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree-item\", {\n\t\t\t\t\"i-tree-expand\": expand,\n\t\t\t})}\n\t\t>\n\t\t\t<Header\n\t\t\t\tas={as}\n\t\t\t\thref={href}\n\t\t\t\tstyle={{ paddingLeft: `${depth * 1.5 + 0.5}em` }}\n\t\t\t\tselected={selected === key}\n\t\t\t\tonClick={handleItemClick}\n\t\t\t>\n\t\t\t\t{checkable && (\n\t\t\t\t\t<Checkbox.Item\n\t\t\t\t\t\tvalue={itemChecked}\n\t\t\t\t\t\tpartof={!itemChecked && partofs[key]}\n\t\t\t\t\t\tclassName='i-tree-checkbox'\n\t\t\t\t\t\tonChange={handleItemCheck}\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{icon && <span className='i-tree-item-icon'>{icon}</span>}\n\n\t\t\t\t<span className='i-tree-item-title'>{title}</span>\n\n\t\t\t\t{renderExtra?.(item)}\n\n\t\t\t\t{children && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<KeyboardArrowDownRound />}\n\t\t\t\t\t\tclassName='i-tree-toggle'\n\t\t\t\t\t\tonClick={(e) => handleExpand(e, true)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Header>\n\n\t\t\t{children?.length && (\n\t\t\t\t<div className='i-tree-item-content'>\n\t\t\t\t\t<TreeList\n\t\t\t\t\t\tdata={children}\n\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\tcheckable={checkable}\n\t\t\t\t\t\tparent={item}\n\t\t\t\t\t\tpartofs={partofs}\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t\t\trenderExtra={renderExtra}\n\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\tonItemSelect={onItemSelect}\n\t\t\t\t\t\tonItemCheck={onItemCheck}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useImperativeHandle } from \"react\";\nimport \"./index.css\";\nimport { TreeList } from \"./item\";\nimport { ITree, ITreeItem } from \"./type\";\n\nconst defaultNodeProps = {\n\tkey: \"key\",\n\ttitle: \"title\",\n\tchildren: \"children\",\n};\n\nconst Tree = (props: ITree) => {\n\tconst {\n\t\tdata = [],\n\t\tref,\n\t\tselected,\n\t\tchecked = [],\n\t\tdisabledRelated,\n\t\tnodeProps,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tselected,\n\t\tchecked,\n\t\tpartofs: {} as Record<string, boolean>,\n\t\tnodeMaps: new Map(),\n\t});\n\tconst oNodeProps = Object.assign({}, defaultNodeProps, nodeProps);\n\n\tconst isChecked = (key?: string) => state.checked.includes(key || \"\");\n\n\tconst checkItem = (\n\t\titem: ITreeItem,\n\t\tchecked: boolean,\n\t\tdirection?: \"root\" | \"leaf\"\n\t) => {\n\t\tconst { key = \"\", parent, children } = item;\n\t\tconst shouldChanged = { [key]: checked };\n\t\tconst partofs = { [key]: false };\n\n\t\tif (disabledRelated) return [shouldChanged];\n\n\t\tif (checked) {\n\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\tconst hasUnchecked = parent.children?.some(\n\t\t\t\t\t(o) => o.key !== key && !isChecked(o.key)\n\t\t\t\t);\n\n\t\t\t\tconst [changes, parts] = checkItem(parent, true, \"root\");\n\n\t\t\t\tif (!hasUnchecked) {\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t}\n\n\t\t\t\tObject.assign(partofs, hasUnchecked ? parts : {}, {\n\t\t\t\t\t[parent.key as string]: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\tchildren.map((o) => {\n\t\t\t\t\tif (isChecked(o.key)) return;\n\n\t\t\t\t\tconst [changes] = checkItem(o, true, \"leaf\");\n\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [shouldChanged, partofs];\n\t\t}\n\n\t\tif (parent && direction !== \"leaf\") {\n\t\t\tconst [changes, parts] = checkItem(parent, false, \"root\");\n\n\t\t\tObject.assign(shouldChanged, changes);\n\n\t\t\tconst hasChecked = parent.children?.some(\n\t\t\t\t(o) => isChecked(o.key) && o.key !== key\n\t\t\t);\n\n\t\t\tObject.assign(partofs, hasChecked ? {} : parts, {\n\t\t\t\t[parent.key as string]: hasChecked,\n\t\t\t\t[key]: false,\n\t\t\t});\n\t\t}\n\t\tif (children?.length && direction !== \"root\") {\n\t\t\tchildren.map((o) => {\n\t\t\t\tconst [changes] = checkItem(o, false, \"leaf\");\n\n\t\t\t\tif (!isChecked(o.key)) return;\n\n\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t});\n\t\t}\n\n\t\treturn [shouldChanged, partofs];\n\t};\n\n\tconst handleCheck = (item: ITreeItem, checked: boolean) => {\n\t\tconst [shouldChanged, partofs] = checkItem(item, checked);\n\t\tconst changedKeys = Object.keys(shouldChanged);\n\n\t\tstate.checked = checked\n\t\t\t? Array.from(new Set([...state.checked, ...changedKeys]))\n\t\t\t: state.checked.filter((k) => !changedKeys.includes(k));\n\n\t\tObject.assign(state.partofs, partofs);\n\n\t\tonItemCheck?.(item, checked, state.checked);\n\t};\n\n\tconst handleSelect = (key: string, item: ITreeItem) => {\n\t\tif (!props.selectable) return;\n\n\t\tstate.selected = key;\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tuseEffect(() => {\n\t\tif (selected === undefined) return;\n\n\t\tstate.selected = selected;\n\t}, [selected]);\n\n\tuseEffect(() => {\n\t\tstate.nodeMaps.clear();\n\n\t\tconst { key, children } = oNodeProps;\n\t\tconst recursive = (nodes) => {\n\t\t\tnodes.map((o) => {\n\t\t\t\tstate.nodeMaps.set(o[key], o);\n\n\t\t\t\to[children]?.length > 0 && recursive(o[children]);\n\t\t\t});\n\t\t};\n\n\t\trecursive(data);\n\t}, [data]);\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tgetChecked: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tstate.checked.map((k) => {\n\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\titems.push(item);\n\t\t\t\t});\n\t\t\t\treturn [state.checked, items];\n\t\t\t},\n\t\t\tgetSelected: () => {\n\t\t\t\tconst item = state.nodeMaps.get(state.selected);\n\t\t\t\treturn [state.selected, item];\n\t\t\t},\n\t\t\tgetPartofs: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tconst keys = Object.keys(state.partofs).filter((k) => {\n\t\t\t\t\tconst indeterminate = state.partofs[k];\n\n\t\t\t\t\tif (indeterminate) {\n\t\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn indeterminate;\n\t\t\t\t});\n\n\t\t\t\treturn [keys, items];\n\t\t\t},\n\t\t};\n\t});\n\n\treturn (\n\t\t<TreeList\n\t\t\tdata={data}\n\t\t\tselected={state.selected}\n\t\t\tchecked={state.checked}\n\t\t\tpartofs={state.partofs}\n\t\t\tnodeProps={oNodeProps}\n\t\t\tonItemCheck={handleCheck}\n\t\t\tonItemSelect={handleSelect}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nexport default Tree;\n","import { TFileType } from \"@p/js/usePreview/type\";\nimport { formatBytes, getFileType } from \"@p/js/utils\";\nimport { ListAltRound } from \"@ricons/material\";\nimport { title } from \"radash\";\nimport 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\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 } from \"./type\";\n\nconst Upload = (props: IUpload) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem = renderFile,\n\t\tshouldUpload = () => true,\n\t\tuploader,\n\t\tonChange,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tfiles,\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t\tupdate: 0,\n\t});\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst preview = usePreview();\n\n\tconst trigger = useMemo(() => {\n\t\tif (children) return children;\n\n\t\tswitch (mode) {\n\t\t\tcase \"card\":\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-upload-card-btn color-5'\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tflat\n\t\t\t\t\t\toutline\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlusSharp />} />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<Button className='i-upload-btn' disabled={disabled}>\n\t\t\t\t\t\t<Icon icon={<CloudUploadTwotone />} /> Upload\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t}\n\t}, [mode, children]);\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = Array.from(e.target.files || []) as IFile[];\n\t\tconst { files: before } = state;\n\t\tconst changed: IFile[] = [];\n\n\t\tfiles.map((f) => {\n\t\t\tconst { name, size, type } = f;\n\t\t\tconst same = before.find((pf) => {\n\t\t\t\tconst { name: n, size: s, type: t } = pf;\n\t\t\t\treturn n === name && s === size && t === type;\n\t\t\t});\n\n\t\t\tconst src = URL.createObjectURL(f);\n\t\t\tf.src = src;\n\t\t\tstate.update += 1;\n\n\t\t\tObject.assign(f, {\n\t\t\t\tuid: uid(7),\n\t\t\t\tsrc: f.src || f.name,\n\t\t\t});\n\t\t\t!same && changed.push(f);\n\t\t});\n\n\t\tconst after = [...before, ...changed];\n\n\t\tObject.assign(state, {\n\t\t\tfiles: multiple ? after.slice(0, limit) : [after.at(-1)],\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonFilesChange?.(state.files, changed, e);\n\t\tonChange?.(state.files, e);\n\n\t\thandleUpload(changed);\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleRemove = (i: number) => {\n\t\tconst [...files] = state.files;\n\n\t\tconst changed = files.splice(i, 1);\n\t\tURL.revokeObjectURL(changed[0]?.src || \"\");\n\n\t\tstate.files = files;\n\t\tonFilesChange?.(files, changed);\n\t\tonChange?.(files);\n\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleUpload = async (files: IFile[]) => {\n\t\tif (!uploader) return;\n\n\t\tfiles.forEach(async (file) => {\n\t\t\tif (!shouldUpload(file)) return;\n\n\t\t\tconst result = await uploader(file);\n\t\t\tconst i = state.files.findIndex((f) => f.uid === result.uid);\n\t\t\ti > -1 && (state.files[i] = result);\n\n\t\t\tresult?.status === \"completed\" && onUpload?.(result);\n\t\t});\n\t};\n\n\tconst handlePreview = (i: number) => {\n\t\tpreview({ items: state.files as TPreviewItem[], initial: i });\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\t}, [status, message]);\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\t\t}),\n\t\t[]\n\t);\n\n\tconst { message: msg, files: currentFiles } = state;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={classNames(\"i-input-label-file\", className)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<input\n\t\t\t\t{...restProps}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tref={inputRef}\n\t\t\t\ttype='file'\n\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\tmultiple={multiple}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-upload-inner\", {\n\t\t\t\t\t[`i-upload-${mode}`]: mode !== \"default\",\n\t\t\t\t})}\n\t\t\t\tstyle={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName='i-upload-list'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{currentFiles?.map((file: File, i: number) => (\n\t\t\t\t\t\t<Fragment key={i}>\n\t\t\t\t\t\t\t{renderFile({\n\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\t\tonRemove: handleRemove,\n\t\t\t\t\t\t\t\tonPreview: handlePreview,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t{msg && <span className='i-upload-message'>{msg}</span>}\n\n\t\t\t\t{currentFiles.length < limit && trigger}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Upload;\n"],"names":["TIMEOUT","listener","e","target","parent","closest","$box","$ripple","document","createElement","className","append","createRipple","rect","getBoundingClientRect","size","Math","max","width","height","style","cssText","pageX","left","pageY","top","insertAdjacentElement","offsetHeight","classList","add","setTimeout","remove","triggerRipple","Loading","props","icon","text","absolute","restProps","_jsxs","classNames","inset","children","_jsx","stroke","viewBox","xmlns","fontSize","cx","cy","r","fill","strokeWidth","strokeLinecap","strokeDasharray","strokeDashoffset","formatClass","outline","flat","loading","disabled","block","round","square","secondary","classnames","Button","as","As","ref","href","ripple","onClick","childNodes","key","attrs","stopPropagation","useEffect","documentElement","dataset","addEventListener","to","Toggle","active","activeClass","after","onToggle","state","useReactive","done","toggle","hasAfter","undefined","nextActive","Object","assign","Group","vertical","Icon","rotate","isValidElement","elProps","transform","cloneElement","ToTop","SkipPreviousRound","Affix","position","right","bottom","offset","getContainer","body","hidden","setHidden","useState","hijackChildren","useMemo","Children","map","node","type","container","scrollTo","behavior","debounce","delay","scrollTop","removeEventListener","Badge","content","contentClass","dot","dotSize","rounded","Card","hideShadow","border","header","footer","shadow","TFileType","getPosition","$source","$popup","options","refWindow","gap","align","arrowX","arrowY","arrowPos","rectT","rectC","w","window","innerWidth","h","innerHeight","tl","tt","tr","tb","tw","th","ch","cw","rectPa","offsetParent","offsetLeft","offsetTop","y","x","computePosition","containerSize","targetSize","targetOffset","contentSize","xl","xr","R","yt","yb","T","B","getPointPosition","pw","ph","pl","pt","ow","oh","ol","ot","centerPoint","result","formatOption","option","includes","label","value","formatNumber","precision","thousand","toFixed","points","split","integer","replace","length","renderNode","div","root","createRoot","sto","render","unmount","clearTimeout","getSuffixByUrl","url","match","getFileType","suffix","startsWith","formatBytes","bytes","decimals","dm","i","floor","log","parseFloat","pow","clamp","min","CheckboxItem","name","status","message","partof","onChange","checked","Checkbox","optionInline","labelInline","required","formattedOptions","opt","group","findIndex","item","push","splice","handleChange","Item","Helpericon","CloseRound","uid","Collapse","items","multiple","headerClickable","renderToggle","MinusRound","PlusRound","onCollapse","collapses","nodeProps","title","handleToggle","Array","isArray","k","isActive","handleHeaderClick","Empty","InboxTwotone","getCellStyle","justify","col","row","colSpan","rowSpan","gridArea","insetInline","Cell","column","data","cellEllipsis","onCellClick","onCellDoubleClick","id","fixed","onDoubleClick","MouseMoveEvents","Set","MouseUpEvents","touchable","EVENTS","MOVE","UP","useMouseMove","delete","useMouseUp","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","entry","callback","get","isIntersecting","observe","set","unobserve","disconnect","Resize","index","onWidthChange","resizing","preventDefault","onMouseDown","offsetWidth","values","passive","Arrow","d","Sorter","Row","columns","onRowClick","Header","resizable","sortBy","sortType","onHeaderClick","sorter","renderHeader","order","insetBlockStart","Datagrid","striped","cellPadding","empty","renderLoading","onSort","onScroll","onResize","useRef","scrollbar","rows","widths","styles","o","join","fws","isLeft","sum","slice","reduce","pre","cur","find","sortFn","a","b","sorted","sort","reverse","current","tds","querySelector","from","scrollBarStyle","ScrollContainer","autoHide","autoHeight","autoHeightMax","renderView","ws","prevSortBy","prevSortType","types","t","getNextSorter","Description","colon","labelWidth","labelAlign","equally","gridTemplateColumns","textAlign","Fragment","gridColumn","gridRow","Drawer","visible","backdropClosable","hideCloseButton","keepDOM","onVisibleChange","onClose","toggable","show","init","handleShow","handleHide","createPortal","List","renderLabel","Virtual","itemKey","renderItem","VList","alignItems","Content","trigger","arrow","arrowProps","arrowCSS","pos","Popup","showDelay","hideDelay","fitSize","watchResize","clickOutside","referToWindow","triggerRef","contentRef","toggling","useClickAway","tar","isContain","contains","opacity","action","eventMaps","useCreation","click","hover","onMouseEnter","onMouseLeave","focus","onFocus","onBlur","contextmenu","onContextMenu","none","contentTouch","events","ResizeObserver","useResizeObserver","useLayoutEffect","_Fragment","child","keys","evt","fn","ListItem","Dropdown","minWidth","more","moreProps","Li","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","cacheData","rules","constructor","this","field","PubSub","publish","clear","validate","rule","validator","v","isValid","isAllValid","Form","form","initialValues","onEnter","Provider","onKeyDown","keyCode","DefaultContent","footerLeft","okButtonProps","onOk","cancelButtonProps","showHeader","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","customized","setShow","setActive","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","Promise","resolve","then","unsubscribe","HookModal","useImperativeHandle","config","Text","Tag","weight","decoration","gradient","wave","gradients","backgroundImage","backgroundClip","fontWeight","textDecoration","Circle","pathLength","Number","count","decimal","duration","easing","n","setN","number","z","start","performance","now","diff","raf","requestAnimationFrame","loop","percent","cancelAnimationFrame","pass","animate","Time","seconds","zero","units","time","l","unshift","formatTime","HighLight","keyword","escape","caseSensitive","renderWord","word","source","findAll","searchWords","textToHighlight","autoEscape","chunk","end","highlight","Line","barClass","dragging","renderCursor","onTouchStart","Progress","draggable","toFixedValue","handleMouseDown","touches","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","controlHidden","videoRef","hiddenTO","timeUpdateListener","paused","currentTime","playChangeListener","fsChangeListener","parentElement","fullscreenElement","volumeChangeListener","handlePlay","play","pause","handleStop","handleFullscreen","el","exitFullscreen","requestFullscreen","showControls","clearHiddenTO","handleMouseMove","throttle","interval","stop","fullscreen","getVideo","onMouseMove","onCanPlay","controls","PauseRound","PlayArrowRound","StopRound","FullscreenExitRound","FullscreenRound","VolumeOffRound","VolumeDownRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","handleSwitch","next","before","handleRotate","deg","handleMouseWheel","deltaY","ox","oy","offsetX","offsetY","onWheel","AspectRatioRound","OpenInNewRound","download","FileDownloadOutlined","RotateRightRound","RotateLeftRound","KeyboardArrowLeftRound","KeyboardArrowRightRound","usePreview","modalProps","unMount","Image","initSize","lazyload","fallback","HideImageTwotone","fit","cover","coverClass","previewable","onLoad","onError","wh","preview","handleClick","complete","setAttribute","iSize","objectFit","err","InputContainer","tip","img","Input","initValue","prepend","hideVisible","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","code","clearable","showHelper","Textarea","autoSize","refTextarea","ta","firstChild","scrollHeight","step","Infinity","hideControl","onInput","rest","formatInputValue","replaceAll","handleOperate","param","getFormatNumber","Range","placeholder","range","SyncAltRound","margin","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","callout","close","queue","heights","tops","onShow","bind","onHide","timer","renderItems","MessageItem","alignSelf","error","success","warning","useModal","open","Page","page","setLoading","async","Pagination","defaultPage","total","sibling","prev","simple","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","handlePageChange","p","dotClass","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","activeOptions","Select","hideClear","hideArrow","popupProps","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","ColorMethods","HEX","RGB","HSB","Footer","onTypeChange","Handle","color","handle","background","ColorPicker","disabledAlpha","usePanel","syncValue","handleTypeChange","method","handleValueChange","ColorsPanel","panelRender","panel","onChangeComplete","Dates","month","weeks","renderDate","date","disabledDate","onDateClick","today","dayjs","dates","lastDateOfLastMonth","endOf","$W","$D","lastMonthDates","whatever","lastDate","week","isSame","isSameMonth","isToday","handleDateClick","MONTHS","YearMonth","unitMonth","unitYear","renderYear","renderMonth","year","Panel","m","selectedYear","years","selectable","$years","handleOperateMonth","getMoreYears","isUp","_","handleChangeMonth","extend","customParseFormat","FORMATTYPES","FORMAT","Datepicker","format","dayJsValue","handleSetDate","CalendarMonthTwotone","Items","unit","UnitMaps","hh","mm","s","ss","stepH","stepM","stepS","periods","onFallback","period","hour","minute","second","hours","minutes","hasH","hasM","hasS","handleSetTime","pattern","toLowerCase","updateValue","nums","TimePicker","safeValue","AccessTimeRound","defaultOk","defaultCancel","Popconfirm","InfoOutlined","extra","ok","cancel","popconfirmContent","finally","RadioItem","Radio","Resizable","other","minSize","maxSize","line","asPercent","onResizeComplete","Divider","STATUS","defaultRenderIcon","renderIcon","asList","Step","steps","nodes","transition","itemHeight","selfStyle","Swiper","display","scroll","pauseOnHover","dragOffset","indicator","renderIndicator","onBeforeSwipe","onAfterSwipe","listRef","timerRef","swipable","dragStart","initialized","displayItems","listSize","list","head","offsetPercent","trackStyle","indicatorsLoop","clearTimer","swipeTo","reset","lastDisplay","swipeNext","swipePrev","clientY","clientX","changedTouches","dragEnd","part","absOffset","abs","onMouseOver","itemProps","Tabs","tabs","bar","hideMore","renderMore","onTabChange","navRefs","barRef","navsRef","prevActive","barStyle","cachedTabs","overflow","useSize","cloned","pick","String","tab","tkey","scrollBy","deltaX","scrollWidth","nav","intersecting","isLine","navs","flex","TreeList","depth","contents","TreeItem","selected","partofs","checkable","renderExtra","onItemClick","onItemSelect","onItemCheck","expanded","expand","setExpand","handleExpand","fromToggle","itemChecked","paddingLeft","KeyboardArrowDownRound","defaultNodeProps","Tree","disabledRelated","nodeMaps","Map","oNodeProps","isChecked","checkItem","shouldChanged","hasUnchecked","some","changes","parts","hasChecked","recursive","getChecked","getSelected","getPartofs","indeterminate","changedKeys","RenderFile","mode","onRemove","onPreview","CloseBtn","preload","ListAltRound","Upload","cardSize","limit","shouldUpload","uploader","onFilesChange","onUpload","inputRef","PlusSharp","CloudUploadTwotone","handleRemove","changed","URL","revokeObjectURL","handleUpload","forEach","f","handlePreview","getFileList","msg","currentFiles","same","pf","createObjectURL","at"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../packages/js/useRipple/index.ts","../packages/components/loading/loading.tsx","../packages/components/button/button.tsx","../packages/components/button/index.tsx","../packages/components/button/toggle.tsx","../packages/components/button/group.tsx","../packages/components/icon/icon.tsx","../packages/components/affix/totop.tsx","../packages/components/affix/affix.tsx","../packages/components/badge/badge.tsx","../packages/components/card/card.tsx","../packages/js/usePreview/type.ts","../packages/js/utils.ts","../packages/components/checkbox/item.tsx","../packages/components/checkbox/checkbox.tsx","../packages/components/utils/helpericon/helpericon.tsx","../packages/components/collapse/collapse.tsx","../packages/components/utils/empty/index.tsx","../packages/components/datagrid/cell.tsx","../packages/components/collapse/item.tsx","../packages/js/hooks.ts","../packages/components/datagrid/resize.tsx","../packages/components/datagrid/sorter.tsx","../packages/components/datagrid/row.tsx","../packages/components/datagrid/datagrid.tsx","../packages/components/description/description.tsx","../packages/components/drawer/drawer.tsx","../packages/components/list/item.tsx","../packages/components/list/list.tsx","../packages/components/list/virtual.tsx","../packages/components/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/dropdown/item.tsx","../packages/components/dropdown/dropdown.tsx","../packages/components/flex/flex.tsx","../packages/components/form/context.tsx","../packages/components/form/useForm.ts","../packages/components/form/form.tsx","../packages/components/modal/modal.tsx","../packages/components/form/field.tsx","../packages/components/modal/hookModal.tsx","../packages/components/text/text.tsx","../packages/components/progress/circle.tsx","../packages/components/text/index.tsx","../packages/components/text/number.tsx","../packages/components/text/time.tsx","../packages/components/text/highlight.tsx","../packages/components/progress/line.tsx","../packages/components/progress/progress.tsx","../packages/components/video/video.tsx","../packages/js/usePreview/renderFile.tsx","../packages/js/usePreview/content.tsx","../packages/js/usePreview/index.tsx","../packages/components/image/image.tsx","../packages/components/input/container.tsx","../packages/components/image/index.tsx","../packages/components/image/list.tsx","../packages/components/input/input.tsx","../packages/components/input/index.tsx","../packages/components/input/textarea.tsx","../packages/components/input/number.tsx","../packages/components/input/range.tsx","../packages/components/message/message.tsx","../packages/components/modal/index.tsx","../packages/components/modal/useModal.tsx","../packages/components/pagination/page.tsx","../packages/components/pagination/pagination.tsx","../packages/components/tag/tag.tsx","../packages/components/select/options.tsx","../packages/components/select/select.tsx","../packages/components/picker/colors/footer.tsx","../packages/components/picker/colors/handle.tsx","../packages/components/picker/colors/index.tsx","../packages/components/picker/dates/dates.tsx","../packages/components/picker/dates/panel.tsx","../packages/components/picker/dates/index.tsx","../packages/components/picker/time/item.tsx","../packages/components/picker/time/panel.tsx","../packages/components/picker/time/index.tsx","../packages/components/popconfirm/popconfirm.tsx","../packages/components/radio/item.tsx","../packages/components/radio/radio.tsx","../packages/components/resizable/resizable.tsx","../packages/components/step/divider.tsx","../packages/components/step/item.tsx","../packages/components/step/step.tsx","../packages/components/swiper/item.tsx","../packages/components/swiper/swiper.tsx","../packages/components/tabs/item.tsx","../packages/components/tabs/tabs.tsx","../packages/components/tree/item.tsx","../packages/components/tree/tree.tsx","../packages/components/upload/renderFile.tsx","../packages/components/upload/upload.tsx"],"sourcesContent":["import \"./ripple.css\";\n\nconst TIMEOUT = 500;\n\nconst useRipple = () => {\n\tif (document.documentElement.dataset[\"useripple\"]) return;\n\tdocument.documentElement.dataset[\"useripple\"] = \"enable\";\n\n\tdocument.addEventListener(\"mousedown\", listener);\n};\n\nfunction listener(e: MouseEvent) {\n\tconst target = e.target as HTMLElement;\n\tconst parent = target.closest(\"[data-ripple]\") as HTMLElement;\n\n\tif (!target || !parent) return;\n\n\ttriggerRipple(parent, e);\n}\n\nfunction triggerRipple(target: HTMLElement, e: MouseEvent) {\n\tconst [$box, $ripple] = createRipple();\n\tconst rect = target.getBoundingClientRect();\n\tconst size = Math.max(rect.width, rect.height) * 2;\n\n\t$ripple.style.cssText = `\n left: ${e.pageX - rect.left}px;\n top: ${e.pageY - rect.top}px;\n width: ${size}px;\n height: ${size}px;\n transition: all ${TIMEOUT / 1000}s;\n `;\n\ttarget.insertAdjacentElement(\"afterbegin\", $box);\n\ttarget.offsetHeight;\n\t$ripple.classList.add(\"i-ripple-active\");\n\n\tsetTimeout(() => {\n\t\t$box.remove();\n\t}, TIMEOUT);\n}\n\nfunction createRipple() {\n\tconst $box = document.createElement(\"SPAN\");\n\tconst $ripple = document.createElement(\"SPAN\");\n\n\t$box.className = \"i-ripple-container\";\n\t$ripple.className = \"i-ripple\";\n\n\t$box.append($ripple);\n\n\treturn [$box, $ripple];\n}\n\nexport default useRipple;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n","import useRipple from \"@p/js/useRipple\";\nimport classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\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};\n\nexport default Button as CompositionButton;\n","import Button from \"./button\";\nimport Group from \"./group\";\nimport Toggle from \"./toggle\";\n\nButton.Toggle = Toggle;\nButton.Group = Group;\n\nexport default Button;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useEffect } from \"react\";\nimport Button from \"./button\";\nimport { IButtonToggle } from \"./type\";\n\nexport default function Toggle(props: IButtonToggle) {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\tactiveClass,\n\t\tafter,\n\t\tdisabled,\n\t\tchildren,\n\t\tclassName,\n\t\tonClick,\n\t\tonToggle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t\tdone: true,\n\t});\n\n\tconst toggle = () => {\n\t\tconst hasAfter = after !== undefined;\n\t\tconst nextActive = !state.active;\n\n\t\tObject.assign(state, {\n\t\t\tactive: nextActive,\n\t\t\tdone: !hasAfter,\n\t\t});\n\t\tonToggle?.(nextActive);\n\n\t\thasAfter &&\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.done = true;\n\t\t\t}, 16);\n\t};\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tonClick?.(e);\n\n\t\t!disabled && toggle();\n\t};\n\n\tuseEffect(() => {\n\t\tstate.active !== active && toggle();\n\t}, [active]);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\t{ [activeClass || \"\"]: state.active },\n\t\t\t\t\"i-btn-toggle\"\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-btn-toggle-content\", {\n\t\t\t\t\t\"i-btn-toggle-active\": state.done,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{state.active ? after ?? children : children}\n\t\t\t</div>\n\t\t</Button>\n\t);\n}\n","import classNames from \"classnames\";\nimport { 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, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = (props: IIcon) => {\n\tconst {\n\t\tref,\n\t\ticon,\n\t\tsize = \"1.425em\",\n\t\trotate,\n\t\tstyle,\n\t\tclassName,\n\t\t...restProps\n\t} = props;\n\n\tif (!isValidElement(icon)) return icon;\n\n\tconst elProps = {\n\t\tref,\n\t\tstyle: {\n\t\t\ttransform: rotate ? `rotate(${rotate}deg)` : undefined,\n\t\t\t...style,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t},\n\t\tclassName: classNames(\"i-icon\", className),\n\t\t...restProps,\n\t};\n\n\treturn cloneElement(icon, elProps);\n};\n\nexport default Icon;\n","import { SkipPreviousRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport { IAffix } from \"./type\";\n\nfunction ToTop(props: IAffix) {\n\tconst { style, className, onClick } = props;\n\n\treturn (\n\t\t<Button\n\t\t\tsquare\n\t\t\tclassName={classNames(\"i-affix-totop\", className)}\n\t\t\tstyle={{ ...style }}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Icon icon={<SkipPreviousRound />} rotate={90} />\n\t\t</Button>\n\t);\n}\n\nexport default ToTop;\n","import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => document.body,\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst {\n\t\thideShadow,\n\t\tborder,\n\t\tclassName,\n\t\tchildren,\n\t\theader,\n\t\tfooter,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n","import { CSSProperties, ReactNode } from \"react\";\nimport { IModal } from \"../../components/modal/type\";\n\nexport type TPreviewItem = {\n\tsrc: string;\n\tname?: ReactNode;\n\tthumb?: string;\n\trotate?: number;\n\tzoom?: number;\n\tstyle?: CSSProperties;\n\ttype?: TFileType;\n\tsuffix?: string;\n};\n\nexport enum TFileType {\n\tIMAGE = \"IMAGE\",\n\tVIDEO = \"VIDEO\",\n\tAUDIO = \"AUDIO\",\n\tPDF = \"PDF\",\n\tEXCEL = \"EXCEL\",\n\tTXT = \"TXT\",\n\tUNKNOWN = \"UNKNOWN\",\n}\n\nexport interface IPreview {\n\titems: (TPreviewItem | string)[];\n\tinitial?: number;\n\tcontrols?: boolean;\n\tloop?: boolean;\n\tclassName?: string;\n\tstyle?: CSSProperties;\n\tmodalProps?: IModal;\n\trenderImage?: (file: TPreviewItem) => ReactNode;\n\trenderFile?: (file: TPreviewItem) => ReactNode;\n\tonClose?: () => void;\n\tonChange?: (after: number, before?: number) => void;\n\tonZoom?: (scale: number) => void;\n\tonRotate?: (deg: number) => void;\n}\n","import { MouseEvent, ReactNode } from \"react\";\nimport { Root, createRoot } from \"react-dom/client\";\nimport { TFileType } from \"../js/usePreview/type\";\nimport { TOption, TOptions, TRelativeOptions } from \"../type\";\n\ntype TComputePosition = {\n\tcontainerSize: number;\n\ttargetSize: number;\n\ttargetOffset: number;\n\tcontentSize: number;\n\tgap: number;\n\talign?: \"start\" | \"center\" | \"end\";\n};\n\nexport function getPosition(\n\t$source?: HTMLElement | null,\n\t$popup?: HTMLElement | null,\n\toptions: TRelativeOptions = {}\n): [\n\tx: number,\n\ty: number,\n\tz: {\n\t\tarrowX: number;\n\t\tarrowY: number;\n\t\tarrowPos: string;\n\t}\n] {\n\tconst { refWindow, gap = 0, offset = 0, position = \"top\", align } = options;\n\n\tif (!$source || !$popup)\n\t\treturn [\n\t\t\t0,\n\t\t\t0,\n\t\t\t{\n\t\t\t\tarrowX: 0,\n\t\t\t\tarrowY: 0,\n\t\t\t\tarrowPos: \"bottom\",\n\t\t\t},\n\t\t];\n\n\tconst rectT = $source.getBoundingClientRect();\n\tconst rectC = $popup.getBoundingClientRect();\n\n\tlet w = window.innerWidth;\n\tlet h = window.innerHeight;\n\tlet {\n\t\tleft: tl,\n\t\ttop: tt,\n\t\tright: tr,\n\t\tbottom: tb,\n\t\twidth: tw,\n\t\theight: th,\n\t} = rectT;\n\tconst { height: ch, width: cw } = rectC;\n\n\tif (!refWindow) {\n\t\tconst rectPa = $source.offsetParent?.getBoundingClientRect();\n\n\t\tw = rectPa?.width || w;\n\t\th = rectPa?.height || h;\n\t\ttl = $source.offsetLeft;\n\t\ttt = $source.offsetTop;\n\t\ttr = tl + rectT.width;\n\t\ttb = tt + rectT.height;\n\t}\n\n\tlet y = 0;\n\tlet x = 0;\n\tlet arrowX = 0;\n\tlet arrowY = 0;\n\tlet arrowPos = \"bottom\";\n\n\tswitch (position) {\n\t\tcase \"left\":\n\t\tcase \"right\":\n\t\t\ty =\n\t\t\t\tth !== ch\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: h,\n\t\t\t\t\t\t\ttargetSize: th,\n\t\t\t\t\t\t\ttargetOffset: tt,\n\t\t\t\t\t\t\tcontentSize: ch,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tt;\n\t\t\tarrowY = y < tt ? tt - y + th / 2 : th / 2;\n\n\t\t\tconst xl = tl - offset - cw;\n\t\t\tconst xr = tr + offset + cw;\n\n\t\t\tif (position === \"left\") {\n\t\t\t\tconst R = xl < 0 && xr <= w;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tconst R = w > xr || xl < 0;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\tcase \"bottom\":\n\t\t\tx =\n\t\t\t\ttw !== cw\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: w,\n\t\t\t\t\t\t\ttargetOffset: tl,\n\t\t\t\t\t\t\ttargetSize: tw,\n\t\t\t\t\t\t\tcontentSize: cw,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tl;\n\t\t\tarrowX = x > tl ? cw / 2 : tl - x + tw / 2;\n\n\t\t\tconst yt = tt - offset - ch;\n\t\t\tconst yb = tb + offset + ch;\n\t\t\tif (position === \"top\") {\n\t\t\t\tconst T = yt < 0 && yb <= h;\n\t\t\t\ty = T ? tb + offset : yt;\n\t\t\t\tarrowY = T ? 0 : ch;\n\t\t\t\tarrowPos = T ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\tconst B = h > yb || yt < 0;\n\t\t\t\ty = B ? tb + offset : yt;\n\t\t\t\tarrowY = B ? 0 : ch;\n\t\t\t\tarrowPos = B ? \"top\" : \"bottom\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn [\n\t\tx,\n\t\ty,\n\t\t{\n\t\t\tarrowX,\n\t\t\tarrowY,\n\t\t\tarrowPos,\n\t\t},\n\t];\n}\n\nexport function getPointPosition(e: MouseEvent, content: HTMLElement) {\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst parent = content.offsetParent;\n\tlet pw,\n\t\tph,\n\t\tpl = 0,\n\t\tpt = 0;\n\n\tif (parent) {\n\t\tconst {\n\t\t\twidth: ow,\n\t\t\theight: oh,\n\t\t\tleft: ol,\n\t\t\ttop: ot,\n\t\t} = parent.getBoundingClientRect();\n\t\tpw = ow;\n\t\tph = oh;\n\t\tpt = ot;\n\t\tpl = ol;\n\t} else {\n\t\tpw = window.innerWidth;\n\t\tph = window.innerHeight;\n\t}\n\tconst x = e.pageX - pl;\n\tconst y = e.pageY - pt;\n\n\tconst left = x + w >= pw ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= ph ? (y - h > 0 ? y - h : y) : y;\n\n\treturn [left, top];\n}\n\nfunction computePosition({\n\tcontainerSize,\n\ttargetSize,\n\ttargetOffset,\n\tcontentSize,\n\tgap,\n\talign = \"center\",\n}: TComputePosition) {\n\tconst centerPoint = targetOffset + targetSize / 2;\n\n\tswitch (align) {\n\t\tcase \"start\":\n\t\t\treturn targetOffset + contentSize > containerSize\n\t\t\t\t? containerSize - contentSize - gap\n\t\t\t\t: targetOffset;\n\t\tcase \"center\":\n\t\t\tif (targetSize >= contentSize) {\n\t\t\t\treturn centerPoint - contentSize / 2;\n\t\t\t}\n\n\t\t\tif (centerPoint + contentSize / 2 + gap > containerSize) {\n\t\t\t\treturn targetOffset + targetSize - contentSize;\n\t\t\t}\n\n\t\t\tif (centerPoint - contentSize / 2 - gap < 0) {\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\treturn centerPoint - contentSize / 2;\n\t\tcase \"end\":\n\t\t\tconst result = targetOffset + targetSize - contentSize;\n\t\t\treturn result > 0 ? result : gap;\n\t\tdefault:\n\t\t\treturn centerPoint - contentSize / 2;\n\t}\n}\n\nexport function formatOption(options: TOptions): TOption[] {\n\treturn options.map((option) =>\n\t\t[\"string\", \"number\"].includes(typeof option)\n\t\t\t? { label: option, value: option }\n\t\t\t: option\n\t) as TOption[];\n}\n\nexport function animate(\n\tfrom: number,\n\tto: number,\n\tduration: number = 1000,\n\tcallback?: (v: number) => void,\n\teasing: (t: number) => number = (t) => 1 - Math.pow(1 - t, 4)\n) {\n\tconst start = performance.now();\n\tconst diff = to - from;\n\tlet raf = requestAnimationFrame(loop);\n\n\tfunction loop() {\n\t\traf = requestAnimationFrame(loop);\n\n\t\tconst past = performance.now() - start;\n\t\tlet percent = past / duration;\n\n\t\tif (percent >= 1) {\n\t\t\tpercent = 1;\n\t\t\tcancelAnimationFrame(raf);\n\t\t}\n\n\t\tconst pass = diff * easing(percent);\n\t\tcallback?.(pass);\n\t}\n}\n\nexport function formatNumber(\n\tvalue: number,\n\toptions: {\n\t\tprecision?: number;\n\t\tthousand?: string;\n\t} = {}\n) {\n\tconst { precision, thousand } = options;\n\n\tconst result = value.toFixed(precision);\n\n\tif (!thousand) return result;\n\n\tconst points = result.split(\".\");\n\tconst integer = points[0].replace(\n\t\t/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g,\n\t\t`$&${thousand}`\n\t);\n\n\tif (points.length === 1) return integer;\n\n\treturn `${integer}.${points[1]}`;\n}\n\nexport function renderNode(node: ReactNode, container = document.body) {\n\tconst div: HTMLDivElement | null = document.createElement(\"div\");\n\tcontainer.append(div);\n\n\tconst root: Root | null = createRoot(div);\n\tconst sto = setTimeout(() => {\n\t\troot?.render(node);\n\t}, 0);\n\n\treturn () => {\n\t\tdiv?.remove();\n\t\troot?.unmount();\n\t\tsto && clearTimeout(sto);\n\t};\n}\n\nexport function getSuffixByUrl(url: string) {\n\treturn url.match(/\\.([^\\./\\?]+)($|\\?)/)?.[1];\n}\n\nexport function getFileType(suffix: string, type?: string): TFileType {\n\tswitch (true) {\n\t\tcase [\"jpg\", \"jpeg\", \"png\", \"webp\", \"svg\"].includes(suffix) ||\n\t\t\ttype?.startsWith(\"image/\"):\n\t\t\treturn TFileType[\"IMAGE\"];\n\t\tcase [\"mp4\", \"avi\"].includes(suffix) || type?.startsWith(\"video/\"):\n\t\t\treturn TFileType[\"VIDEO\"];\n\t\tdefault:\n\t\t\treturn TFileType[\"UNKNOWN\"];\n\t}\n}\n\nexport function fullScreen(el: HTMLElement) {\n\tel.requestFullscreen?.();\n}\n\nexport function exitFullScreen() {\n\tdocument.exitFullscreen?.();\n}\n\nexport function formatTime(\n\ttime: number,\n\toptions?: {\n\t\tzero?: boolean;\n\t\tunits?: string[];\n\t}\n) {\n\tconst result: string[] = [];\n\tconst { zero = true, units = [\"\", \":\", \":\"] } = options || {};\n\n\tconst l = units.length;\n\tlet i = 0;\n\n\twhile (i < l) {\n\t\tif (time <= 0 && i > 1) break;\n\n\t\tconst n = Math.round(time % 60);\n\n\t\ttime = Math.floor(time / 60);\n\n\t\tresult.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);\n\t}\n\n\treturn result.join(\"\");\n}\n\nexport function getNextSorter(\n\tprevSortBy: string,\n\tprevSortType: string,\n\tsortBy: string\n): [sortBy: string, sortType: string] {\n\tconst types = [\"desc\", \"asc\"];\n\n\tif (prevSortBy === sortBy) {\n\t\tconst i = types.findIndex((t) => t === prevSortType) + 1;\n\t\tconst type = types[i] || \"\";\n\t\tconst by = type === \"\" ? \"\" : sortBy;\n\n\t\treturn [by, type];\n\t}\n\n\treturn [sortBy, \"desc\"];\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n\tif (!+bytes) return \"0 Bytes\";\n\n\tconst k = 1024;\n\tconst dm = decimals < 0 ? 0 : decimals;\n\tconst sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n\treturn value < min ? min : value > max ? max : value;\n}\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport { ICheckboxItem } from \"./type\";\n\nexport default function CheckboxItem(props: ICheckboxItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = false,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tdisabled,\n\t\tpartof,\n\t\tchildren,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst checked = e.target.checked;\n\n\t\tObject.assign(state, {\n\t\t\tvalue: checked,\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonChange?.(checked, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${state.status}`]: state.status !== \"normal\",\n\t\t\t\t\tdisabled,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype='checkbox'\n\t\t\t\tname={name}\n\t\t\t\tclassName={classNames(\"i-checkbox-input\", {\n\t\t\t\t\t[`i-checkbox-${type}`]: !partof,\n\t\t\t\t\t\"i-checkbox-partof\": partof,\n\t\t\t\t})}\n\t\t\t\tchecked={state.value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-checkbox-text'>{children || label}</span>\n\n\t\t\t{state.message && (\n\t\t\t\t<span className='i-checkbox-message'>*{state.message}</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{\n\t\tvalue: any;\n\t}>({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...state.value];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tstate.value = group;\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-checkbox-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CheckboxItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={state.value.includes(option.value)}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n","import { CloseRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { createElement } from \"react\";\nimport Icon from \"../../icon\";\nimport \"./index.css\";\nimport { IHelperIcon } from \"./type\";\n\nconst Helpericon = (props: IHelperIcon) => {\n\tconst {\n\t\tas = \"a\",\n\t\tactive,\n\t\tclassName,\n\t\ticon = <CloseRound />,\n\t\t...restProps\n\t} = props;\n\n\tif (!active) return <></>;\n\n\treturn createElement(\n\t\tas,\n\t\t{\n\t\t\tclassName: classNames(\"i-helpericon\", className),\n\t\t\t...restProps,\n\t\t},\n\t\t[\n\t\t\tcreateElement(Icon, {\n\t\t\t\tkey: uid(3),\n\t\t\t\ticon,\n\t\t\t}),\n\t\t]\n\t);\n};\n\nexport default Helpericon;\n","import { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { ICollapse, ICollapseItem, TKey } from \"./type\";\n\nconst Collapse = (props: ICollapse) => {\n\tconst {\n\t\tactive,\n\t\titems,\n\t\tmultiple,\n\t\tborder,\n\t\theaderClickable,\n\t\tclassName,\n\t\tchildren,\n\t\trenderToggle = (active: boolean) =>\n\t\t\tactive ? <MinusRound /> : <PlusRound />,\n\t\tonCollapse,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t});\n\n\tconst collapses = useMemo(() => {\n\t\tif (!items) {\n\t\t\tif (!children) return [];\n\n\t\t\treturn (\n\t\t\t\tChildren.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: TKey;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst { title, children, content, disabled, ...restProps } =\n\t\t\t\t\t\tnodeProps;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...restProps,\n\t\t\t\t\t\tkey: key || i,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tcontent: children || content,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t};\n\t\t\t\t}) || []\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t}, [children]);\n\n\tconst handleHeaderClick = (item: ICollapseItem) => {\n\t\tif (!headerClickable) return;\n\n\t\thandleToggle(item);\n\t};\n\n\tconst handleToggle = (item: ICollapseItem, e?) => {\n\t\tconst { key, disabled } = item;\n\t\te?.stopPropagation();\n\t\tif (disabled) return;\n\n\t\tif (!multiple) {\n\t\t\tstate.active = state.active === key ? undefined : key;\n\t\t\tonCollapse?.(key as TKey, state.active !== undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Array.isArray(state.active)) state.active = [];\n\n\t\tconst i = state.active.findIndex((k) => k === key);\n\n\t\tif (i > -1) {\n\t\t\tstate.active.splice(i, 1);\n\t\t} else {\n\t\t\tkey !== undefined && state.active.push(key);\n\t\t}\n\t\tonCollapse?.(key as TKey, i < 0);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-collapse\",\n\t\t\t\t{\n\t\t\t\t\t\"i-collapse-bordered\": border,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{collapses.map((item) => {\n\t\t\t\tconst {\n\t\t\t\t\tkey,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps\n\t\t\t\t} = item;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? ((state.active as TKey[]) || []).includes(key)\n\t\t\t\t\t: state.active === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tclassName={classNames(\"i-collapse-item\", className, {\n\t\t\t\t\t\t\t\"i-collapse-active\": isActive,\n\t\t\t\t\t\t\t\"i-collapse-disabled\": disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='i-collapse-header'\n\t\t\t\t\t\t\tonClick={() => handleHeaderClick(item)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\tclassName='i-collapse-toggle'\n\t\t\t\t\t\t\t\ticon={renderToggle(isActive)}\n\t\t\t\t\t\t\t\tonClick={(e) => handleToggle(item, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className='i-collapse-content'>{content}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCollapse.Item = Item;\n\nexport default Collapse;\n","import { InboxTwotone } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport default function Empty(props) {\n\tconst { className, ...restProps } = props;\n\n\treturn (\n\t\t<InboxTwotone\n\t\t\tclassName={classNames(\"i-empty\", className)}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\nimport { ICell, IColumn } from \"./type\";\n\nexport function getCellStyle({\n\tjustify,\n\tcol,\n\trow,\n\tcolSpan = 1,\n\trowSpan = 1,\n}: Pick<IColumn, \"justify\" | \"fixed\"> & {\n\tcol: number;\n\trow: number;\n\tcolSpan?: number;\n\trowSpan?: number;\n\tisHeader?: boolean;\n}) {\n\tconst style = {\n\t\t\"--datagrid-justify\": justify,\n\t\tgridArea: `${row + 1} / ${col + 1} / ${row + 1 + rowSpan} / ${\n\t\t\tcol + 1 + colSpan\n\t\t}`,\n\t\tinsetInline: `var(--datagrid-cell-inset-${col})`,\n\t};\n\n\treturn style;\n}\n\nexport function Cell(props: ICell) {\n\tconst {\n\t\tcolumn,\n\t\trow,\n\t\tcol,\n\t\tdata,\n\t\tcellEllipsis,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\tconst { id, fixed, justify, rowSpan, render } = column;\n\tconst style = getCellStyle({ justify, fixed, col, row, rowSpan });\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t[`i-datagrid-cell-fixed-${fixed}`]: fixed,\n\t\t\t})}\n\t\t\tdata-col={id}\n\t\t\tstyle={style}\n\t\t\tonClick={(e) => onCellClick?.(data, column, row, col, e)}\n\t\t\tonDoubleClick={(e) =>\n\t\t\t\tonCellDoubleClick?.(data, column, row, col, e)\n\t\t\t}\n\t\t>\n\t\t\t{render?.(data[id], data, col) ?? (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-datagrid-cell-content\", {\n\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\": cellEllipsis,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{data[id]}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { ICollapseItem } from \"./type\";\n\nexport default function Item(props: ICollapseItem) {\n\treturn <></>;\n}\n","import { useEffect } from \"react\";\n\ntype TMouseEvent = (e: MouseEvent) => void;\n\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst touchable = \"ontouchend\" in document;\nconst EVENTS: any = {\n\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\tUP: touchable ? \"touchend\" : \"mouseup\",\n};\n\ndocument.addEventListener(\n\tEVENTS.MOVE,\n\t(e: MouseEvent) => {\n\t\tfor (const listener of MouseMoveEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t},\n\t{ passive: false }\n);\n\ndocument.addEventListener(EVENTS.UP, (e) => {\n\tfor (const listener of MouseUpEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\nexport function useMouseMove(listener: TMouseEvent) {\n\tuseEffect(() => {\n\t\tMouseMoveEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseMoveEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useMouseUp(listener: TMouseEvent) {\n\tuseEffect(() => {\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\n\tconst WM = new WeakMap();\n\tconst IO = new IntersectionObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\n\t\t});\n\t}, configs);\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\tWM.set(target, callback);\n\t\ttarget && IO.observe(target);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n\nexport function useResizeObserver() {\n\tconst WM = new WeakMap();\n\tconst IO = new ResizeObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target);\n\t\t});\n\t});\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\ttarget && IO.observe(target);\n\t\tWM.set(target, callback);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\n\nexport default function Resize(props) {\n\tconst { index, onWidthChange } = props;\n\tconst state = useReactive({\n\t\tresizing: false,\n\t\tx: 0,\n\t\twidth: 0,\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst width = (tar.offsetParent as HTMLElement).offsetWidth;\n\n\t\tObject.assign(state, {\n\t\t\tx: e.pageX,\n\t\t\tresizing: true,\n\t\t\twidth,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tconst after = state.width + e.pageX - state.x;\n\t\tif (after <= 24) return;\n\n\t\tonWidthChange(index, after);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<i\n\t\t\tclassName='i-datagrid-resizor'\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Arrow = (props) => (\n\t<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n\t\t<g fill='none'>\n\t\t\t<path\n\t\t\t\td='M9 17.898c0 1.074 1.265 1.648 2.073.941l6.31-5.522a1.75 1.75 0 0 0 0-2.634l-6.31-5.522C10.265 4.454 9 5.028 9 6.102v11.796z'\n\t\t\t\tfill='currentColor'\n\t\t\t></path>\n\t\t</g>\n\t</svg>\n);\n\nexport default function Sorter(props) {\n\tconst { type } = props;\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-datagrid-sorter\", {\n\t\t\t\t[`i-datagrid-sorter-${type}`]: type,\n\t\t\t})}\n\t\t>\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t</a>\n\t);\n}\n","import classNames from \"classnames\";\nimport { Cell, getCellStyle } from \"./cell\";\nimport Resize from \"./resize\";\nimport Sorter from \"./sorter\";\nimport { IHeader, IRow } from \"./type\";\n\nexport default function Row(props: IRow) {\n\tconst {\n\t\trow,\n\t\tdata,\n\t\tcolumns,\n\t\tcellEllipsis,\n\t\tonRowClick,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-row' onClick={() => onRowClick?.(data, row)}>\n\t\t\t{columns.map((col, i) => (\n\t\t\t\t<Cell\n\t\t\t\t\tkey={i}\n\t\t\t\t\tcolumn={col}\n\t\t\t\t\tcol={i}\n\t\t\t\t\trow={row}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function Header(props: IHeader) {\n\tconst {\n\t\tcolumns,\n\t\tresizable,\n\t\tcellEllipsis,\n\t\tsortBy,\n\t\tsortType,\n\t\tonWidthChange,\n\t\tonHeaderClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-header i-datagrid-row'>\n\t\t\t{columns.map((column, col) => {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\ttitle,\n\t\t\t\t\tfixed,\n\t\t\t\t\tcolSpan,\n\t\t\t\t\tsorter,\n\t\t\t\t\tjustify,\n\t\t\t\t\trenderHeader,\n\t\t\t\t} = column;\n\t\t\t\tconst style = getCellStyle({\n\t\t\t\t\tjustify,\n\t\t\t\t\trow: 0,\n\t\t\t\t\tcol,\n\t\t\t\t\tcolSpan,\n\t\t\t\t});\n\n\t\t\t\tconst order = sortBy === id ? sortType : \"\";\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\tdata-col={id}\n\t\t\t\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t\t\t\t\"i-datagrid-has-sorter\": sorter,\n\t\t\t\t\t\t\t\"i-datagrid-cell-fixed\": fixed,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{ ...style, insetBlockStart: 0 }}\n\t\t\t\t\t\tonClick={(e) => onHeaderClick?.(column, e)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderHeader?.(column, col) ?? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content\",\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\":\n\t\t\t\t\t\t\t\t\t\t\tcellEllipsis,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title || id}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{sorter && <Sorter type={order} />}\n\n\t\t\t\t\t\t{resizable && (\n\t\t\t\t\t\t\t<Resize index={col} onWidthChange={onWidthChange} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","import { getNextSorter } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport ScrollContainer, { Scrollbars } from \"react-custom-scrollbars-2\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => <Loading size='1.5em' className='color-3' />,\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst scrollbar = useRef<Scrollbars>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && scrollbar.current?.scrollTop(0);\n\t}, [loading]);\n\n\tconst scrollBarStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<ScrollContainer\n\t\t\tref={scrollbar}\n\t\t\tautoHide\n\t\t\tautoHeight\n\t\t\tautoHeightMax={height}\n\t\t\tstyle={scrollBarStyle}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t\trenderView={(props) => (\n\t\t\t\t<div\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={classNames({ \"i-datagrid-loading\": loading })}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tonScroll={onScroll}\n\t\t>\n\t\t\t<div ref={container} className='i-datagrid'>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</ScrollContainer>\n\t);\n};\n\nexport default Datagrid;\n","import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t\tinit: false,\n\t});\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tstate.active = true;\n\t\t\ttoggable.current = true;\n\t\t\tstate.init = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tstate.active = false;\n\t\tsetTimeout(() => {\n\t\t\tif (!keepDOM) {\n\t\t\t\tstate.show = false;\n\t\t\t}\n\t\t\tonVisibleChange?.(false);\n\t\t\ttoggable.current = true;\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\treturn createPortal(\n\t\tstate.show && (\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\t\"i-active\": state.active,\n\t\t\t\t})}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</header>\n\n\t\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t\t<div className='i-drawer-footer'>{footer}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n","import classNames from \"classnames\";\nimport { IListItem } from \"./type\";\n\nconst Item = (props: IListItem) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttype,\n\t\talign,\n\t\tdisabled,\n\t\tlabel,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<li\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-list-item\", className, {\n\t\t\t\t\"i-list-item-active\": active,\n\t\t\t\t\"i-list-option\": type === \"option\",\n\t\t\t\tdisabled,\n\t\t\t})}\n\t\t\tstyle={{ alignItems: align, ...style }}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label !== undefined && (\n\t\t\t\t<span className='i-list-item-label'>{label}</span>\n\t\t\t)}\n\t\t\t{children}\n\t\t</li>\n\t);\n};\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, cloneElement, Fragment } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\nimport Virtual from \"./virtual\";\n\nconst List = (props: IList) => {\n\tconst { label, type, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\tif (node.type === Fragment) return node;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t...node.props,\n\t\t\t\t\ttype,\n\t\t\t\t});\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Virtual = Virtual;\nList.Item = Item;\n\nexport default List;\n","import VList from \"rc-virtual-list\";\nimport { IVirtual } from \"./type\";\n\nconst Virtual = (props: IVirtual) => {\n\tconst { data, itemKey, renderItem, ...restProps } = props;\n\n\treturn (\n\t\t<VList data={data} itemKey={itemKey} {...restProps}>\n\t\t\t{(item, i) => {\n\t\t\t\treturn renderItem?.(item, i);\n\t\t\t}}\n\t\t</VList>\n\t);\n};\n\nexport default Virtual;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IPopupContent } from \"./type\";\n\nconst Content = (props: IPopupContent) => {\n\tconst {\n\t\tref,\n\t\tgetContainer = (trigger) => trigger?.offsetParent ?? document.body,\n\t\ttrigger,\n\t\tarrow,\n\t\tarrowProps = {},\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\tconst arrowCSS = useMemo(() => {\n\t\tlet { left, top, pos } = arrowProps;\n\t\tlet transform = \"\";\n\n\t\tswitch (pos) {\n\t\t\tcase \"left\":\n\t\t\t\tleft += 2;\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\t\tleft -= 2;\n\t\t\t\ttransform = `translate(0, -50%)`;\n\t\t\t\tbreak;\n\t\t\tcase \"top\":\n\t\t\t\ttop -= 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\ttop += 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\ttransform,\n\t\t};\n\t}, [arrowProps]);\n\n\tconst content = (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-popup\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{arrow && (\n\t\t\t\t<svg\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-popup-arrow'\n\t\t\t\t\tstyle={arrowCSS}\n\t\t\t\t>\n\t\t\t\t\t<path d='M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' />\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{children}\n\t\t</div>\n\t);\n\n\treturn createPortal(content, getContainer(trigger));\n};\n\nexport default Content;\n","import { 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\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 { className, ...restProps } = child.props as any;\n\t\t\t\tObject.keys(eventMaps[trigger]).map((evt) => {\n\t\t\t\t\tif (!restProps[evt]) return;\n\t\t\t\t\tconst fn = eventMaps[trigger][evt];\n\n\t\t\t\t\teventMaps[trigger][evt] = (e) => {\n\t\t\t\t\t\tfn();\n\t\t\t\t\t\trestProps[evt](e);\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\tref: triggerRef,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps,\n\t\t\t\t\t...eventMaps[trigger],\n\t\t\t\t});\n\t\t\t})}\n\n\t\t\t{state.show && (\n\t\t\t\t<Content\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\n\t\t\t\t\tstyle={{ ...style, ...state.style }}\n\t\t\t\t\tarrowProps={state.arrowProps}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\t{...contentTouch}\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\n\t\t\t\t\tgetContainer={getContainer}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Content>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import List from \"../list\";\nimport Popup from \"../popup\";\nimport { IDropItem } from \"./type\";\n\nconst { Item: ListItem } = List;\n\nconst Item = (props: IDropItem) => {\n\tconst { more, moreProps, ...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) => {\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) => {\n\tconst {\n\t\tas: Component = \"div\",\n\t\talign,\n\t\tjustify,\n\t\tdirection,\n\t\twrap,\n\t\tgap,\n\t\tcolumns,\n\t\tclassName,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\") return `repeat(${columns}, 1fr)`;\n\n\t\treturn columns;\n\t}, [columns]);\n\n\treturn (\n\t\t<Component\n\t\t\t{...restProps}\n\t\t\tstyle={{\n\t\t\t\talignItems: align,\n\t\t\t\tjustifyContent: justify,\n\t\t\t\tgap,\n\t\t\t\tflexDirection: direction,\n\t\t\t\tflexWrap: wrap === true ? \"wrap\" : wrap,\n\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t[columns ? \"grid\" : \"flex\"]: true,\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport default Flex;\n","import { createContext } from \"react\";\nimport { IFormInstance } from \"./useForm\";\n\nconst Context = createContext({} as IFormInstance);\n\nexport default Context;\n","import PubSub from \"pubsub-js\";\nimport { uid } from \"radash\";\nimport { useRef } from \"react\";\nimport { IForm, TRule } from \"./type\";\n\nexport class IFormInstance {\n\treadonly id?: string;\n\tdata: Record<string, any> = {};\n\tcacheData: Record<string, any> = {};\n\trules?: Pick<IForm, \"rules\"> = {};\n\n\tconstructor() {\n\t\tthis.id = uid(8);\n\t\tthis.data = {};\n\t}\n\n\tget(field?: string) {\n\t\treturn field ? this.data[field] : this.data;\n\t}\n\n\tset(field: any, value?: any) {\n\t\tconst id = this.id;\n\t\tif (!this.data) return;\n\n\t\tif (typeof field === \"string\") {\n\t\t\tthis.data[field] = value;\n\t\t\tthis.cacheData[field] = value;\n\t\t\tPubSub.publish(`${id}:set:${field}`, value);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(field).map((name) => {\n\t\t\tthis.data[name] = field[name];\n\t\t\tthis.cacheData[name] = field[name];\n\t\t\tPubSub.publish(`${id}:set:${name}`, field[name]);\n\t\t});\n\t}\n\n\tdelete(field) {\n\t\tdelete this.data[field];\n\t}\n\n\tclear() {\n\t\tif (!this.data) return;\n\t\tthis.cacheData = {};\n\n\t\tObject.keys(this.data).map((name) => {\n\t\t\tPubSub.publish(`${this.id}:set:${name}`, undefined);\n\t\t\tthis.data[name] = undefined;\n\t\t});\n\t}\n\n\tasync validate(field?: string) {\n\t\tconst { id, rules, data } = this;\n\t\tif (!rules) return data;\n\n\t\tif (field) {\n\t\t\tconst o = rules[field];\n\t\t\tconst rule: TRule = {\n\t\t\t\tvalidator: (v) =>\n\t\t\t\t\tArray.isArray(v)\n\t\t\t\t\t\t? v.length > 0\n\t\t\t\t\t\t: ![undefined, null, \"\"].includes(v),\n\t\t\t\tmessage: undefined,\n\t\t\t};\n\n\t\t\tif (typeof o === \"function\") {\n\t\t\t\trule.validator = o;\n\t\t\t} else if (o === true) {\n\t\t\t\trule.message = \"required\";\n\t\t\t} else {\n\t\t\t\tObject.assign(rule, o);\n\t\t\t}\n\n\t\t\tconst isValid = rule.validator?.(data[field], this);\n\n\t\t\tif (!isValid) {\n\t\t\t\tPubSub.publish(`${id}:invalid:${field}`, {\n\t\t\t\t\tmessage: rule.message,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\tmessage: null,\n\t\t\t\tstatus: \"normal\",\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tlet isAllValid = true;\n\n\t\tObject.keys(data).map((name) => {\n\t\t\tconst o = rules[name];\n\t\t\tif (o === undefined) return;\n\n\t\t\tconst rule: TRule = {\n\t\t\t\tvalidator: (v) => (Array.isArray(v) ? v.length > 0 : !!v),\n\t\t\t\tmessage: undefined,\n\t\t\t};\n\n\t\t\tif (typeof o === \"function\") {\n\t\t\t\trule.validator = o;\n\t\t\t} else if (o === true) {\n\t\t\t\trule.message = \"required\";\n\t\t\t} else {\n\t\t\t\tObject.assign(rule, o);\n\t\t\t}\n\n\t\t\tconst isValid = rule.validator?.(data[name], this);\n\n\t\t\tif (!isValid) {\n\t\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\t\tmessage: rule.message,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t});\n\t\t\t\tisAllValid = false;\n\t\t\t} else {\n\t\t\t\tPubSub.publish(`${id}:invalid:${name}`, {\n\t\t\t\t\tmessage: null,\n\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn isAllValid ? Promise.resolve(data) : false;\n\t}\n}\n\nexport default function useForm(form?: IFormInstance) {\n\tconst formRef = useRef<IFormInstance>(null);\n\n\tif (!formRef.current) {\n\t\tformRef.current = form ?? new IFormInstance();\n\t}\n\n\treturn formRef.current;\n}\n","import classNames from \"classnames\";\nimport { useEffect } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tgap = \"1em\",\n\t\tchildren,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst handleEnter = (e) => {\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(form.data, form);\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\treturn (\n\t\t<Context.Provider value={form}>\n\t\t\t<form\n\t\t\t\tstyle={{ ...style, width, gap }}\n\t\t\t\tclassName={classNames(\"i-form\", className)}\n\t\t\t\tonKeyDown={handleEnter}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context.Provider>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n","import classNames from \"classnames\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Button from \"../button\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { CompositionModal, IModal, IModalContent } from \"./type\";\n\nfunction DefaultContent(props: IModalContent) {\n\tconst {\n\t\ttitle,\n\t\tfooter,\n\t\thideCloseButton,\n\t\tfooterLeft,\n\t\tokButtonProps = {\n\t\t\tchildren: \"确定\",\n\t\t\tonClick: props.onOk,\n\t\t},\n\t\tcancelButtonProps = {\n\t\t\tsecondary: true,\n\t\t\tchildren: \"关闭\",\n\t\t\tonClick: props.onClose,\n\t\t},\n\t\tchildren,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign({}, okButtonProps);\n\t\tconst propsCancel = Object.assign({}, cancelButtonProps);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{footerLeft}\n\t\t\t\t<Button {...propsOk} />\n\t\t\t\t<Button {...propsCancel} />\n\t\t\t</>\n\t\t);\n\t}, [footer, okButtonProps, cancelButtonProps]);\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t<header className='i-modal-header'>\n\t\t\t\t\t{title && <b>{title}</b>}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\tclassName='i-modal-close'\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<div className='i-modal-content'>{children}</div>\n\n\t\t\t<footer className='i-modal-footer'>{renderFooter}</footer>\n\t\t</>\n\t);\n}\n\nfunction Modal(props: IModal) {\n\tconst {\n\t\tvisible,\n\t\ttitle,\n\t\tfooter,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tclosable = true,\n\t\thideBackdrop,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\tshadow = true,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tfooterLeft,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\tonOk,\n\t\t...restProps\n\t} = props;\n\tconst [show, setShow] = useState(visible);\n\tconst [active, setActive] = useState(false);\n\tconst [bounced, setBounced] = useState(false);\n\tconst toggable = useRef(true);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tsetShow(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tsetActive(true);\n\t\t\tonVisibleChange?.(true);\n\t\t\ttoggable.current = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tif (!closable) {\n\t\t\tsetBounced(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetBounced(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t}, 400);\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tsetTimeout(() => {\n\t\t\tsetShow(false);\n\t\t\ttoggable.current = true;\n\t\t\tonVisibleChange?.(false);\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tif (!show) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-modal-container\",\n\t\t\t\t{\n\t\t\t\t\t\"i-modal-backdrop\": !hideBackdrop,\n\t\t\t\t\t\"i-modal-customized\": customized,\n\t\t\t\t\t\"i-modal-active\": active,\n\t\t\t\t\tfixed,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\tonClick={handleBackdropClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-modal\", {\n\t\t\t\t\tbounced,\n\t\t\t\t\tshadow,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{customized && children}\n\n\t\t\t\t{!customized && (\n\t\t\t\t\t<DefaultContent\n\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\thideCloseButton={hideCloseButton}\n\t\t\t\t\t\tfooter={footer}\n\t\t\t\t\t\tokButtonProps={okButtonProps}\n\t\t\t\t\t\tcancelButtonProps={cancelButtonProps}\n\t\t\t\t\t\tchildren={children}\n\t\t\t\t\t\tfooterLeft={footerLeft}\n\t\t\t\t\t\tonOk={onOk}\n\t\t\t\t\t\tonClose={handleHide}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body\n\t);\n}\n\nexport default Modal as CompositionModal;\n","import { useReactive } from \"ahooks\";\nimport PubSub from \"pubsub-js\";\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from \"react\";\nimport Context from \"./context\";\nimport { IField } from \"./type\";\n\nfunction Field(props: IField) {\n\tconst { name, required, children } = props;\n\tconst state = useReactive({\n\t\tvalue: undefined,\n\t\tstatus: \"normal\",\n\t\tmessage: undefined,\n\t\tupdate: 0,\n\t});\n\tconst form = useContext(Context);\n\tconst { id } = form;\n\n\tconst handleChange = (v) => {\n\t\tif (!name) return;\n\n\t\tform.set(name, v);\n\t};\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node) => {\n\t\t\tif (!isValidElement(node)) return null;\n\n\t\t\tconst { onChange } = node.props as any;\n\t\t\tconst { value, status, message } = state;\n\n\t\t\treturn cloneElement(node, {\n\t\t\t\tvalue,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t\trequired,\n\t\t\t\tonChange: (...args) => {\n\t\t\t\t\thandleChange(args[0]);\n\t\t\t\t\tonChange?.(...args);\n\t\t\t\t\tObject.assign(state, {\n\t\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t\t\tmessage: undefined,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t} as any);\n\t\t});\n\t}, [children, state.update]);\n\n\tuseEffect(() => {\n\t\tif (!name) return;\n\n\t\tPubSub.subscribe(`${id}:set:${name}`, (evt, v) => {\n\t\t\tstate.value = v;\n\t\t\tstate.update += 1;\n\t\t});\n\t\tPubSub.subscribe(`${id}:invalid:${name}`, (evt, v) => {\n\t\t\tObject.assign(state, v);\n\t\t\tstate.update += 1;\n\t\t});\n\n\t\tPromise.resolve().then(() => {\n\t\t\tform.set(name, form.cacheData[name] ?? undefined);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${id}:set:${name}`);\n\t\t\tPubSub.unsubscribe(`${id}:invalid:${name}`);\n\t\t\tform.delete(name);\n\t\t};\n\t}, [name, children]);\n\n\tif (!name) return children;\n\n\treturn hijackChildren;\n}\n\nexport default Field;\n","import { useReactive } from \"ahooks\";\nimport { RefObject, useImperativeHandle } from \"react\";\nimport Modal from \"./modal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nconst HookModal = (\n\tprops: IModal & { ref?: RefObject<RefHookModal | null> }\n) => {\n\tconst { ref } = props;\n\tconst state = useReactive<IModal>({});\n\n\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\twave,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\tconst gradients = useMemo(() => {\n\t\tif (!gradient || !Array.isArray(gradient)) return {};\n\n\t\treturn {\n\t\t\tbackgroundImage: `-webkit-linear-gradient(${gradient.join(\",\")})`,\n\t\t\tbackgroundClip: \"text\",\n\t\t};\n\t}, [gradient]);\n\n\treturn (\n\t\t<Tag\n\t\t\tstyle={{\n\t\t\t\tfontSize: size,\n\t\t\t\tfontWeight: weight,\n\t\t\t\ttextDecoration: decoration,\n\t\t\t\t...gradients,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t\"i-text-gradient\": gradient,\n\t\t\t\t\"i-text-gradient-wave\": wave,\n\t\t\t})}\n\t\t>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport default Text as CompositionText;\n","import Text from \"../text\";\nimport { IProgress } from \"./type\";\n\nexport default function Circle(\n\tprops: Pick<IProgress, \"value\" | \"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 HighLight from \"./highlight\";\nimport Number from \"./number\";\nimport Text from \"./text\";\nimport Time from \"./time\";\n\nText.Number = Number;\nText.Time = Time;\nText.HighLight = HighLight;\n\nexport default Text;\n","import { animate, formatNumber } from \"@p/js/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Text from \"./text\";\nimport { ITextNumber } from \"./type\";\n\nexport default function Number(props: ITextNumber) {\n\tconst {\n\t\tcount,\n\t\tto,\n\t\tdecimal,\n\t\tthousand = \",\",\n\t\tduration = 2400,\n\t\teasing,\n\t\t...restProps\n\t} = props;\n\tconst [n, setN] = useState(count);\n\n\tconst number = useMemo(() => {\n\t\tif (n === undefined) return;\n\n\t\tconst z = n.toFixed(decimal);\n\n\t\tif (!thousand) return z;\n\n\t\treturn formatNumber(n, { precision: decimal, thousand });\n\t}, [n, thousand]);\n\n\tuseEffect(() => {\n\t\tif (count === undefined || to === undefined) return;\n\n\t\tanimate(count, to, duration, (v) => setN(count + v), easing);\n\t}, [to]);\n\n\tuseEffect(() => setN(count), [count]);\n\n\treturn <Text {...restProps}>{number}</Text>;\n}\n","import { formatTime } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextTime } from \"./type\";\n\nexport default function Number(props: ITextTime) {\n\tconst { seconds, zero, units, ...restProps } = props;\n\n\tconst text = useMemo(() => {\n\t\tif (seconds === undefined) return \"\";\n\n\t\treturn formatTime(seconds, {\n\t\t\tzero,\n\t\t\tunits,\n\t\t});\n\t}, [seconds]);\n\n\treturn <Text {...restProps}>{text}</Text>;\n}\n","import { findAll } from \"highlight-words-core\";\nimport { Fragment, useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextHighLight } from \"./type\";\n\nexport default function HighLight(props: ITextHighLight) {\n\tconst {\n\t\tkeyword,\n\t\ttext,\n\t\tescape,\n\t\tcaseSensitive,\n\t\trenderWord = (word) => <mark>{word}</mark>,\n\t\t...restProps\n\t} = props;\n\n\tconst content = useMemo(() => {\n\t\tconst source = text;\n\t\tconst searchWords = typeof keyword === \"string\" ? [keyword] : keyword;\n\n\t\tconst chunks = findAll({\n\t\t\tsearchWords,\n\t\t\ttextToHighlight: text,\n\t\t\tcaseSensitive,\n\t\t\tautoEscape: escape,\n\t\t});\n\n\t\tconst result = chunks.map((chunk, i) => {\n\t\t\tconst { end, highlight, start } = chunk;\n\t\t\tconst word = source.slice(start, end);\n\n\t\t\treturn highlight ? (\n\t\t\t\t<Fragment key={i}>{renderWord(word)}</Fragment>\n\t\t\t) : (\n\t\t\t\tword\n\t\t\t);\n\t\t});\n\n\t\treturn result;\n\t}, [keyword, text, escape, caseSensitive]);\n\n\treturn <Text {...restProps}>{content}</Text>;\n}\n","import classNames from \"classnames\";\nimport { MouseEvent, RefObject } from \"react\";\nimport { IProgress } from \"./type\";\n\nconst Line = (\n\tprops: Pick<IProgress, \"value\" | \"size\" | \"barClass\" | \"renderCursor\"> & {\n\t\tref: RefObject<HTMLDivElement | null>;\n\t\tdragging: boolean;\n\t\tonMouseDown: (e: MouseEvent) => void;\n\t\tonTouchStart: (e) => void;\n\t}\n) => {\n\tconst {\n\t\tref,\n\t\tvalue,\n\t\tsize,\n\t\tbarClass,\n\t\tdragging,\n\t\trenderCursor,\n\t\tonMouseDown,\n\t\tonTouchStart,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName='i-progress'\n\t\t\tstyle={{ height: size }}\n\t\t\tonMouseDown={onMouseDown}\n\t\t\tonTouchStart={onTouchStart}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-progress-bar\", barClass, {\n\t\t\t\t\t\"no-transition\": dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{ width: `${value}%` }}\n\t\t\t>\n\t\t\t\t{renderCursor && (\n\t\t\t\t\t<a className='i-progress-cursor'>\n\t\t\t\t\t\t{renderCursor(value ?? 0)}\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Line;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tsize = 8,\n\t\theight = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\twidth: 0,\n\t\tstart: 0,\n\t});\n\n\tconst toFixedValue = useMemo(() => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t}, [state.value, precision]);\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e.pageX - rect.left) * 100) / rect.width;\n\n\t\tObject.assign(state, {\n\t\t\tvalue,\n\t\t\twidth: rect.width,\n\t\t\tstart: rect.left,\n\t\t\tdragging: true,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, width } = state;\n\t\tconst offset = e.pageX - start;\n\n\t\tif (offset < 0 || offset > width) return;\n\n\t\tstate.value = ((e.pageX - start) * 100) / width;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(toFixedValue);\n\t\tstate.dragging = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle value={state.value} height={height} size={size} />\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n","import { exitFullScreen, fullScreen } from \"@p/js/utils\";\nimport {\n\tFullscreenExitRound,\n\tFullscreenRound,\n\tPauseRound,\n\tPlayArrowRound,\n\tStopRound,\n\tVolumeDownRound,\n\tVolumeOffRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Progress from \"../progress\";\nimport Text from \"../text\";\nimport \"./index.css\";\nimport { IVideo } from \"./type\";\n\nconst Video = (props: IVideo) => {\n\tconst {\n\t\tref,\n\t\tstyle,\n\t\thideControls,\n\t\tautoplay,\n\t\tmuted,\n\t\tvolume = 50,\n\t\theight,\n\t\twidth,\n\t\tuseOriginControls,\n\t\ttimeProgressProps = {\n\t\t\tbarClass: \"bg-2\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-1\",\n\t\t},\n\t\tclassName,\n\t\tonFullScreenChange,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tplaying: autoplay,\n\t\tvolume: muted ? 0 : volume,\n\t\tvolumeCache: 0,\n\t\tmuted,\n\t\tcurrent: 0,\n\t\tduration: 0,\n\t\tisFullscreen: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst timeUpdateListener = (e) => {\n\t\tconst tar = e.target;\n\t\tif (tar.paused) return;\n\n\t\tObject.assign(state, {\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t};\n\n\tconst playChangeListener = (e) => {\n\t\tstate.playing = !e.target.paused;\n\t};\n\n\tconst fsChangeListener = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\n\t};\n\n\tconst volumeChangeListener = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tvolume: tar.volume * 100,\n\t\t\tmuted: tar.volume === 0,\n\t\t});\n\t};\n\n\tconst handlePlay = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.paused ? v.play() : v.pause();\n\t};\n\n\tconst handleReady = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tduration: tar.duration,\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t\ttar.volume = state.volume / 100;\n\t};\n\n\tconst handleMuted = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tif (v.volume > 0) {\n\t\t\tstate.volumeCache = v.volume;\n\t\t\tv.volume = 0;\n\t\t\treturn;\n\t\t}\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\n\t};\n\n\tconst handleStop = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = 0;\n\t\tv.pause();\n\t};\n\n\tconst handleFullscreen = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\n\t\tonFullScreenChange?.(!state.isFullscreen);\n\t};\n\n\tconst handleUpdateTime = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = (state.duration * t) / 100;\n\t};\n\n\tconst handleUpdateVolume = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tconst showControls = !hideControls && !useOriginControls;\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!showControls) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst handleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.pause();\n\t\t},\n\t\tstop: handleStop,\n\t\tfullscreen: handleFullscreen,\n\t\tgetVideo: () => videoRef.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\n\t\tv.addEventListener(\"play\", playChangeListener);\n\t\tv.addEventListener(\"pause\", playChangeListener);\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\n\n\t\treturn () => {\n\t\t\tclearHiddenTO();\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-video\", className)}\n\t\t\tstyle={{ height, width, ...style }}\n\t\t\tonClick={handlePlay}\n\t\t\tonDoubleClick={() => handleFullscreen()}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tonCanPlay={handleReady}\n\t\t\t\t{...restProps}\n\t\t\t\tcontrols={useOriginControls}\n\t\t\t/>\n\n\t\t\t{showControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<div className='i-video-control flex-1'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tonClick={handleStop}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tclassName='mr-8'\n\t\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\t\tvalue={(state.current / state.duration) * 100}\n\t\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='i-video-control'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='i-video-control'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tactive={state.volume <= 0}\n\t\t\t\t\t\t\tafter={\n\t\t\t\t\t\t\t\t<Icon icon={<VolumeOffRound />} size='1.2em' />\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={handleMuted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tstyle={{ width: 100 }}\n\t\t\t\t\t\t\tclassName='mr-8'\n\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Video;\n","import Icon from \"@p/components/icon\";\nimport Video from \"@p/components/video\";\nimport { FeedOutlined } from \"@ricons/material\";\nimport { TFileType, TPreviewItem } from \"./type\";\n\nexport default function renderFile(props: TPreviewItem) {\n\tconst { name, suffix, type } = props;\n\n\tswitch (type) {\n\t\tcase TFileType.IMAGE:\n\t\t\treturn <img src={props.src} />;\n\t\tcase TFileType.VIDEO:\n\t\t\treturn <Video {...props} />;\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div className='i-preview-unknown'>\n\t\t\t\t\t<Icon icon={<FeedOutlined />} size='3em' />\n\t\t\t\t\t<h5 className='mt-4'>{name || suffix || \"?\"}</h5>\n\t\t\t\t</div>\n\t\t\t);\n\t}\n}\n","import Button from \"@p/components/button\";\nimport Icon from \"@p/components/icon\";\nimport {\n\tAspectRatioRound,\n\tCloseRound,\n\tFileDownloadOutlined,\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tOpenInNewRound,\n\tRotateLeftRound,\n\tRotateRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useMemo, useRef } from \"react\";\nimport { useMouseMove, useMouseUp } from \"../hooks\";\nimport { getFileType, getSuffixByUrl } from \"../utils\";\nimport DefaultRenderFile from \"./renderFile\";\nimport { IPreview, TFileType, TPreviewItem } from \"./type\";\n\nexport default function Content(props: IPreview) {\n\tconst {\n\t\titems = [],\n\t\tinitial = 0,\n\t\trenderFile = DefaultRenderFile,\n\t\tonRotate,\n\t\tonChange,\n\t\tonClose,\n\t\tonZoom,\n\t} = props;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\trotate: 0,\n\t\tscale: 1,\n\t\ttranslate: [0, 0],\n\t\tstart: [0, 0],\n\t\tdragging: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t\tstate.translate = translate.current = [0, 0];\n\t};\n\n\tconst handleRotate = (deg: number) => {\n\t\tstate.rotate += deg;\n\n\t\tonRotate?.(state.rotate);\n\t};\n\n\tconst handleMouseWheel = throttle({ interval: 60 }, (e) => {\n\t\tif (!isImage) return;\n\t\tlet after = state.scale + (e.deltaY < 0 ? 0.05 : -0.05);\n\t\tif (after > 2) after = 2;\n\t\tif (after < 0.25) after = 0.25;\n\n\t\tonZoom?.(after);\n\t\tstate.scale = after;\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!isImage) return;\n\t\te.preventDefault();\n\t\tstate.dragging = true;\n\t\tstate.start = [e.pageX, e.pageY];\n\t};\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst throttleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tconst handleMouseMove = (e) => {\n\t\tthrottleMouseMove();\n\t\tif (!state.dragging) return;\n\t\te.preventDefault();\n\n\t\tconst [x, y] = translate.current;\n\t\tconst [ox, oy] = state.start;\n\t\tconst offsetX = e.pageX - ox;\n\t\tconst offsetY = e.pageY - oy;\n\n\t\tstate.translate = [x + offsetX, y + offsetY];\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging) return;\n\t\tstate.dragging = false;\n\t\ttranslate.current = state.translate;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName={classNames(\"i-preview-content\", {\n\t\t\t\t\t\"no-transition\": state.dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate(${state.translate\n\t\t\t\t\t\t.map((n) => `${n}px`)\n\t\t\t\t\t\t.join(\",\")}) rotate(${state.rotate}deg) scale(${\n\t\t\t\t\t\tstate.scale\n\t\t\t\t\t})`,\n\t\t\t\t}}\n\t\t\t\tonWheel={handleMouseWheel}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-preview-controls\", {\n\t\t\t\t\t\"i-preview-controls-hidden\": state.controlHidden,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Button square flat onClick={onClose}>\n\t\t\t\t\t<Icon icon={<CloseRound />} />\n\t\t\t\t</Button>\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<span className='px-8'>\n\t\t\t\t\t\t{state.current + 1} / {files.length}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{state.scale !== 1 && (\n\t\t\t\t\t<Button flat onClick={() => (state.scale = 1)}>\n\t\t\t\t\t\t<Icon icon={<AspectRatioRound />} />\n\t\t\t\t\t\t<span className='mt-2'>\n\t\t\t\t\t\t\t{(state.scale * 100).toFixed(0)}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button square flat href={file.src} target='_blank'>\n\t\t\t\t\t<Icon icon={<OpenInNewRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat href={file.src} download target='_blank'>\n\t\t\t\t\t<Icon icon={<FileDownloadOutlined />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(90)}>\n\t\t\t\t\t<Icon icon={<RotateRightRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(-90)}>\n\t\t\t\t\t<Icon icon={<RotateLeftRound />} />\n\t\t\t\t</Button>\n\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current - 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current + 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","import HookModal from \"@p/components/modal/hookModal\";\nimport { RefHookModal } from \"@p/components/modal/type\";\nimport { useRef } from \"react\";\nimport { renderNode } from \"../utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPreview } from \"./type\";\n\nexport default function usePreview() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst preview = (config: IPreview) => {\n\t\tconst { items, modalProps, onClose, ...restProps } = config;\n\n\t\tconst handleClose = () => {\n\t\t\tonClose?.();\n\t\t\tunMount?.();\n\t\t};\n\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\tclassName='i-preview'\n\t\t\t\tcustomized\n\t\t\t\tshadow={false}\n\t\t\t\t{...modalProps}\n\t\t\t\tchildren={\n\t\t\t\t\t<Content\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tonClose={() => {\n\t\t\t\t\t\t\tref.current?.update({ visible: false });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tfixed\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn preview;\n}\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TFileType } from \"@p/js/usePreview/type\";\nimport { HideImageTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport Icon from \"../icon\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionImage, IImage } from \"./type\";\n\nconst Image = (props: IImage) => {\n\tconst {\n\t\tsrc,\n\t\tround,\n\t\tsize,\n\t\tinitSize,\n\t\tlazyload,\n\t\tfallback = (\n\t\t\t<Icon icon={<HideImageTwotone />} size='2em' className='color-5' />\n\t\t),\n\t\tfit,\n\t\tstyle,\n\t\tclassName,\n\t\tcover,\n\t\tcoverClass,\n\t\tusePreview: previewable,\n\t\tonLoad,\n\t\tonError,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{ status?: string }>({\n\t\tstatus: \"loading\",\n\t});\n\tconst ref = useRef<HTMLImageElement>(null);\n\tconst wh = fit ? \"100%\" : undefined;\n\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst preview = usePreview();\n\n\tconst handleError = (err) => {\n\t\tonError?.(err);\n\t\tstate.status = \"error\";\n\t};\n\n\tconst handleLoad = (e) => {\n\t\tonLoad?.(e);\n\t\tstate.status = undefined;\n\t};\n\n\tconst handleClick = (e) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tsrc &&\n\t\t\tpreview({\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\ttype: TFileType.IMAGE,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!src) return;\n\n\t\tif (!ref.current?.complete) {\n\t\t\tstate.status = \"loading\";\n\t\t}\n\n\t\tif (!lazyload || !ref.current) return;\n\n\t\tobserve(ref.current, (tar: HTMLElement, visible: boolean) => {\n\t\t\tif (!visible) return;\n\n\t\t\ttar.setAttribute(\"src\", tar.dataset.src || \"\");\n\t\t\tunobserve(tar);\n\t\t});\n\n\t\treturn () => {\n\t\t\tref.current && unobserve(ref.current);\n\t\t};\n\t}, [src]);\n\n\trestProps[lazyload ? \"data-src\" : \"src\"] = src;\n\tconst iSize = state.status === \"loading\" ? initSize : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: size ?? iSize,\n\t\t\t\theight: size ?? iSize,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(\"i-image\", className, {\n\t\t\t\trounded: round,\n\t\t\t\t[`i-image-${state.status}`]: state.status,\n\t\t\t})}\n\t\t>\n\t\t\t{state.status === \"error\" ? (\n\t\t\t\tfallback\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{src && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={{ objectFit: fit, width: wh, height: wh }}\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\t\t\tonError={handleError}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{src && state.status === \"loading\" && <Loading absolute />}\n\n\t\t\t\t\t{cover && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\"i-image-cover\", coverClass)}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cover}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Image as CompositionImage;\n","import classNames from \"classnames\";\nimport { IInputContainer } from \"./type\";\n\nexport default function InputContainer(props: IInputContainer) {\n\tconst {\n\t\tlabel,\n\t\tclassName,\n\t\tlabelInline,\n\t\tstyle,\n\t\tchildren,\n\t\tstatus,\n\t\ttip,\n\t\trequired,\n\t} = props;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{children}\n\n\t\t\t{tip && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={classNames(\"i-input-message\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{tip}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import Image from \"./image\";\nimport List from \"./list\";\n\nImage.List = List;\n\nexport default Image;\n","import usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { getFileType, getSuffixByUrl } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Flex from \"../flex\";\nimport Image from \"./image\";\nimport { IImageList } from \"./type\";\n\nexport default function List(props: IImageList) {\n\tconst {\n\t\titems = [],\n\t\tgap = 8,\n\t\tcolumns,\n\t\twrap,\n\t\tdirection,\n\t\tusePreview: previewable,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\tconst preview = usePreview();\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst handleClick = (e, i) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tpreview({\n\t\t\t\titems: files,\n\t\t\t\tinitial: i,\n\t\t\t});\n\t};\n\n\tif (!files.length) return \"\";\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName='i-image-list'\n\t\t\tgap={gap}\n\t\t\tcolumns={columns}\n\t\t\twrap={wrap}\n\t\t\tdirection={direction}\n\t\t>\n\t\t\t{files.map((img, i) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Image\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tsrc={img.src}\n\t\t\t\t\t\tsize={60}\n\t\t\t\t\t\tusePreview={false}\n\t\t\t\t\t\tonClick={(e) => handleClick(e, i)}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Flex>\n\t);\n}\n","import { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { CompositionInput, IInput } from \"./type\";\n\nconst Input = ((props: IInput) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue = \"\",\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tclear,\n\t\thideVisible,\n\t\tborder,\n\t\trequired,\n\t\tonChange,\n\t\tonEnter,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t\tvisible: false,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\te.code === \"Enter\" && onEnter?.(e);\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (type === \"password\" && !hideVisible) {\n\t\t\tObject.assign(state, {\n\t\t\t\tvisible: !state.visible,\n\t\t\t\ttype: !state.visible ? \"text\" : \"password\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst v = \"\";\n\t\tonChange?.(v);\n\t};\n\n\tconst HelperIcon = useMemo(() => {\n\t\tif (type === \"password\") {\n\t\t\treturn state.visible ? <VisibilityRound /> : <VisibilityOffRound />;\n\t\t}\n\n\t\treturn undefined;\n\t}, [state.visible]);\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\ttype: state.type,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: classNames(\"i-input\", `i-input-${type}`),\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\tconst clearable = clear && state.value;\n\tconst showHelper = type === \"password\" && !!state.value;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t\trequired={required}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive={!!clearable || showHelper}\n\t\t\t\t\ticon={HelperIcon}\n\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t/>\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n}) as CompositionInput;\n\nexport default Input;\n","import Input from \"./input\";\nimport Number from \"./number\";\nimport Range from \"./range\";\nimport Textarea from \"./textarea\";\n\nInput.Textarea = Textarea;\nInput.Number = Number;\nInput.Range = Range;\n\nexport default Input;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = (props: ITextarea) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue,\n\t\tinitValue,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tautoSize,\n\t\tborder,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\tconst refTextarea = useRef<HTMLDivElement>(null);\n\n\tconst handleChange = (\n\t\te: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n\t) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\n\t\tconst ta = refTextarea.current?.firstChild as HTMLElement;\n\t\tif (autoSize && ta) {\n\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t}\n\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.code !== \"Enter\") return;\n\n\t\te.stopPropagation();\n\t\tonEnter?.(e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-textarea\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={refTextarea}\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<textarea {...inputProps} />\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Textarea;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = (props: IInputNumber) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tstep = 1,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\tthousand,\n\t\tprecision,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tappend,\n\t\tborder,\n\t\tprepend,\n\t\tmessage,\n\t\ttip,\n\t\thideControl,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\tonInput,\n\t\tonBlur,\n\t\t...rest\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tstate.value = v;\n\t\tonChange?.(+v, e);\n\t};\n\n\tconst handleOperate = (param: number) => {\n\t\tconst value = formatInputValue(state.value) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\tstate.value = getFormatNumber(result);\n\n\t\tonChange?.(result);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-input-number\",\n\t\tonChange: handleChange,\n\t\t...rest,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(-step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Number;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound, SyncAltRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, MouseEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputRange } from \"./type\";\n\nconst Range = (props: IInputRange) => {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tappend,\n\t\tprepend,\n\t\tstep = 1,\n\t\tthousand,\n\t\tprecision,\n\t\thideControl,\n\t\tplaceholder,\n\t\tborder,\n\t\tonChange,\n\t\tonBlur,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>, i: number) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\trange[i] = +v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleOperate = (\n\t\te: MouseEvent<Element>,\n\t\tparam: number,\n\t\ti: number\n\t) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\tconst value = formatInputValue(range[i]) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\trange[i] = getFormatNumber(result);\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleSwitch = (e: MouseEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst range = state.value ? state.value : [];\n\t\tconst v = range[0];\n\t\trange[0] = range[1];\n\t\trange[1] = v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tname,\n\t\tclassName: \"i-input i-input-number\",\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[0] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[0]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 0)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\ticon={<SyncAltRound />}\n\t\t\t\t\tstyle={{ margin: 0 }}\n\t\t\t\t\tonClick={handleSwitch}\n\t\t\t\t/>\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[1] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[1]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 1)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Range;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { ReactNode, isValidElement, useEffect, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport \"./index.css\";\nimport type { IMessage, IMessageItem, THeights, TMessageQueue } from \"./type\";\n\nconst AlignMap = {\n\tleft: \"flex-start\",\n\tcenter: \"center\",\n\tright: \"flex-end\",\n};\n\nconst GlobalConfig = {\n\talign: \"center\",\n\toffset: \"12px\",\n\tgap: 12,\n\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 = function ({\n\tref,\n\tactive,\n\tcontent,\n\ttop,\n\tclassName,\n\tstyle,\n\tonClick,\n}: IMessageItem) {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-message\", className, {\n\t\t\t\t\"i-message-active\": active,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\ttop,\n\t\t\t}}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t{content}\n\t\t</div>\n\t);\n};\n\nfunction Messages() {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<{\n\t\ttops: THeights;\n\t\titems: TMessageQueue;\n\t}>({\n\t\titems: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t\ttops: {\n\t\t\tleft: [],\n\t\t\tcenter: [],\n\t\t\tright: [],\n\t\t},\n\t});\n\tconst offsetTop = {\n\t\tleft: 0,\n\t\tcenter: 0,\n\t\tright: 0,\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(handler, {\n\t\t\tcallout: function (item: IMessage) {\n\t\t\t\tconst { align = \"center\", unshift, onShow } = item;\n\t\t\t\tconst size = queue[align][unshift ? \"unshift\" : \"push\"](item);\n\t\t\t\tstate.items[align] = [...queue[align]];\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst h = ref.current?.offsetHeight || 0;\n\n\t\t\t\t\tqueue[align][unshift ? 0 : size - 1].active = true;\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\theights[align][unshift ? \"unshift\" : \"push\"](h);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tonShow?.();\n\t\t\t\t}, 0);\n\n\t\t\t\titem.duration !== 0 &&\n\t\t\t\t\tsetTimeout(this.close.bind(item), item.duration);\n\t\t\t},\n\t\t\tclose: function () {\n\t\t\t\tconst item = this as IMessage;\n\t\t\t\tconst { align = \"center\", onHide } = item;\n\t\t\t\tconst index = queue[align].findIndex((i) => i.id === item.id);\n\t\t\t\tif (index < 0) return;\n\n\t\t\t\tqueue[align][index].active = false;\n\t\t\t\tstate.items[align] = [...queue[align]];\n\n\t\t\t\titem.timer = setTimeout(() => {\n\t\t\t\t\tconst index = queue[align].findIndex(\n\t\t\t\t\t\t(i) => i.id === item.id\n\t\t\t\t\t);\n\n\t\t\t\t\tqueue[align].splice(index, 1);\n\t\t\t\t\theights[align].splice(index, 1);\n\t\t\t\t\tstate.tops[align] = [...heights[align]];\n\t\t\t\t\tstate.items[align] = [...queue[align]];\n\t\t\t\t\titem.timer && clearTimeout(item.timer);\n\t\t\t\t\tonHide?.();\n\t\t\t\t}, 240);\n\t\t\t},\n\t\t});\n\t}, []);\n\n\tconst renderItems = (item, i) => {\n\t\tif (!item) return <></>;\n\n\t\tconst { id, active, content, align = \"center\", className } = item;\n\t\toffsetTop[align] += state.tops[align][i - 1] || 0;\n\t\tconst top = GlobalConfig.gap * i + offsetTop[align];\n\n\t\treturn (\n\t\t\t<MessageItem\n\t\t\t\tkey={id}\n\t\t\t\tref={ref}\n\t\t\t\tactive={active}\n\t\t\t\tcontent={content}\n\t\t\t\ttop={top}\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{ alignSelf: AlignMap[align] }}\n\t\t\t\tonClick={handler.close.bind(item)}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className='i-messages'>\n\t\t\t{state.items.left.map(renderItems)}\n\t\t\t{state.items.center.map(renderItems)}\n\t\t\t{state.items.right.map(renderItems)}\n\t\t</div>\n\t);\n}\n\nexport function setMessageConfig(config: IMessage) {\n\tObject.assign(GlobalConfig, config);\n}\n\nfunction message(config: IMessage | ReactNode) {\n\tif (\n\t\t[\"string\", \"number\"].includes(typeof config) ||\n\t\tisValidElement(config)\n\t) {\n\t\tconfig = { content: config as ReactNode };\n\t}\n\n\tconfig = Object.assign(\n\t\t{ id: uid(7) },\n\t\tItemDefaultConfig,\n\t\tconfig as IMessage\n\t);\n\n\thandler.callout(config as IMessage);\n\n\treturn handler.close.bind(config);\n}\n\nfunction createContainer() {\n\tconst container = document.createElement(\"div\");\n\tcontainer.dataset.id = \"messages\";\n\tdocument.body.append(container);\n\n\treturn container;\n}\n\nmessage.error = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-error\",\n\t});\n};\n\nmessage.success = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-success\",\n\t});\n};\n\nmessage.warning = (content: ReactNode) => {\n\treturn message({\n\t\tcontent,\n\t\tclassName: \"bg-warning\",\n\t});\n};\n\nexport default message;\n","import Modal from \"./modal\";\nimport useModal from \"./useModal\";\n\nModal.useModal = useModal;\n\nexport default Modal;\n","import { renderNode } from \"@p/js/utils\";\nimport { useRef } from \"react\";\nimport HookModal from \"./hookModal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nexport default function useModal() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst handleOpen = (props: IModal) => {\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\t{...props}\n\t\t\t\tonClose={() => {\n\t\t\t\t\tprops.onClose?.();\n\t\t\t\t\tunMount?.();\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst handleUpdate = (props: IModal) => {\n\t\tif (!ref.current) return;\n\n\t\tconst { update } = ref.current;\n\t\tupdate(props);\n\t};\n\n\treturn {\n\t\topen: handleOpen,\n\t\tupdate: handleUpdate,\n\t};\n}\n","import classNames from \"classnames\";\nimport { useState } from \"react\";\nimport Loading from \"../loading\";\nimport { IPageItem } from \"./type\";\n\nconst Page = (props: IPageItem) => {\n\tconst { page, active, children, onChange } = props;\n\tconst [loading, setLoading] = useState(false);\n\n\tconst handleClick = async () => {\n\t\tif (active || loading) return;\n\n\t\tsetLoading(true);\n\t\tawait onChange?.(page);\n\t\tsetLoading(false);\n\t};\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-page\", {\n\t\t\t\t\"i-page-active\": active,\n\t\t\t\t\"i-page-loading\": loading,\n\t\t\t\t\"i-page-disabled\": false,\n\t\t\t})}\n\t\t\tdata-page={page}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{loading && <Loading />}\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n\nexport default Page;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tMoreHorizRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Page from \"./page\";\nimport { IPagination } from \"./type\";\n\nconst Pagination = (props: IPagination) => {\n\tconst {\n\t\tpage: defaultPage = 1,\n\t\tsize = 10,\n\t\ttotal = 0,\n\t\tsibling = 2,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} />,\n\t\tsimple,\n\t\tjumper,\n\t\tclassName,\n\t\trenderEllipsis = () => (\n\t\t\t<Icon icon={<MoreHorizRound />} className='color-7' />\n\t\t),\n\t\trenderPage = (i) => i,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst [page, setPage] = useState(defaultPage);\n\tconst [loading, setLoading] = useState(false);\n\n\tconst totalPage = useMemo(() => Math.ceil(total / size), [size, total]);\n\n\tconst [start, end, loop] = useMemo(() => {\n\t\tconst start = Math.max(1, page - sibling);\n\t\tconst end = Math.min(totalPage, page + sibling);\n\n\t\treturn [\n\t\t\tstart,\n\t\t\tend,\n\t\t\tArray.from({ length: end - start + 1 }).map((n, i) => start + i),\n\t\t];\n\t}, [page, totalPage, sibling]);\n\n\tif (totalPage <= page && page === 1) return <></>;\n\n\tconst handlePageChange = async (p?: number) => {\n\t\tif (!onChange || loading) return;\n\t\tsetLoading(true);\n\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\tif (p === undefined) return;\n\t\t\tawait onChange(p);\n\t\t\tsetPage(p);\n\t\t\tsetLoading(false);\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tuseEffect(() => setPage(defaultPage), [defaultPage]);\n\n\treturn (\n\t\t<div className={classNames(\"i-pagination\", className)} {...restProps}>\n\t\t\t{prev && (\n\t\t\t\t<Page page={page - 1 || 1} onChange={handlePageChange}>\n\t\t\t\t\t{prev}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 1 && (\n\t\t\t\t<Page page={1} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(1)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 2 && renderEllipsis()}\n\n\t\t\t{loop.map((p) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Page\n\t\t\t\t\t\tkey={p}\n\t\t\t\t\t\tpage={p}\n\t\t\t\t\t\tactive={p === page}\n\t\t\t\t\t\tonChange={handlePageChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderPage(p)}\n\t\t\t\t\t</Page>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{end < totalPage - 1 && renderEllipsis()}\n\n\t\t\t{end < totalPage && (\n\t\t\t\t<Page page={totalPage} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(totalPage)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{next && (\n\t\t\t\t<Page page={page + 1} onChange={handlePageChange}>\n\t\t\t\t\t{next}\n\t\t\t\t</Page>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Pagination;\n","import classNames from \"classnames\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { ITag } from \"./type\";\n\nconst Tag = (props: ITag) => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\n\t\thoverShowClose,\n\t\tclassName,\n\t\tchildren,\n\t\tonClose,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<span\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tag\",\n\t\t\t\t{\n\t\t\t\t\t\"i-tag-outline\": outline,\n\t\t\t\t\t\"i-tag-clickable\": onClick,\n\t\t\t\t\t[`i-tag-${size}`]: size !== \"normal\",\n\t\t\t\t\tround,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={onClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{dot && <span className={classNames(\"i-tag-dot\", dotClass)}></span>}\n\n\t\t\t{children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName={classNames(\"i-tag-close\", {\n\t\t\t\t\t\t\"i-tag-hover-close\": hoverShowClose,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={onClose}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\nexport default Tag;\n","import { CheckRound, SearchRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { TOption } from \"../../type\";\nimport Icon from \"../icon\";\nimport List from \"../list\";\nimport Tag from \"../tag\";\nimport Empty from \"../utils/empty\";\nimport { ISelectOptions } from \"./type\";\nexport const Options = (props: ISelectOptions) => {\n\tconst {\n\t\tvalue: val,\n\t\toptions,\n\t\tfilter,\n\t\tfilterPlaceholder,\n\t\tmultiple,\n\t\tempty = <Empty />,\n\t\tonSelect,\n\t\tonFilter,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-select-options\", {\n\t\t\t\t\"i-select-options-multiple\": multiple,\n\t\t\t})}\n\t\t>\n\t\t\t{filter && multiple && (\n\t\t\t\t<div className='i-select-filter'>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<SearchRound />}\n\t\t\t\t\t\tclassName='color-8 ml-8 my-auto'\n\t\t\t\t\t\tsize='1.2em'\n\t\t\t\t\t/>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype='text'\n\t\t\t\t\t\tclassName='i-input'\n\t\t\t\t\t\tplaceholder={filterPlaceholder}\n\t\t\t\t\t\tonChange={onFilter}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{options.length === 0 && empty}\n\n\t\t\t{options.map((option, i) => {\n\t\t\t\tconst { label, value, disabled } = option;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? val?.includes(value)\n\t\t\t\t\t: val === value;\n\n\t\t\t\treturn (\n\t\t\t\t\t<List.Item\n\t\t\t\t\t\tkey={(value as string) || i}\n\t\t\t\t\t\tactive={isActive}\n\t\t\t\t\t\ttype='option'\n\t\t\t\t\t\tonClick={() => onSelect?.(value, option)}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{multiple && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={<CheckRound />}\n\t\t\t\t\t\t\t\tclassName='i-select-option-check'\n\t\t\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</List.Item>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport const activeOptions = (\n\toptions: TOption[] = [],\n\tvalue: any[] = [],\n\tmax = 3\n) => {\n\tconst total = options.flatMap((opt) =>\n\t\tvalue.includes(opt.value) ? [opt] : []\n\t);\n\n\tif (max >= total.length) return total;\n\n\tconst rest = total.length - max;\n\tconst after = total.slice(0, max);\n\tafter.push(rest as any);\n\n\treturn after;\n};\n\nexport const displayValue = (config) => {\n\tconst { options, value, maxDisplay, multiple, onSelect } = config;\n\n\tif (multiple) {\n\t\treturn activeOptions(options, value, maxDisplay).map((opt, i) => {\n\t\t\tif (typeof opt === \"number\") return <Tag key={i}>+{opt}</Tag>;\n\n\t\t\tconst { label, value } = opt;\n\n\t\t\treturn (\n\t\t\t\t<Tag\n\t\t\t\t\tkey={value as string}\n\t\t\t\t\thoverShowClose\n\t\t\t\t\tonClose={(e) => {\n\t\t\t\t\t\te?.stopPropagation();\n\t\t\t\t\t\tonSelect?.(value, opt);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Tag>\n\t\t\t);\n\t\t});\n\t}\n\n\treturn options.find((opt: TOption) => opt.value === value)?.label;\n};\n","import { UnfoldMoreRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport { ChangeEvent, useEffect, useMemo, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport { TOption } from \"../../type\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { Options, displayValue } from \"./options\";\nimport { ISelect } from \"./type\";\n\nconst Select = (props: ISelect) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tname,\n\t\tlabel,\n\t\tvalue = \"\",\n\t\tplaceholder,\n\t\toptions = [],\n\t\tmultiple,\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tstyle,\n\t\tclassName,\n\t\tmessage,\n\t\tstatus = \"normal\",\n\t\thideClear,\n\t\thideArrow,\n\t\tmaxDisplay,\n\t\tborder,\n\t\tfilter,\n\t\ttip,\n\t\tfilterPlaceholder = \"...\",\n\t\tpopupProps,\n\t\tonSelect,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tinputValue: \"\",\n\t\tfilterValue: \"\",\n\t\tvalue,\n\t\tloading: false,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst filterOptions = useMemo(() => {\n\t\tconst { filterValue: fv } = state;\n\t\tif (!fv || !filter) return formattedOptions;\n\n\t\tconst filterFn =\n\t\t\ttypeof filter === \"function\"\n\t\t\t\t? filter\n\t\t\t\t: (opt) => opt.value.includes(fv) || opt.label.includes(fv);\n\n\t\treturn formattedOptions.filter(filterFn);\n\t}, [formattedOptions, filter, state.filterValue]);\n\n\tconst changeValue = (v: any) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSelect = (value: any, option?: TOption) => {\n\t\tonSelect?.(value, option);\n\n\t\tif (multiple) {\n\t\t\tconst values = [...(state.value as any[])];\n\t\t\tconst i = values.findIndex((v) => v === value);\n\n\t\t\ti > -1 ? values.splice(i, 1) : values.push(value);\n\t\t\tchangeValue(values as any);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tchangeValue(value);\n\t};\n\n\tconst handleVisibleChange = (visible: boolean) => {\n\t\tsetActive(visible);\n\n\t\tif (!filter) return;\n\n\t\tstate.filterValue = \"\";\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (!active) return;\n\n\t\tchangeValue(multiple ? [] : \"\");\n\t};\n\n\tconst handleFilterChange = debounce(\n\t\t{ delay: 400 },\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst v = e.target.value;\n\t\t\tstate.filterValue = v;\n\t\t}\n\t);\n\n\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tstate.filterValue = e.target.value;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst hasValue = multiple\n\t\t? (state.value as any[]).length > 0\n\t\t: !!state.value;\n\tconst clearable = !hideClear && active && hasValue;\n\tconst text = message ?? tip;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t<Popup\n\t\t\t\tposition='bottom'\n\t\t\t\tarrow={false}\n\t\t\t\tfitSize\n\t\t\t\t{...popupProps}\n\t\t\t\tvisible={active}\n\t\t\t\ttrigger='none'\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t\tcontent={\n\t\t\t\t\t<Options\n\t\t\t\t\t\toptions={filterOptions}\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tfilter={!!filter}\n\t\t\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonFilter={handleFilterChange}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t\t\t\"i-input-focus\": active,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={() => setActive(true)}\n\t\t\t\t>\n\t\t\t\t\t{prepend}\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\ttype='hidden'\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{multiple ? (\n\t\t\t\t\t\thasValue ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-input i-select\", {\n\t\t\t\t\t\t\t\t\t\"i-select-multiple\": multiple,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{displayValue({\n\t\t\t\t\t\t\t\t\toptions: formattedOptions,\n\t\t\t\t\t\t\t\t\tvalue: state.value,\n\t\t\t\t\t\t\t\t\tmultiple,\n\t\t\t\t\t\t\t\t\tmaxDisplay,\n\t\t\t\t\t\t\t\t\tonSelect: handleSelect,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\n\t\t\t\t\t{!multiple && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={active ? state.filterValue : state.value}\n\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\tplaceholder={state.value || placeholder}\n\t\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\t\treadOnly={!filter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideArrow}\n\t\t\t\t\t\ticon={clearable ? undefined : <UnfoldMoreRound />}\n\t\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{append}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\n\t\t\t{text && <span className='i-input-message'>{text}</span>}\n\t\t</label>\n\t);\n};\n\nexport default Select;\n","import { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Input from \"../../input\";\nimport Select from \"../../select\";\n\nexport const ColorMethods = {\n\tHEX: \"toHexString\",\n\tRGB: \"toRgbString\",\n\tHSB: \"toHsbString\",\n};\n\nexport default function Footer(props) {\n\tconst { value, type, onTypeChange, onChange } = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t});\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tstate.type = t;\n\t\tonTypeChange(t);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t\tstate.type = type;\n\t}, [value, type]);\n\n\treturn (\n\t\t<div className='i-colorpicker-footer'>\n\t\t\t<Select\n\t\t\t\treadOnly\n\t\t\t\thideClear\n\t\t\t\thideArrow\n\t\t\t\tstyle={{ width: \"5.6em\" }}\n\t\t\t\toptions={[\"RGB\", \"HEX\", \"HSB\"]}\n\t\t\t\tvalue={state.type}\n\t\t\t\tonChange={handleTypeChange}\n\t\t\t/>\n\t\t\t<Input value={state.value} onChange={handleChange} />\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Handle = (props) => {\n\tconst { ref, color, handle, placeholder, className, ...restProps } = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-colorpicker-handle\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{handle !== \"text\" && (\n\t\t\t\t<i\n\t\t\t\t\tclassName='i-colorpicker-square'\n\t\t\t\t\tstyle={{ background: color }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{handle !== \"square\" && (\n\t\t\t\t<span className='i-colorpicker-text' style={{ color }}>\n\t\t\t\t\t{color ?? placeholder}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Handle;\n","import ColorsPanel from \"@rc-component/color-picker\";\nimport \"@rc-component/color-picker/assets/index.css\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Popup from \"../../popup\";\nimport { IColorPicker } from \"../type\";\nimport Footer, { ColorMethods } from \"./footer\";\nimport Handle from \"./handle\";\nimport \"./index.css\";\n\nexport default function ColorPicker(props: IColorPicker) {\n\tconst {\n\t\tvalue,\n\t\ttype = \"HEX\",\n\t\tdisabledAlpha,\n\t\tchildren,\n\t\tusePanel,\n\t\thandle = \"both\",\n\t\tplaceholder = \"Colors\",\n\t\tpopupProps,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttype,\n\t\tvalue,\n\t\tsyncValue: value,\n\t\tvisible: popupProps?.visible,\n\t});\n\n\tconst handleChange = (target) => {\n\t\tstate.syncValue = target;\n\t};\n\n\tconst handleComplete = (target) => {\n\t\tconst method = ColorMethods[state.type];\n\n\t\tif (target.a !== 1) {\n\t\t\ttarget.a = parseFloat(target.a.toFixed(3));\n\t\t}\n\n\t\tstate.value = target[method]?.();\n\t\tonChange?.(state.value);\n\t};\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\tpopupProps?.onVisibleChange?.(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tconst method = ColorMethods[t];\n\n\t\tstate.type = t;\n\t\tstate.value = state.syncValue[method]?.();\n\t};\n\n\tconst handleValueChange = (v) => {\n\t\tstate.value = v;\n\t\tstate.syncValue = v;\n\t\tonChange?.(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.syncValue = value;\n\t\tstate.value = value;\n\t}, [value]);\n\n\tif (usePanel) {\n\t\treturn <ColorsPanel {...props} />;\n\t}\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\ttouchable\n\t\t\tposition='bottom'\n\t\t\t{...popupProps}\n\t\t\tvisible={state.visible}\n\t\t\tcontent={\n\t\t\t\t<ColorsPanel\n\t\t\t\t\tvalue={state.syncValue}\n\t\t\t\t\tdisabledAlpha={disabledAlpha}\n\t\t\t\t\tpanelRender={(panel) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{panel}\n\t\t\t\t\t\t\t\t<Footer\n\t\t\t\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t\t\t\ttype={state.type}\n\t\t\t\t\t\t\t\t\tonTypeChange={handleTypeChange}\n\t\t\t\t\t\t\t\t\tonChange={handleValueChange}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonChangeComplete={handleComplete}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children ?? (\n\t\t\t\t<Handle\n\t\t\t\t\tcolor={state.value}\n\t\t\t\t\thandle={handle}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Popup>\n\t);\n}\n","import classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { ReactNode, useMemo } from \"react\";\nimport { IBaseDates } from \"../type\";\n\nconst Dates = (\n\tprops: IBaseDates & {\n\t\tmonth: any;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tmonth,\n\t\tweeks = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\trenderDate = (date: Dayjs) => date.date(),\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\tconst today = dayjs();\n\n\tconst dates = useMemo(() => {\n\t\tconst dates: Dayjs[] = [];\n\n\t\tconst lastDateOfLastMonth = month.add(-1, \"month\").endOf(\"month\");\n\t\tlet { $W, $D } = lastDateOfLastMonth;\n\n\t\tif ($W !== 0) {\n\t\t\tconst lastMonthDates = Array.from({ length: $W }).map(\n\t\t\t\t(whatever, i) => lastDateOfLastMonth.add(i + 1 - $W, \"day\")\n\t\t\t);\n\t\t\tdates.push(...lastMonthDates);\n\t\t}\n\n\t\tconst lastDate = month.endOf(\"month\");\n\t\t$D = lastDate.$D;\n\t\t$W = lastDate.$W;\n\t\tdates.push(\n\t\t\t...Array.from({ length: $D }).map((whatever, i) =>\n\t\t\t\tlastDate.add(i + 1 - $D, \"day\")\n\t\t\t)\n\t\t);\n\n\t\tif ($W !== 0) {\n\t\t\tdates.push(\n\t\t\t\t...Array.from({ length: 7 - $W }).map((whatever, i) =>\n\t\t\t\t\tlastDate.add(i + 1, \"day\")\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn dates;\n\t}, [month]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\tif (disabledDate?.(date)) return;\n\n\t\tonDateClick?.(date);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className='i-datepicker-weeks'>\n\t\t\t\t{weeks.map((week: ReactNode, i: number) => (\n\t\t\t\t\t<span key={i} className='i-datepicker-week'>\n\t\t\t\t\t\t{week}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className='i-datepicker-dates'>\n\t\t\t\t{dates.map((date, i: number) => {\n\t\t\t\t\tconst active = date.isSame(value, \"day\");\n\t\t\t\t\tconst isSameMonth = date.isSame(month, \"month\");\n\t\t\t\t\tconst isToday = date.isSame(today, \"day\");\n\t\t\t\t\tconst disabled = disabledDate?.(date);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-item\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\": active,\n\t\t\t\t\t\t\t\t\"i-datepicker-same-month\": isSameMonth,\n\t\t\t\t\t\t\t\t\"i-datepicker-today\": isToday,\n\t\t\t\t\t\t\t\t\"i-datepicker-disabled\": disabled,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() => handleDateClick(date)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderDate(date)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default Dates;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { throttle } from \"radash\";\nimport { ReactNode, useEffect, useRef } from \"react\";\nimport Icon from \"../../icon\";\nimport Helpericon from \"../../utils/helpericon\";\nimport { IBaseDates } from \"../type\";\nimport Dates from \"./dates\";\n\nconst MONTHS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\nconst YearMonth = (\n\tprops: IBaseDates & {\n\t\tonClick?: () => void;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tunitMonth = \"月\",\n\t\tunitYear = \"年\",\n\t\trenderYear,\n\t\trenderMonth,\n\t\tonClick,\n\t} = props;\n\n\treturn (\n\t\t<a className='i-datepicker-action' data-ripple onClick={onClick}>\n\t\t\t<span>{renderYear?.(value.year())}</span>\n\t\t\t{unitYear}\n\t\t\t<span>{renderMonth?.(value.month() + 1)}</span>\n\t\t\t{unitMonth}\n\t\t</a>\n\t);\n};\n\nconst Panel = (props: IBaseDates) => {\n\tconst {\n\t\tvalue,\n\t\tunitYear,\n\t\tunitMonth,\n\t\trenderDate,\n\t\trenderMonth = (m: ReactNode) => m,\n\t\trenderYear = (y: ReactNode) => y,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttoday: value,\n\t\tmonth: value || dayjs(),\n\t\tselectedYear: dayjs(),\n\t\tyears: [] as number[],\n\t\tselectable: false,\n\t});\n\n\tconst $years = useRef<HTMLDivElement>(null);\n\n\tconst handleOperateMonth = (next: boolean) => {\n\t\tstate.month = state.month[next ? \"add\" : \"subtract\"](1, \"month\");\n\t};\n\n\tconst handleChangeDate = (date: Dayjs) => {\n\t\tif (date.isSame(state.today, \"day\")) return;\n\n\t\tif (!date.isSame(state.month, \"month\")) {\n\t\t\tstate.month = date;\n\t\t}\n\n\t\tstate.today = date;\n\t\tonDateClick?.(date);\n\t};\n\n\tconst handleChangeMonth = (month: number) => {\n\t\tstate.month = state.month\n\t\t\t.year(state.selectedYear.year())\n\t\t\t.month(month - 1);\n\t\tstate.selectable = false;\n\t};\n\n\tconst getMoreYears = throttle({ interval: 100 }, (e) => {\n\t\tconst isUp = e.deltaY < 0;\n\n\t\tstate.years = state.years.map((y) => (y += isUp ? -1 : 1));\n\t});\n\n\tuseEffect(() => {\n\t\tif (!state.selectable) return;\n\n\t\tstate.selectedYear = state.month;\n\t\tconst y = state.selectedYear.year();\n\t\tconst years = Array.from({ length: 7 }).map((_, i) => y - 3 + i);\n\n\t\tstate.years = [...years];\n\t}, [state.selectable]);\n\n\tuseEffect(() => {\n\t\tstate.today = value;\n\t\tstate.month = value || dayjs();\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-datepicker'>\n\t\t\t<div className='i-datepicker-units'>\n\t\t\t\t<YearMonth\n\t\t\t\t\tvalue={state.month}\n\t\t\t\t\tunitYear={unitYear}\n\t\t\t\t\tunitMonth={unitMonth}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tonClick={() => (state.selectable = true)}\n\t\t\t\t/>\n\t\t\t\t<a\n\t\t\t\t\tclassName='ml-auto i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(false)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t</a>\n\t\t\t\t<a\n\t\t\t\t\tclassName='i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(true)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t</a>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-datepicker-ym\", {\n\t\t\t\t\t\"i-datepicker-active\": state.selectable,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName='i-datepicker-close'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tstate.selectable = false;\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tref={$years}\n\t\t\t\t\tclassName='i-datepicker-years'\n\t\t\t\t\tonWheel={getMoreYears}\n\t\t\t\t>\n\t\t\t\t\t{state.years.map((y) => (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tkey={y}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-year\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\ty === state.selectedYear.year(),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t(state.selectedYear =\n\t\t\t\t\t\t\t\t\tstate.selectedYear.year(y))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderYear(y)}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t<div className='i-datepicker-months'>\n\t\t\t\t\t{MONTHS.map((m) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={m}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-month\", {\n\t\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\t\tm === state.month.month() + 1,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => handleChangeMonth(m)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderMonth(m)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dates\n\t\t\t\tvalue={state.today}\n\t\t\t\tmonth={state.month}\n\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\tonDateClick={handleChangeDate}\n\t\t\t\trenderDate={renderDate}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Panel;\n","import { CalendarMonthTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { IDatePicker } from \"../type\";\nimport \"./index.css\";\nimport Panel from \"./panel\";\n\ndayjs.extend(customParseFormat);\n\nconst FORMATTYPES = [\"YYYY-MM-DD\", \"YYYY-M-D\", \"YYYY/MM/DD\", \"YYYY/M/D\"];\nconst FORMAT = \"YYYY-MM-DD\";\n\nconst Datepicker = (props: IDatePicker) => {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tweeks,\n\t\tformat = FORMAT,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderDate,\n\t\trenderMonth,\n\t\trenderYear,\n\t\tpopupProps,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t\tonChange,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst dayJsValue = useMemo(() => {\n\t\tif (!state.value) return null;\n\n\t\tconst date = dayjs(state.value as string, format, true);\n\n\t\tif (date.isValid()) return date;\n\n\t\treturn null;\n\t}, [state.value]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\thandleChange(date.format(format));\n\t};\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSetDate = () => {\n\t\tif (!state.value) return;\n\n\t\tconst date = dayjs(state.value as string, FORMATTYPES, true);\n\n\t\tif (date.isValid()) {\n\t\t\thandleChange(date.format(format));\n\t\t\treturn;\n\t\t}\n\n\t\thandleChange(\"\");\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleSetDate();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\twatchResize\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={dayJsValue}\n\t\t\t\t\tweeks={weeks}\n\t\t\t\t\trenderDate={renderDate}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\t\tonDateClick={handleDateClick}\n\t\t\t\t/>\n\t\t\t}\n\t\t\t{...popupProps}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<CalendarMonthTwotone />}\n\t\t\t\t\t\tclassName='i-datepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonEnter={handleSetDate}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n};\n\nexport default Datepicker;\n","import classNames from \"classnames\";\n\nexport default function Items(props) {\n\tconst { items = [], active, renderItem, unit, onClick } = props;\n\n\treturn items.map((n) => {\n\t\tconst isActive = n === active;\n\n\t\treturn (\n\t\t\t<a\n\t\t\t\tkey={n}\n\t\t\t\tclassName={classNames(\"i-timepicker-item\", {\n\t\t\t\t\t\"i-timepicker-item-active\": isActive,\n\t\t\t\t})}\n\t\t\t\tonClick={() => onClick(n)}\n\t\t\t>\n\t\t\t\t{renderItem?.(n, isActive, unit) ?? (n < 10 ? `0${n}` : n)}\n\t\t\t</a>\n\t\t);\n\t});\n}\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useMemo } from \"react\";\nimport \"./index.css\";\nimport Items from \"./item\";\n\nconst UnitMaps = {\n\th: \"hour\",\n\thh: \"hour\",\n\tm: \"minute\",\n\tmm: \"minute\",\n\ts: \"second\",\n\tss: \"second\",\n};\n\nexport default function Panel(props) {\n\tconst {\n\t\tvalue,\n\t\tstepH = 1,\n\t\tstepM = 1,\n\t\tstepS = 1,\n\t\tformat,\n\t\tperiods,\n\t\trenderItem,\n\t\tonChange,\n\t\tonFallback,\n\t} = props;\n\tconst state = useReactive<any>({\n\t\tperiod: undefined,\n\t\thour: undefined,\n\t\tminute: undefined,\n\t\tsecond: undefined,\n\t});\n\n\tconst [hours, minutes, seconds] = useMemo(() => {\n\t\tconst hasH = format.includes(\"h\");\n\t\tconst hasM = format.includes(\"m\");\n\t\tconst hasS = format.includes(\"s\");\n\t\tconst hours = hasH\n\t\t\t? Array.from(\n\t\t\t\t\t{ length: (periods ? 12 : 24) / stepH },\n\t\t\t\t\t(_, i) => i * stepH\n\t\t\t )\n\t\t\t: [];\n\t\tconst minutes = hasM\n\t\t\t? Array.from({ length: 60 / stepM }, (_, i) => i * stepM)\n\t\t\t: [];\n\t\tconst seconds = hasS\n\t\t\t? Array.from({ length: 60 / stepS }, (_, i) => i * stepS)\n\t\t\t: [];\n\n\t\treturn [hours, minutes, seconds];\n\t}, [stepH, stepM, stepS, format, periods]);\n\n\tconst updateValue = () => {\n\t\tconst reg = /(hh|h){1}|(mm|m){1}|(ss|s){1}/gi;\n\t\tlet result = format.replace(reg, (pattern) => {\n\t\t\tconst p = pattern.toLowerCase();\n\t\t\tconst u = UnitMaps[p];\n\t\t\tconst n = state[u] ?? 0;\n\n\t\t\treturn p.length > 1 && n < 10 ? `0${n ?? 0}` : n ?? 0;\n\t\t});\n\n\t\tif (periods && hours.length > 0) {\n\t\t\tresult = `${state.period ?? periods[0]} ${result}`;\n\t\t}\n\n\t\tonChange(result);\n\t};\n\n\tconst handleSetTime = (v, unit) => {\n\t\tstate[unit] = v;\n\t\tupdateValue();\n\t};\n\n\tuseEffect(() => {\n\t\tlet time = value ?? \"\";\n\n\t\tif (periods && hours.length > 0 && value) {\n\t\t\tconst [p, t] = value.split(\" \");\n\t\t\ttime = t ?? \"\";\n\t\t\tstate.period = periods.includes(p) ? p : undefined;\n\t\t}\n\n\t\tconst nums = time.match(/\\d+/g) ?? [];\n\n\t\tif (!nums.length) {\n\t\t\tonFallback(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet i = 0;\n\t\tconst r = format.replace(/(hh|h)+|(mm|m)+|(ss|s)+/gi, (p) => {\n\t\t\tconst n = nums[i++] ?? 0;\n\t\t\tlet o = p;\n\n\t\t\tif (UnitMaps[p] === \"hour\") {\n\t\t\t\to = Math.min(periods ? 11 : 23, n);\n\t\t\t}\n\n\t\t\to = Math.min(59, n);\n\n\t\t\tstate[UnitMaps[p]] = o;\n\t\t\treturn p.length > 1 && o < 10 ? `0${o}` : o;\n\t\t});\n\n\t\tonFallback(r);\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-timepicker'>\n\t\t\t{hours.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{periods && (\n\t\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\t\titems={periods}\n\t\t\t\t\t\t\t\tactive={state.period}\n\t\t\t\t\t\t\t\tonClick={(p) => handleSetTime(p, \"period\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\titems={hours}\n\t\t\t\t\t\t\tactive={state.hour}\n\t\t\t\t\t\t\tunit='hour'\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\tonClick={(h) => handleSetTime(h, \"hour\")}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{minutes.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={minutes}\n\t\t\t\t\t\tactive={state.minute}\n\t\t\t\t\t\tunit='minute'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(m) => handleSetTime(m, \"minute\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{seconds.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={seconds}\n\t\t\t\t\t\tactive={state.second}\n\t\t\t\t\t\tunit='second'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(s) => handleSetTime(s, \"second\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { AccessTimeRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { ITimePicker } from \"../type\";\nimport Panel from \"./panel\";\n\nconst FORMAT = \"hh:mm:ss\";\n\nexport default function TimePicker(props: ITimePicker) {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tformat = FORMAT,\n\t\tperiods,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderItem,\n\t\tonChange,\n\t\tonBlur,\n\t\tpopupProps,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\tsafeValue: undefined,\n\t});\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t};\n\n\tconst handleFallback = (v) => {\n\t\tstate.safeValue = v;\n\t};\n\n\tconst handleValidTime = () => {\n\t\tif (!state.value) return;\n\n\t\tstate.value = state.safeValue;\n\t\thandleChange(state.safeValue);\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleValidTime();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\twatchResize\n\t\t\t{...popupProps}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tformat={format}\n\t\t\t\t\tperiods={periods}\n\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonFallback={handleFallback}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<AccessTimeRound />}\n\t\t\t\t\t\tclassName='i-timepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n}\n","import { InfoOutlined } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { MouseEvent } from \"react\";\nimport Button from \"../button\";\nimport { IButton } from \"../button/type\";\nimport Flex from \"../flex\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport { IPopconfirm } from \"./type\";\n\nconst defaultOk = {\n\tchildren: \"确定\",\n};\n\nconst defaultCancel = {\n\tchildren: \"取消\",\n\tsecondary: true,\n};\n\nconst Popconfirm = (props: IPopconfirm) => {\n\tconst {\n\t\ttrigger = \"click\",\n\t\tvisible,\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' />,\n\t\tcontent,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\talign = \"end\",\n\t\tposition = \"top\",\n\t\toffset = 12,\n\t\textra,\n\t\tonOk,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tloading: false,\n\t\tvisible,\n\t});\n\n\tconst ok: IButton = okButtonProps\n\t\t? Object.assign({}, defaultOk, okButtonProps)\n\t\t: defaultOk;\n\tconst cancel: IButton = cancelButtonProps\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\n\t\t: defaultCancel;\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\trestProps.onVisibleChange?.(v);\n\t};\n\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\n\t\tstate.loading = true;\n\t\tok.onClick?.(e);\n\n\t\tonOk?.()\n\t\t\t?.then(() => {\n\t\t\t\tstate.visible = false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tstate.loading = false;\n\t\t\t});\n\t};\n\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\n\t\tcancel.onClick?.(e);\n\t\tawait onClose?.();\n\t\tstate.visible = false;\n\t};\n\n\tconst popconfirmContent = (\n\t\t<div className='i-popconfirm'>\n\t\t\t<Flex gap={12}>\n\t\t\t\t{icon}\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\n\t\t\t</Flex>\n\n\t\t\t<Flex\n\t\t\t\tgap={12}\n\t\t\t\tjustify='flex-end'\n\t\t\t\tclassName='mt-8 i-popconfirm-footer'\n\t\t\t>\n\t\t\t\t{cancelButtonProps !== null && (\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\n\t\t\t\t)}\n\t\t\t\t{extra}\n\t\t\t\t{okButtonProps !== null && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t{...ok}\n\t\t\t\t\t\tonClick={handleOk}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<Popup\n\t\t\tcontent={popconfirmContent}\n\t\t\t{...restProps}\n\t\t\ttrigger={trigger}\n\t\t\tvisible={state.visible}\n\t\t\talign={align}\n\t\t\toffset={offset}\n\t\t\tposition={position}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nexport default Popconfirm;\n","import classNames from \"classnames\";\nimport { ChangeEvent } from \"react\";\nimport { IRadioItem } from \"./type\";\n\nexport default function RadioItem(props: IRadioItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tname,\n\t\tvalue,\n\t\tchecked,\n\t\tdisabled,\n\t\tchildren,\n\t\tonChange,\n\t} = props;\n\n\tconst handleChange = (e: ChangeEvent) => {\n\t\tonChange?.(value, e);\n\t};\n\n\treturn (\n\t\t<label className={classNames(\"i-radio-item\", { disabled })}>\n\t\t\t<input\n\t\t\t\ttype='radio'\n\t\t\t\tname={name}\n\t\t\t\tchecked={checked}\n\t\t\t\tclassName={classNames(\"i-radio-input\", `i-radio-${type}`)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-radio-text'>{children}</span>\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tstate.value = value;\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => (\n\t\t\t\t\t<RadioItem\n\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\tchecked={state.value === option.value}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</RadioItem>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n","import \"./index.css\";\n\nexport default function Divider() {\n\treturn <i className='i-step-divider' />;\n}\n","import { CheckRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Divider from \"./divider\";\nimport { IStepItem } from \"./type\";\n\nconst STATUS = [\"finished\", \"active\", \"pending\"];\n\nfunction defaultRenderIcon(i: number, status: string) {\n\treturn (\n\t\t<span className='i-step-item-index'>\n\t\t\t{status === \"finished\" ? (\n\t\t\t\t<CheckRound style={{ width: \"1em\", height: \"1.5em\" }} />\n\t\t\t) : (\n\t\t\t\ti + 1\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction Item(props: IStepItem) {\n\tconst {\n\t\tindex = 0,\n\t\tactive = 0,\n\t\trenderIcon = defaultRenderIcon,\n\t\ttitle,\n\t\tvertical,\n\t\tline = <Divider />,\n\t\tasList,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\tconst status = STATUS[index === active ? 1 : index < active ? 0 : 2];\n\n\tconst handleClick = () => {\n\t\tonClick?.(index);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-step-item-${status}`]: !asList,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{vertical ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-left'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='i-step-item-right'>\n\t\t\t\t\t\t<div className='i-step-item-title'>{title}</div>\n\t\t\t\t\t\t{children && (\n\t\t\t\t\t\t\t<div className='i-step-item-content'>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-title'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\n\t\t\t\t\t\t<span>{title}</span>\n\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t{children && (\n\t\t\t\t\t\t<div className='i-step-item-content'>{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, ReactNode, useMemo } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IStep } from \"./type\";\n\nconst Step = (props: IStep) => {\n\tconst {\n\t\tactive = 0,\n\t\tvertical,\n\t\trenderIcon,\n\t\tline,\n\t\tstyle,\n\t\tasList,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\n\tconst steps = useMemo(() => {\n\t\tconst nodes: ReactNode[] = [];\n\t\tlet index = 0;\n\n\t\tChildren.map(children, (el: any) => {\n\t\t\tif (!el || el.type !== Item) return;\n\n\t\t\tconst { props: elProps } = el;\n\n\t\t\tnodes.push({\n\t\t\t\t...el,\n\t\t\t\tprops: {\n\t\t\t\t\trenderIcon,\n\t\t\t\t\tline,\n\t\t\t\t\tonClick,\n\t\t\t\t\t...elProps,\n\t\t\t\t\tvertical,\n\t\t\t\t\tactive,\n\t\t\t\t\tasList,\n\t\t\t\t\tindex: index++,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\treturn nodes;\n\t}, [active, children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step\",\n\t\t\t\t{ \"i-step-vertical\": vertical },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{steps}\n\t\t</div>\n\t);\n};\n\nStep.Item = Item;\n\nexport default Step;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { ISwiperItem } from \"./type\";\n\nfunction Item(props: ISwiperItem) {\n\tconst {\n\t\tindex = 0,\n\t\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\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { CompositionSwiper, ISwiper } from \"./type\";\n\nconst Swiper = ((props: ISwiper) => {\n\tconst {\n\t\tref,\n\t\ttype = \"normal\",\n\t\tinitial = 0,\n\t\tdisplay = 1,\n\t\tscroll = 1,\n\t\tloop = true,\n\t\tvertical,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} size='2em' />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} size='2em' />,\n\t\tduration = 600,\n\t\tinterval = 3000,\n\t\tautoplay,\n\t\tpauseOnHover,\n\t\tarrow = true,\n\t\treverse,\n\t\tdraggable,\n\t\tdragOffset = 40,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tindicator,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\n\t} = props;\n\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst transition = `all ${duration / 1000}s`;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\tswipable: true,\n\t\ttransition: type === \"fade\" ? \"none\" : transition,\n\t\tdragStart: 0,\n\t\tdragging: false,\n\t\tinitialized: false,\n\t});\n\n\tconst items = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type !== Item) return;\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\tconst [displayItems, extra, size, total, listSize] = useMemo(() => {\n\t\tconst extra =\n\t\t\ttype === \"normal\" && loop && items.length > display\n\t\t\t\t? display + 1\n\t\t\t\t: 0;\n\t\tlet list: any = [];\n\n\t\tif (extra <= 0) {\n\t\t\tlist = [...items];\n\t\t} else {\n\t\t\tconst head = items.slice(0, extra);\n\t\t\tconst tail = items.slice(-extra);\n\t\t\tlist = [...tail, ...items, ...head];\n\t\t}\n\n\t\tconst listSize = `${(list.length / display) * 100}%`;\n\n\t\treturn [list, extra, items.length, list.length, listSize];\n\t}, [display, loop, type, items]);\n\n\tconst offsetPercent = useMemo(\n\t\t() => (-100 * (state.current + extra)) / total,\n\t\t[state.current, total]\n\t);\n\n\tconst position = useMemo(() => {\n\t\tif (size <= display || type === \"fade\") return;\n\n\t\tconst offset = vertical\n\t\t\t? `0, ${offsetPercent}%`\n\t\t\t: `${offsetPercent}%, 0`;\n\t\treturn `translate3d(${offset}, 0)`;\n\t}, [offsetPercent, vertical, display, size, type]);\n\n\tconst trackStyle = useMemo(() => {\n\t\tif (!vertical || !itemHeight) return;\n\n\t\treturn {\n\t\t\theight: itemHeight * display,\n\t\t};\n\t}, [vertical, itemHeight, display]);\n\n\tconst indicatorsLoop = useMemo(() => {\n\t\treturn Array.from({\n\t\t\tlength: Math.ceil((size - display) / scroll) + 1,\n\t\t});\n\t}, [loop, indicator]);\n\n\tconst clearTimer = () => {\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst swipeTo = (i: number) => {\n\t\tif (!state.swipable || i === state.current) return;\n\t\tstate.swipable = false;\n\t\tonBeforeSwipe?.(state.current);\n\n\t\tlet reset = false;\n\t\tlet next = i;\n\t\tconst lastDisplay = size - display;\n\n\t\tif (loop) {\n\t\t\tif (i > lastDisplay) {\n\t\t\t\treset = true;\n\t\t\t\ti = size;\n\t\t\t\tnext = 0;\n\t\t\t} else if (i < 0) {\n\t\t\t\treset = true;\n\t\t\t\ti = -display;\n\t\t\t\tnext = lastDisplay;\n\t\t\t}\n\t\t} else {\n\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\ti = next;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.swipable = true;\n\t\t}, duration + 32);\n\n\t\tif (type === \"fade\") {\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\treturn;\n\t\t}\n\n\t\tstate.current = i;\n\n\t\tif (!reset) {\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t}, duration + 12);\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.transition = \"none\";\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = transition;\n\t\t\t}, 60);\n\t\t}, duration + 20);\n\t};\n\tconst swipeNext = () => {\n\t\tswipeTo(reverse ? state.current - scroll : state.current + scroll);\n\t};\n\n\tconst swipePrev = () => {\n\t\tswipeTo(reverse ? state.current + scroll : state.current - scroll);\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\te.stopPropagation();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tObject.assign(state, {\n\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\tdragging: true,\n\t\t\ttransition: \"none\",\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst offset =\n\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\toffsetPercent;\n\n\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t}, 0)`;\n\t};\n\n\tconst handleMouseUp = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\n\t\tif (e.changedTouches) {\n\t\t\te = e.changedTouches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst part =\n\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] / total;\n\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\tconst absOffset = Math.abs(offset);\n\n\t\tif (absOffset > dragOffset) {\n\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\tconst p = base + mod;\n\n\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\tswipeTo(to);\n\t\t}\n\n\t\tlistRef.current.style.transform = position || \"\";\n\n\t\tObject.assign(state, {\n\t\t\tdragging: false,\n\t\t\ttransition,\n\t\t});\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tswipeTo,\n\t\tswipeNext,\n\t\tswipePrev,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (!autoplay) return;\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t};\n\t}, [autoplay, interval]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-swiper\",\n\t\t\t\t{\n\t\t\t\t\t\"i-swiper-vertical\": vertical,\n\t\t\t\t\t\"i-swiper-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-swiper-track'\n\t\t\t\tstyle={trackStyle}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={listRef}\n\t\t\t\t\tclassName={classNames(\"i-swiper-list\", {\n\t\t\t\t\t\t\"i-swiper-fade\": type === \"fade\",\n\t\t\t\t\t})}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t[vertical ? \"height\" : \"width\"]: listSize,\n\t\t\t\t\t\ttransform: position,\n\t\t\t\t\t\ttransition: state.transition,\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t>\n\t\t\t\t\t{displayItems.map((item, i) => {\n\t\t\t\t\t\tconst { props: itemProps } = item;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\tactive={i - extra === state.current}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\tgap={gap}\n\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\titemHeight={itemHeight}\n\t\t\t\t\t\t\t\tvertical={vertical}\n\t\t\t\t\t\t\t\t{...itemProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{arrow && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{indicator && (\n\t\t\t\t<div className='i-swiper-indicators'>\n\t\t\t\t\t{indicatorsLoop.map((whatever, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-swiper-indicator\", {\n\t\t\t\t\t\t\t\t\t\"i-indicator-active\":\n\t\t\t\t\t\t\t\t\t\ti ===\n\t\t\t\t\t\t\t\t\t\tMath[loop ? \"floor\" : \"ceil\"](\n\t\t\t\t\t\t\t\t\t\t\t((state.current + size) % size) /\n\t\t\t\t\t\t\t\t\t\t\t\tscroll\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => swipeTo(i * scroll)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderIndicator?.(i)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}) as CompositionSwiper;\n\nSwiper.Item = Item;\n\nexport default Swiper;\n","import { ITabItem } from \"./type\";\n\nconst Item = (props: ITabItem) => {\n\treturn <></>;\n};\n\nexport default Item;\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport { MoreHorizRound } from \"@ricons/material\";\nimport { useReactive, useSize } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { pick } from \"radash\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n} from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs, TTabKey } from \"./type\";\n\ntype TState = {\n\tactive?: TTabKey;\n\tprevActive?: TTabKey;\n\tbarStyle: CSSProperties;\n\tcachedTabs: TTabKey[];\n\toverflow: boolean;\n\tmore: ITabItem[];\n\ttabs: ITabItem[];\n};\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\tnavsJustify = \"start\",\n\t\tbar = true,\n\t\thideMore,\n\t\tbarClass,\n\t\trenderMore = () => (\n\t\t\t<Button flat square size='small'>\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\n\t\t\t</Button>\n\t\t),\n\t\tonTabChange,\n\t\t...rest\n\t} = props;\n\n\tconst navRefs = useRef<HTMLElement[]>([]);\n\tconst barRef = useRef<HTMLSpanElement>(null);\n\tconst navsRef = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<TState>({\n\t\tactive,\n\t\tprevActive: undefined,\n\t\tbarStyle: {},\n\t\tcachedTabs: [],\n\t\toverflow: false,\n\t\tmore: [],\n\t\ttabs: [],\n\t});\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst size = useSize(navsRef);\n\n\tuseEffect(() => {\n\t\tif (!items) {\n\t\t\tif (!children) {\n\t\t\t\tstate.tabs = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.tabs = Children.map(children, (node, i) => {\n\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\tkey?: TTabKey;\n\t\t\t\t\tprops?: any;\n\t\t\t\t};\n\t\t\t\tconst { title, children, content, keepDOM } = nodeProps;\n\n\t\t\t\tconst cloned = children\n\t\t\t\t\t? typeof children === \"string\"\n\t\t\t\t\t\t? children\n\t\t\t\t\t\t: pick(children, [\"props\", \"type\", \"$$typeof\", \"ref\"])\n\t\t\t\t\t: content;\n\n\t\t\t\treturn {\n\t\t\t\t\tkey: key || String(i),\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent: cloned,\n\t\t\t\t\tkeepDOM,\n\t\t\t\t};\n\t\t\t}) as ITabItem[];\n\n\t\t\treturn;\n\t\t}\n\n\t\tstate.tabs = items.map((item, i) => {\n\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\n\t\t\t\treturn { key: item, title: item };\n\t\t\t}\n\t\t\tif (item.key === undefined) {\n\t\t\t\titem.key = i;\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t}, [children, items]);\n\n\tconst add = (tab: ITabItem) => {\n\t\tconst { key } = tab;\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i > -1) {\n\t\t\topen(state.tabs[i].key ?? i);\n\t\t\treturn;\n\t\t}\n\n\t\tconst l = state.tabs.length;\n\t\tconst tkey = tab.key ?? l;\n\t\tstate.tabs.push({ ...tab, key: tkey });\n\t\topen(tkey);\n\t};\n\n\tconst close = (key: TTabKey) => {\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i < 0) return;\n\n\t\tstate.tabs.splice(i, 1);\n\n\t\tif (state.active !== key) return;\n\n\t\tconst next = state.tabs[i] || state.tabs[i - 1];\n\t\topen(state.prevActive ?? next?.key ?? \"\");\n\t};\n\n\tconst open = (key: TTabKey) => {\n\t\tif (key === state.active) {\n\t\t\tif (!toggable) return;\n\n\t\t\tonTabChange?.(undefined, key);\n\t\t\tstate.active = undefined;\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\tstate.prevActive = state.active;\n\t\tonTabChange?.(key, state.active);\n\t\tstate.active = key;\n\t};\n\n\tconst handleMouseWheel = (e) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (vertical) return;\n\n\t\tnavsRef.current?.scrollBy({\n\t\t\tleft: e.deltaY + e.deltaX,\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!size || hideMore) return;\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n\t\tconst { width, height } = size;\n\n\t\tstate.overflow = scrollHeight > height || scrollWidth > width;\n\n\t\tif (!state.overflow) return;\n\n\t\tnavRefs.current.map((nav, i) => {\n\t\t\tif (!nav) return;\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\n\t\t\t\tif (!state.tabs[i]) return;\n\t\t\t\tstate.tabs[i].intersecting = visible;\n\t\t\t\tstate.more = state.tabs.filter((tab) => !tab.intersecting);\n\t\t\t});\n\t\t});\n\t}, [size, hideMore, state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!bar || type === \"pane\" || state.active === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = state.tabs.findIndex((tab) => tab.key === state.active);\n\n\t\tsetTimeout(() => {\n\t\t\tconst nav = navRefs.current[index];\n\n\t\t\tif (!nav) return;\n\n\t\t\tif (state.tabs[index].keepDOM && state.active) {\n\t\t\t\tconst i = state.cachedTabs.findIndex((k) => k === state.active);\n\t\t\t\ti < 0 && state.cachedTabs.unshift(state.active);\n\t\t\t}\n\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n\t\t\tconst isLine = type === \"line\";\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n\t\t\t};\n\t\t}, 16);\n\t}, [state.active, bar]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || state.active === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore) return;\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = i, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": state.active === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={state.barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && state.overflow && state.more.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{state.more.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = i, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = state.active === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(state.more)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\tconst { key = i, content } = tab;\n\t\t\t\t\tconst isActive = state.active === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && state.cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n","import { KeyboardArrowDownRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useState } from \"react\";\nimport Checkbox from \"../checkbox\";\nimport Icon from \"../icon\";\nimport { ITree, ITreeHeader, PropsTreeItem } from \"./type\";\n\ninterface ITreeList extends Omit<ITree, \"nodeProps\"> {\n\tnodeProps: {\n\t\tkey: string;\n\t\ttitle: string;\n\t\tchildren: string;\n\t};\n}\n\nexport function TreeList(props: ITreeList) {\n\tconst {\n\t\tdata = [],\n\t\tdepth = 0,\n\t\tround,\n\t\tstyle,\n\t\tclassName,\n\t\tparent,\n\t\tnodeProps,\n\t\t...restProps\n\t} = props;\n\n\tconst contents = data.map((item, i) => {\n\t\tconst { type } = item;\n\t\tconst title = item[nodeProps.title];\n\t\tconst itemKey =\n\t\t\titem[nodeProps.key] ||\n\t\t\t(parent?.key !== undefined ? `${parent.key}-${i}` : `${i}`);\n\n\t\titem.key = itemKey;\n\t\titem.parent = parent;\n\n\t\tif (type === \"title\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className='i-tree-group-title'>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif (type && type !== \"item\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className={`i-tree-type-${type}`}>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TreeItem\n\t\t\t\tkey={itemKey}\n\t\t\t\tindex={i}\n\t\t\t\titem={item}\n\t\t\t\tdepth={depth}\n\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t);\n\t});\n\n\tif (depth > 0) return <>{contents}</>;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree\", className, {\n\t\t\t\t\"i-tree-round\": round,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{contents}\n\t\t</div>\n\t);\n}\n\nconst Header = (props: ITreeHeader) => {\n\tconst { as: Tag = \"a\", href, selected, children, ...restProps } = props;\n\n\tconst className = classNames(\"i-tree-item-header\", {\n\t\t\"i-tree-item-selected\": selected,\n\t});\n\n\tif (typeof Tag === \"string\") {\n\t\treturn (\n\t\t\t<Tag href={href} className={className} {...restProps}>\n\t\t\t\t{children}\n\t\t\t</Tag>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tag to={href || \"\"} className={className} {...restProps}>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport const TreeItem = (props: PropsTreeItem) => {\n\tconst {\n\t\titem,\n\t\tdepth = 0,\n\t\tindex,\n\t\tselected,\n\t\tchecked = [],\n\t\tpartofs = {},\n\t\tcheckable,\n\t\tnodeProps,\n\t\trenderExtra,\n\t\tonItemClick,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\n\tconst { as, key = \"\", href, icon, title, expanded, disabled } = item;\n\tconst children = item[nodeProps.children];\n\n\tconst [expand, setExpand] = useState(expanded);\n\n\tconst handleExpand = (e: MouseEvent<HTMLElement>, fromToggle?: boolean) => {\n\t\tif (fromToggle) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (disabled || !children?.length) return;\n\n\t\tsetExpand((v) => !v);\n\t};\n\n\tconst handleItemClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\thandleExpand(e);\n\t\tonItemClick?.(item, e);\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tconst handleItemCheck = (checked) => onItemCheck?.(item, checked, []);\n\tconst itemChecked = checked.includes(key);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree-item\", {\n\t\t\t\t\"i-tree-expand\": expand,\n\t\t\t})}\n\t\t>\n\t\t\t<Header\n\t\t\t\tas={as}\n\t\t\t\thref={href}\n\t\t\t\tstyle={{ paddingLeft: `${depth * 1.5 + 0.5}em` }}\n\t\t\t\tselected={selected === key}\n\t\t\t\tonClick={handleItemClick}\n\t\t\t>\n\t\t\t\t{checkable && (\n\t\t\t\t\t<Checkbox.Item\n\t\t\t\t\t\tvalue={itemChecked}\n\t\t\t\t\t\tpartof={!itemChecked && partofs[key]}\n\t\t\t\t\t\tclassName='i-tree-checkbox'\n\t\t\t\t\t\tonChange={handleItemCheck}\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{icon && <span className='i-tree-item-icon'>{icon}</span>}\n\n\t\t\t\t<span className='i-tree-item-title'>{title}</span>\n\n\t\t\t\t{renderExtra?.(item)}\n\n\t\t\t\t{children && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<KeyboardArrowDownRound />}\n\t\t\t\t\t\tclassName='i-tree-toggle'\n\t\t\t\t\t\tonClick={(e) => handleExpand(e, true)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Header>\n\n\t\t\t{children?.length && (\n\t\t\t\t<div className='i-tree-item-content'>\n\t\t\t\t\t<TreeList\n\t\t\t\t\t\tdata={children}\n\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\tcheckable={checkable}\n\t\t\t\t\t\tparent={item}\n\t\t\t\t\t\tpartofs={partofs}\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t\t\trenderExtra={renderExtra}\n\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\tonItemSelect={onItemSelect}\n\t\t\t\t\t\tonItemCheck={onItemCheck}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useImperativeHandle } from \"react\";\nimport \"./index.css\";\nimport { TreeList } from \"./item\";\nimport { ITree, ITreeItem } from \"./type\";\n\nconst defaultNodeProps = {\n\tkey: \"key\",\n\ttitle: \"title\",\n\tchildren: \"children\",\n};\n\nconst Tree = (props: ITree) => {\n\tconst {\n\t\tdata = [],\n\t\tref,\n\t\tselected,\n\t\tchecked = [],\n\t\tdisabledRelated,\n\t\tnodeProps,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tselected,\n\t\tchecked,\n\t\tpartofs: {} as Record<string, boolean>,\n\t\tnodeMaps: new Map(),\n\t});\n\tconst oNodeProps = Object.assign({}, defaultNodeProps, nodeProps);\n\n\tconst isChecked = (key?: string) => state.checked.includes(key || \"\");\n\n\tconst checkItem = (\n\t\titem: ITreeItem,\n\t\tchecked: boolean,\n\t\tdirection?: \"root\" | \"leaf\"\n\t) => {\n\t\tconst { key = \"\", parent, children } = item;\n\t\tconst shouldChanged = { [key]: checked };\n\t\tconst partofs = { [key]: false };\n\n\t\tif (disabledRelated) return [shouldChanged];\n\n\t\tif (checked) {\n\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\tconst hasUnchecked = parent.children?.some(\n\t\t\t\t\t(o) => o.key !== key && !isChecked(o.key)\n\t\t\t\t);\n\n\t\t\t\tconst [changes, parts] = checkItem(parent, true, \"root\");\n\n\t\t\t\tif (!hasUnchecked) {\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t}\n\n\t\t\t\tObject.assign(partofs, hasUnchecked ? parts : {}, {\n\t\t\t\t\t[parent.key as string]: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\tchildren.map((o) => {\n\t\t\t\t\tif (isChecked(o.key)) return;\n\n\t\t\t\t\tconst [changes] = checkItem(o, true, \"leaf\");\n\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [shouldChanged, partofs];\n\t\t}\n\n\t\tif (parent && direction !== \"leaf\") {\n\t\t\tconst [changes, parts] = checkItem(parent, false, \"root\");\n\n\t\t\tObject.assign(shouldChanged, changes);\n\n\t\t\tconst hasChecked = parent.children?.some(\n\t\t\t\t(o) => isChecked(o.key) && o.key !== key\n\t\t\t);\n\n\t\t\tObject.assign(partofs, hasChecked ? {} : parts, {\n\t\t\t\t[parent.key as string]: hasChecked,\n\t\t\t\t[key]: false,\n\t\t\t});\n\t\t}\n\t\tif (children?.length && direction !== \"root\") {\n\t\t\tchildren.map((o) => {\n\t\t\t\tconst [changes] = checkItem(o, false, \"leaf\");\n\n\t\t\t\tif (!isChecked(o.key)) return;\n\n\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t});\n\t\t}\n\n\t\treturn [shouldChanged, partofs];\n\t};\n\n\tconst handleCheck = (item: ITreeItem, checked: boolean) => {\n\t\tconst [shouldChanged, partofs] = checkItem(item, checked);\n\t\tconst changedKeys = Object.keys(shouldChanged);\n\n\t\tstate.checked = checked\n\t\t\t? Array.from(new Set([...state.checked, ...changedKeys]))\n\t\t\t: state.checked.filter((k) => !changedKeys.includes(k));\n\n\t\tObject.assign(state.partofs, partofs);\n\n\t\tonItemCheck?.(item, checked, state.checked);\n\t};\n\n\tconst handleSelect = (key: string, item: ITreeItem) => {\n\t\tif (!props.selectable) return;\n\n\t\tstate.selected = key;\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tuseEffect(() => {\n\t\tif (selected === undefined) return;\n\n\t\tstate.selected = selected;\n\t}, [selected]);\n\n\tuseEffect(() => {\n\t\tstate.nodeMaps.clear();\n\n\t\tconst { key, children } = oNodeProps;\n\t\tconst recursive = (nodes) => {\n\t\t\tnodes.map((o) => {\n\t\t\t\tstate.nodeMaps.set(o[key], o);\n\n\t\t\t\to[children]?.length > 0 && recursive(o[children]);\n\t\t\t});\n\t\t};\n\n\t\trecursive(data);\n\t}, [data]);\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tgetChecked: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tstate.checked.map((k) => {\n\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\titems.push(item);\n\t\t\t\t});\n\t\t\t\treturn [state.checked, items];\n\t\t\t},\n\t\t\tgetSelected: () => {\n\t\t\t\tconst item = state.nodeMaps.get(state.selected);\n\t\t\t\treturn [state.selected, item];\n\t\t\t},\n\t\t\tgetPartofs: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tconst keys = Object.keys(state.partofs).filter((k) => {\n\t\t\t\t\tconst indeterminate = state.partofs[k];\n\n\t\t\t\t\tif (indeterminate) {\n\t\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn indeterminate;\n\t\t\t\t});\n\n\t\t\t\treturn [keys, items];\n\t\t\t},\n\t\t};\n\t});\n\n\treturn (\n\t\t<TreeList\n\t\t\tdata={data}\n\t\t\tselected={state.selected}\n\t\t\tchecked={state.checked}\n\t\t\tpartofs={state.partofs}\n\t\t\tnodeProps={oNodeProps}\n\t\t\tonItemCheck={handleCheck}\n\t\t\tonItemSelect={handleSelect}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nexport default Tree;\n","import { TFileType } from \"@p/js/usePreview/type\";\nimport { formatBytes, getFileType } from \"@p/js/utils\";\nimport { ListAltRound } from \"@ricons/material\";\nimport { title } from \"radash\";\nimport 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\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 } from \"./type\";\n\nconst Upload = (props: IUpload) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem = renderFile,\n\t\tshouldUpload = () => true,\n\t\tuploader,\n\t\tonChange,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tfiles,\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t\tupdate: 0,\n\t});\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst preview = usePreview();\n\n\tconst trigger = useMemo(() => {\n\t\tif (children) return children;\n\n\t\tswitch (mode) {\n\t\t\tcase \"card\":\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-upload-card-btn color-5'\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tflat\n\t\t\t\t\t\toutline\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlusSharp />} />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<Button className='i-upload-btn' disabled={disabled}>\n\t\t\t\t\t\t<Icon icon={<CloudUploadTwotone />} /> Upload\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t}\n\t}, [mode, children]);\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = Array.from(e.target.files || []) as IFile[];\n\t\tconst { files: before } = state;\n\t\tconst changed: IFile[] = [];\n\n\t\tfiles.map((f) => {\n\t\t\tconst { name, size, type } = f;\n\t\t\tconst same = before.find((pf) => {\n\t\t\t\tconst { name: n, size: s, type: t } = pf;\n\t\t\t\treturn n === name && s === size && t === type;\n\t\t\t});\n\n\t\t\tconst src = URL.createObjectURL(f);\n\t\t\tf.src = src;\n\t\t\tstate.update += 1;\n\n\t\t\tObject.assign(f, {\n\t\t\t\tuid: uid(7),\n\t\t\t\tsrc: f.src || f.name,\n\t\t\t});\n\t\t\t!same && changed.push(f);\n\t\t});\n\n\t\tconst after = [...before, ...changed];\n\n\t\tObject.assign(state, {\n\t\t\tfiles: multiple ? after.slice(0, limit) : [after.at(-1)],\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonFilesChange?.(state.files, changed, e);\n\t\tonChange?.(state.files, e);\n\n\t\thandleUpload(changed);\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleRemove = (i: number) => {\n\t\tconst [...files] = state.files;\n\n\t\tconst changed = files.splice(i, 1);\n\t\tURL.revokeObjectURL(changed[0]?.src || \"\");\n\n\t\tstate.files = files;\n\t\tonFilesChange?.(files, changed);\n\t\tonChange?.(files);\n\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleUpload = async (files: IFile[]) => {\n\t\tif (!uploader) return;\n\n\t\tfiles.forEach(async (file) => {\n\t\t\tif (!shouldUpload(file)) return;\n\n\t\t\tconst result = await uploader(file);\n\t\t\tconst i = state.files.findIndex((f) => f.uid === result.uid);\n\t\t\ti > -1 && (state.files[i] = result);\n\n\t\t\tresult?.status === \"completed\" && onUpload?.(result);\n\t\t});\n\t};\n\n\tconst handlePreview = (i: number) => {\n\t\tpreview({ items: state.files as TPreviewItem[], initial: i });\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\t}, [status, message]);\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\t\t}),\n\t\t[]\n\t);\n\n\tconst { message: msg, files: currentFiles } = state;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={classNames(\"i-input-label-file\", className)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<input\n\t\t\t\t{...restProps}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tref={inputRef}\n\t\t\t\ttype='file'\n\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\tmultiple={multiple}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-upload-inner\", {\n\t\t\t\t\t[`i-upload-${mode}`]: mode !== \"default\",\n\t\t\t\t})}\n\t\t\t\tstyle={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName='i-upload-list'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{currentFiles?.map((file: File, i: number) => (\n\t\t\t\t\t\t<Fragment key={i}>\n\t\t\t\t\t\t\t{renderFile({\n\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\t\tonRemove: handleRemove,\n\t\t\t\t\t\t\t\tonPreview: handlePreview,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t{msg && <span className='i-upload-message'>{msg}</span>}\n\n\t\t\t\t{currentFiles.length < limit && trigger}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Upload;\n"],"names":["TIMEOUT","listener","e","target","parent","closest","$box","$ripple","document","createElement","className","append","createRipple","rect","getBoundingClientRect","size","Math","max","width","height","style","cssText","pageX","left","pageY","top","insertAdjacentElement","offsetHeight","classList","add","setTimeout","remove","triggerRipple","Loading","props","icon","text","absolute","restProps","_jsxs","classNames","inset","children","_jsx","stroke","viewBox","xmlns","fontSize","cx","cy","r","fill","strokeWidth","strokeLinecap","strokeDasharray","strokeDashoffset","formatClass","outline","flat","loading","disabled","block","round","square","secondary","classnames","Button","as","As","ref","href","ripple","onClick","childNodes","key","attrs","stopPropagation","useEffect","documentElement","dataset","addEventListener","to","Toggle","active","activeClass","after","onToggle","state","useReactive","done","toggle","hasAfter","undefined","nextActive","Object","assign","Group","vertical","Icon","rotate","isValidElement","elProps","transform","cloneElement","ToTop","SkipPreviousRound","Affix","position","right","bottom","offset","getContainer","body","hidden","setHidden","useState","hijackChildren","useMemo","Children","map","node","type","container","scrollTo","behavior","debounce","delay","scrollTop","removeEventListener","Badge","content","contentClass","dot","dotSize","rounded","Card","hideShadow","border","header","footer","shadow","TFileType","getPosition","$source","$popup","options","refWindow","gap","align","arrowX","arrowY","arrowPos","rectT","rectC","w","window","innerWidth","h","innerHeight","tl","tt","tr","tb","tw","th","ch","cw","rectPa","offsetParent","offsetLeft","offsetTop","y","x","computePosition","containerSize","targetSize","targetOffset","contentSize","xl","xr","R","yt","yb","T","B","getPointPosition","pw","ph","pl","pt","ow","oh","ol","ot","centerPoint","result","formatOption","option","includes","label","value","formatNumber","precision","thousand","toFixed","points","split","integer","replace","length","renderNode","div","root","createRoot","sto","render","unmount","clearTimeout","getSuffixByUrl","url","match","getFileType","suffix","startsWith","formatBytes","bytes","decimals","dm","i","floor","log","parseFloat","pow","clamp","min","CheckboxItem","name","status","message","partof","onChange","checked","Checkbox","optionInline","labelInline","required","formattedOptions","opt","group","findIndex","item","push","splice","handleChange","Item","Helpericon","CloseRound","uid","Collapse","items","multiple","headerClickable","renderToggle","MinusRound","PlusRound","onCollapse","collapses","nodeProps","title","handleToggle","Array","isArray","k","isActive","handleHeaderClick","Empty","InboxTwotone","getCellStyle","justify","col","row","colSpan","rowSpan","gridArea","insetInline","Cell","column","data","cellEllipsis","onCellClick","onCellDoubleClick","id","fixed","onDoubleClick","MouseMoveEvents","Set","MouseUpEvents","touchable","EVENTS","MOVE","UP","useMouseMove","delete","useMouseUp","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","entry","callback","get","isIntersecting","observe","set","unobserve","disconnect","Resize","index","onWidthChange","resizing","preventDefault","onMouseDown","offsetWidth","values","passive","Arrow","d","Sorter","Row","columns","onRowClick","Header","resizable","sortBy","sortType","onHeaderClick","sorter","renderHeader","order","insetBlockStart","Datagrid","striped","cellPadding","empty","renderLoading","onSort","onScroll","onResize","useRef","scrollbar","rows","widths","styles","o","join","fws","isLeft","sum","slice","reduce","pre","cur","find","sortFn","a","b","sorted","sort","reverse","current","tds","querySelector","from","scrollBarStyle","ScrollContainer","autoHide","autoHeight","autoHeightMax","renderView","ws","prevSortBy","prevSortType","types","t","getNextSorter","Description","colon","labelWidth","labelAlign","equally","gridTemplateColumns","textAlign","Fragment","gridColumn","gridRow","Drawer","visible","backdropClosable","hideCloseButton","keepDOM","onVisibleChange","onClose","toggable","show","init","handleShow","handleHide","createPortal","List","renderLabel","Virtual","itemKey","renderItem","VList","alignItems","Content","trigger","arrow","arrowProps","arrowCSS","pos","Popup","showDelay","hideDelay","fitSize","watchResize","clickOutside","referToWindow","triggerRef","contentRef","toggling","useClickAway","tar","isContain","contains","opacity","action","eventMaps","useCreation","click","hover","onMouseEnter","onMouseLeave","focus","onFocus","onBlur","contextmenu","onContextMenu","none","contentTouch","events","ResizeObserver","useResizeObserver","useLayoutEffect","_Fragment","child","keys","evt","fn","ListItem","Dropdown","minWidth","more","moreProps","Li","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","cacheData","rules","constructor","this","field","PubSub","publish","clear","validate","rule","validator","v","isValid","isAllValid","Promise","resolve","Form","form","initialValues","onEnter","Provider","onKeyDown","keyCode","DefaultContent","footerLeft","okButtonProps","onOk","cancelButtonProps","showHeader","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","customized","setShow","setActive","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","then","unsubscribe","HookModal","useImperativeHandle","config","Text","Tag","weight","decoration","gradient","wave","gradients","backgroundImage","backgroundClip","fontWeight","textDecoration","Circle","pathLength","Number","count","decimal","duration","easing","n","setN","number","z","start","performance","now","diff","raf","requestAnimationFrame","loop","percent","cancelAnimationFrame","pass","animate","Time","seconds","zero","units","time","l","unshift","formatTime","HighLight","keyword","escape","caseSensitive","renderWord","word","source","findAll","searchWords","textToHighlight","autoEscape","chunk","end","highlight","Line","barClass","dragging","renderCursor","onTouchStart","Progress","draggable","toFixedValue","handleMouseDown","touches","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","controlHidden","videoRef","hiddenTO","timeUpdateListener","paused","currentTime","playChangeListener","fsChangeListener","parentElement","fullscreenElement","volumeChangeListener","handlePlay","play","pause","handleStop","handleFullscreen","el","exitFullscreen","requestFullscreen","showControls","clearHiddenTO","handleMouseMove","throttle","interval","stop","fullscreen","getVideo","onMouseMove","onCanPlay","controls","PauseRound","PlayArrowRound","StopRound","FullscreenExitRound","FullscreenRound","VolumeOffRound","VolumeDownRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","handleSwitch","next","before","handleRotate","deg","handleMouseWheel","deltaY","throttleMouseMove","ox","oy","offsetX","offsetY","onWheel","AspectRatioRound","OpenInNewRound","download","FileDownloadOutlined","RotateRightRound","RotateLeftRound","KeyboardArrowLeftRound","KeyboardArrowRightRound","usePreview","modalProps","unMount","Image","initSize","lazyload","fallback","HideImageTwotone","fit","cover","coverClass","previewable","onLoad","onError","wh","preview","handleClick","complete","setAttribute","iSize","objectFit","err","InputContainer","tip","img","Input","initValue","prepend","hideVisible","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","code","clearable","showHelper","Textarea","autoSize","refTextarea","ta","firstChild","scrollHeight","step","Infinity","hideControl","onInput","rest","formatInputValue","replaceAll","handleOperate","param","getFormatNumber","Range","placeholder","range","SyncAltRound","margin","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","callout","close","queue","heights","tops","onShow","bind","onHide","timer","renderItems","MessageItem","alignSelf","error","success","warning","useModal","open","Page","page","setLoading","async","Pagination","defaultPage","total","sibling","prev","simple","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","handlePageChange","p","dotClass","hoverShowClose","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","activeOptions","Select","hideClear","hideArrow","popupProps","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","ColorMethods","HEX","RGB","HSB","Footer","onTypeChange","Handle","color","handle","background","ColorPicker","disabledAlpha","usePanel","syncValue","handleTypeChange","method","handleValueChange","ColorsPanel","panelRender","panel","onChangeComplete","Dates","month","weeks","renderDate","date","disabledDate","onDateClick","today","dayjs","dates","lastDateOfLastMonth","endOf","$W","$D","lastMonthDates","whatever","lastDate","week","isSame","isSameMonth","isToday","handleDateClick","MONTHS","YearMonth","unitMonth","unitYear","renderYear","renderMonth","year","Panel","m","selectedYear","years","selectable","$years","handleOperateMonth","getMoreYears","isUp","_","handleChangeMonth","extend","customParseFormat","FORMATTYPES","FORMAT","Datepicker","format","dayJsValue","handleSetDate","CalendarMonthTwotone","Items","unit","UnitMaps","hh","mm","s","ss","stepH","stepM","stepS","periods","onFallback","period","hour","minute","second","hours","minutes","hasH","hasM","hasS","handleSetTime","pattern","toLowerCase","updateValue","nums","TimePicker","safeValue","AccessTimeRound","defaultOk","defaultCancel","Popconfirm","InfoOutlined","extra","ok","cancel","popconfirmContent","finally","RadioItem","Radio","Resizable","other","minSize","maxSize","line","asPercent","onResizeComplete","Divider","STATUS","defaultRenderIcon","renderIcon","asList","Step","steps","nodes","transition","itemHeight","selfStyle","Swiper","display","scroll","pauseOnHover","dragOffset","indicator","renderIndicator","onBeforeSwipe","onAfterSwipe","listRef","timerRef","swipable","dragStart","initialized","displayItems","listSize","list","head","offsetPercent","trackStyle","indicatorsLoop","clearTimer","swipeTo","reset","lastDisplay","swipeNext","swipePrev","clientY","clientX","changedTouches","dragEnd","part","absOffset","abs","onMouseOver","itemProps","Tabs","tabs","navsJustify","bar","hideMore","renderMore","onTabChange","navRefs","barRef","navsRef","prevActive","barStyle","cachedTabs","overflow","useSize","cloned","pick","String","tab","tkey","scrollBy","deltaX","scrollWidth","nav","intersecting","isLine","navs","flex","TreeList","depth","contents","TreeItem","selected","partofs","checkable","renderExtra","onItemClick","onItemSelect","onItemCheck","expanded","expand","setExpand","handleExpand","fromToggle","itemChecked","paddingLeft","KeyboardArrowDownRound","defaultNodeProps","Tree","disabledRelated","nodeMaps","Map","oNodeProps","isChecked","checkItem","shouldChanged","hasUnchecked","some","changes","parts","hasChecked","recursive","getChecked","getSelected","getPartofs","indeterminate","changedKeys","RenderFile","mode","onRemove","onPreview","CloseBtn","preload","ListAltRound","Upload","cardSize","limit","shouldUpload","uploader","onFilesChange","onUpload","inputRef","PlusSharp","CloudUploadTwotone","handleRemove","changed","URL","revokeObjectURL","handleUpload","forEach","f","handlePreview","getFileList","msg","currentFiles","same","pf","createObjectURL","at"],"mappings":"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"}
|