@ioca/react 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../packages/js/useRipple/index.ts","../packages/components/loading/loading.tsx","../packages/components/button/button.tsx","../packages/components/button/index.tsx","../packages/components/button/toggle.tsx","../packages/components/button/group.tsx","../packages/components/icon/icon.tsx","../packages/components/affix/totop.tsx","../packages/components/affix/affix.tsx","../packages/components/badge/badge.tsx","../packages/components/card/card.tsx","../packages/js/usePreview/type.ts","../packages/js/utils.ts","../packages/components/checkbox/item.tsx","../packages/components/checkbox/checkbox.tsx","../packages/components/utils/helpericon/helpericon.tsx","../packages/components/collapse/collapse.tsx","../packages/components/utils/empty/index.tsx","../packages/components/datagrid/cell.tsx","../packages/components/collapse/item.tsx","../packages/js/hooks.ts","../packages/components/datagrid/resize.tsx","../packages/components/datagrid/sorter.tsx","../packages/components/datagrid/row.tsx","../packages/components/datagrid/datagrid.tsx","../packages/components/description/description.tsx","../packages/components/drawer/drawer.tsx","../packages/components/list/item.tsx","../packages/components/list/list.tsx","../packages/components/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/dropdown/item.tsx","../packages/components/dropdown/dropdown.tsx","../packages/components/editor/controls.tsx","../packages/components/editor/editor.tsx","../packages/components/flex/flex.tsx","../packages/components/form/context.tsx","../packages/components/form/useForm.ts","../packages/components/form/form.tsx","../packages/components/modal/modal.tsx","../packages/components/form/field.tsx","../packages/components/modal/hookModal.tsx","../packages/components/text/text.tsx","../packages/components/progress/circle.tsx","../packages/components/text/index.tsx","../packages/components/text/number.tsx","../packages/components/text/time.tsx","../packages/components/text/highlight.tsx","../packages/components/progress/line.tsx","../packages/components/progress/progress.tsx","../packages/components/video/video.tsx","../packages/js/usePreview/renderFile.tsx","../packages/js/usePreview/content.tsx","../packages/js/usePreview/index.tsx","../packages/components/image/image.tsx","../packages/components/input/container.tsx","../packages/components/image/index.tsx","../packages/components/image/list.tsx","../packages/components/input/input.tsx","../packages/components/input/index.tsx","../packages/components/input/textarea.tsx","../packages/components/input/number.tsx","../packages/components/input/range.tsx","../packages/components/message/message.tsx","../packages/components/modal/index.tsx","../packages/components/modal/useModal.tsx","../packages/components/pagination/page.tsx","../packages/components/pagination/pagination.tsx","../packages/components/tag/tag.tsx","../packages/components/select/options.tsx","../packages/components/select/select.tsx","../packages/components/picker/colors/footer.tsx","../packages/components/picker/colors/handle.tsx","../packages/components/picker/colors/index.tsx","../packages/components/picker/dates/dates.tsx","../packages/components/picker/dates/panel.tsx","../packages/components/picker/dates/index.tsx","../packages/components/picker/time/item.tsx","../packages/components/picker/time/panel.tsx","../packages/components/picker/time/index.tsx","../packages/components/popconfirm/popconfirm.tsx","../packages/components/radio/item.tsx","../packages/components/radio/radio.tsx","../packages/components/resizable/resizable.tsx","../packages/components/step/divider.tsx","../packages/components/step/item.tsx","../packages/components/step/step.tsx","../packages/components/swiper/item.tsx","../packages/components/swiper/swiper.tsx","../packages/components/tabs/item.tsx","../packages/components/tabs/tabs.tsx","../packages/components/tree/item.tsx","../packages/components/tree/tree.tsx","../packages/components/upload/renderFile.tsx","../packages/components/upload/upload.tsx"],"sourcesContent":["import \"./ripple.css\";\n\nconst TIMEOUT = 500;\n\nconst useRipple = () => {\n\tif (document.documentElement.dataset[\"useripple\"]) return;\n\tdocument.documentElement.dataset[\"useripple\"] = \"enable\";\n\n\tdocument.addEventListener(\"mousedown\", listener);\n};\n\nfunction listener(e: MouseEvent) {\n\tconst target = e.target as HTMLElement;\n\tconst parent = target.closest(\"[data-ripple]\") as HTMLElement;\n\n\tif (!target || !parent) return;\n\n\ttriggerRipple(parent, e);\n}\n\nfunction triggerRipple(target: HTMLElement, e: MouseEvent) {\n\tconst [$box, $ripple] = createRipple();\n\tconst rect = target.getBoundingClientRect();\n\tconst size = Math.max(rect.width, rect.height) * 2;\n\n\t$ripple.style.cssText = `\n left: ${e.pageX - rect.left}px;\n top: ${e.pageY - rect.top}px;\n width: ${size}px;\n height: ${size}px;\n transition: all ${TIMEOUT / 1000}s;\n `;\n\ttarget.insertAdjacentElement(\"afterbegin\", $box);\n\ttarget.offsetHeight;\n\t$ripple.classList.add(\"i-ripple-active\");\n\n\tsetTimeout(() => {\n\t\t$box.remove();\n\t}, TIMEOUT);\n}\n\nfunction createRipple() {\n\tconst $box = document.createElement(\"SPAN\");\n\tconst $ripple = document.createElement(\"SPAN\");\n\n\t$box.className = \"i-ripple-container\";\n\t$ripple.className = \"i-ripple\";\n\n\t$box.append($ripple);\n\n\treturn [$box, $ripple];\n}\n\nexport default useRipple;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n","import useRipple from \"@p/js/useRipple\";\nimport classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\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 { Children, cloneElement, useMemo } from \"react\";\nimport Button from \"./button\";\nimport { IButtonGroup } from \"./type\";\n\nexport default function Group(props: IButtonGroup) {\n\tconst { children, vertical, buttonProps, className, style } = props;\n\n\tconst nodes = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tconst { type } = node;\n\n\t\t\tif (type === Button) {\n\t\t\t\treturn cloneElement(\n\t\t\t\t\tnode,\n\t\t\t\t\tObject.assign({}, node.props, buttonProps)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\tvertical ? \"i-btn-group-vertical\" : \"i-btn-group-horizonal\"\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{nodes}\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\nimport { cloneElement, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = (props: IIcon) => {\n\tconst {\n\t\tref,\n\t\ticon,\n\t\tsize = \"1.425em\",\n\t\trotate,\n\t\tstyle,\n\t\tclassName,\n\t\t...restProps\n\t} = props;\n\n\tif (!isValidElement(icon)) return icon;\n\n\tconst iconProps = {\n\t\tref,\n\t\tstyle: {\n\t\t\ttransform: rotate ? `rotate(${rotate}deg)` : undefined,\n\t\t\t...style,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t},\n\t\tclassName: classNames(\"i-icon\", className),\n\t\t...restProps,\n\t};\n\n\treturn cloneElement(icon, iconProps);\n};\n\nexport default Icon;\n","import { SkipPreviousRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport { IAffix } from \"./type\";\n\nfunction ToTop(props: IAffix) {\n\tconst { style, className, onClick } = props;\n\n\treturn (\n\t\t<Button\n\t\t\tsquare\n\t\t\tclassName={classNames(\"i-affix-totop\", className)}\n\t\t\tstyle={{ ...style }}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Icon icon={<SkipPreviousRound />} rotate={90} />\n\t\t</Button>\n\t);\n}\n\nexport default ToTop;\n","import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => document.body,\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst {\n\t\thideShadow,\n\t\tborder,\n\t\tclassName,\n\t\tchildren,\n\t\theader,\n\t\tfooter,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n","import { CSSProperties, ReactNode } from \"react\";\nimport { IModal } from \"../../components/modal/type\";\n\nexport type TPreviewItem = {\n\tsrc: string;\n\tname?: ReactNode;\n\tthumb?: string;\n\trotate?: number;\n\tzoom?: number;\n\tstyle?: CSSProperties;\n\ttype?: TFileType;\n\tsuffix?: string;\n};\n\nexport enum TFileType {\n\tIMAGE = \"IMAGE\",\n\tVIDEO = \"VIDEO\",\n\tAUDIO = \"AUDIO\",\n\tPDF = \"PDF\",\n\tEXCEL = \"EXCEL\",\n\tTXT = \"TXT\",\n\tUNKNOWN = \"UNKNOWN\",\n}\n\nexport interface IPreview {\n\titems: (TPreviewItem | string)[];\n\tinitial?: number;\n\tcontrols?: boolean;\n\tloop?: boolean;\n\tclassName?: string;\n\tstyle?: CSSProperties;\n\tmodalProps?: IModal;\n\trenderImage?: (file: TPreviewItem) => ReactNode;\n\trenderFile?: (file: TPreviewItem) => ReactNode;\n\tonClose?: () => void;\n\tonChange?: (after: number, before?: number) => void;\n\tonZoom?: (scale: number) => void;\n\tonRotate?: (deg: number) => void;\n}\n","import { MouseEvent, ReactNode } from \"react\";\nimport { Root, createRoot } from \"react-dom/client\";\nimport { TFileType } from \"../js/usePreview/type\";\nimport { TOption, TOptions, TRelativeOptions } from \"../type\";\n\ntype TComputePosition = {\n\tcontainerSize: number;\n\ttargetSize: number;\n\ttargetOffset: number;\n\tcontentSize: number;\n\tgap: number;\n\talign?: \"start\" | \"center\" | \"end\";\n};\n\nexport function getPosition(\n\t$source?: HTMLElement | null,\n\t$popup?: HTMLElement | null,\n\toptions: TRelativeOptions = {}\n): [\n\tx: number,\n\ty: number,\n\tz: {\n\t\tarrowX: number;\n\t\tarrowY: number;\n\t\tarrowPos: string;\n\t}\n] {\n\tconst { refWindow, gap = 0, offset = 0, position = \"top\", align } = options;\n\n\tif (!$source || !$popup)\n\t\treturn [\n\t\t\t0,\n\t\t\t0,\n\t\t\t{\n\t\t\t\tarrowX: 0,\n\t\t\t\tarrowY: 0,\n\t\t\t\tarrowPos: \"bottom\",\n\t\t\t},\n\t\t];\n\n\tconst rectT = $source.getBoundingClientRect();\n\tconst rectC = $popup.getBoundingClientRect();\n\n\tlet w = window.innerWidth;\n\tlet h = window.innerHeight;\n\tlet {\n\t\tleft: tl,\n\t\ttop: tt,\n\t\tright: tr,\n\t\tbottom: tb,\n\t\twidth: tw,\n\t\theight: th,\n\t} = rectT;\n\tconst { height: ch, width: cw } = rectC;\n\n\tif (!refWindow) {\n\t\tconst rectPa = $source.offsetParent?.getBoundingClientRect();\n\n\t\tw = rectPa?.width || w;\n\t\th = rectPa?.height || h;\n\t\ttl = $source.offsetLeft;\n\t\ttt = $source.offsetTop;\n\t\ttr = tl + rectT.width;\n\t\ttb = tt + rectT.height;\n\t}\n\n\tlet y = 0;\n\tlet x = 0;\n\tlet arrowX = 0;\n\tlet arrowY = 0;\n\tlet arrowPos = \"bottom\";\n\n\tswitch (position) {\n\t\tcase \"left\":\n\t\tcase \"right\":\n\t\t\ty =\n\t\t\t\tth !== ch\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: h,\n\t\t\t\t\t\t\ttargetSize: th,\n\t\t\t\t\t\t\ttargetOffset: tt,\n\t\t\t\t\t\t\tcontentSize: ch,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tt;\n\t\t\tarrowY = y < tt ? tt - y + th / 2 : th / 2;\n\n\t\t\tconst xl = tl - offset - cw;\n\t\t\tconst xr = tr + offset + cw;\n\n\t\t\tif (position === \"left\") {\n\t\t\t\tconst R = xl < 0 && xr <= w;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tconst R = w > xr || xl < 0;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\tcase \"bottom\":\n\t\t\tx =\n\t\t\t\ttw !== cw\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: w,\n\t\t\t\t\t\t\ttargetOffset: tl,\n\t\t\t\t\t\t\ttargetSize: tw,\n\t\t\t\t\t\t\tcontentSize: cw,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tl;\n\t\t\tarrowX = x > tl ? cw / 2 : tl - x + tw / 2;\n\n\t\t\tconst yt = tt - offset - ch;\n\t\t\tconst yb = tb + offset + ch;\n\t\t\tif (position === \"top\") {\n\t\t\t\tconst T = yt < 0 && yb <= h;\n\t\t\t\ty = T ? tb + offset : yt;\n\t\t\t\tarrowY = T ? 0 : ch;\n\t\t\t\tarrowPos = T ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\tconst B = h > yb || yt < 0;\n\t\t\t\ty = B ? tb + offset : yt;\n\t\t\t\tarrowY = B ? 0 : ch;\n\t\t\t\tarrowPos = B ? \"top\" : \"bottom\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn [\n\t\tx,\n\t\ty,\n\t\t{\n\t\t\tarrowX,\n\t\t\tarrowY,\n\t\t\tarrowPos,\n\t\t},\n\t];\n}\n\nexport function getPointPosition(e: MouseEvent, content: HTMLElement) {\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst parent = content.offsetParent;\n\tlet pw,\n\t\tph,\n\t\tpl = 0,\n\t\tpt = 0;\n\n\tif (parent) {\n\t\tconst {\n\t\t\twidth: ow,\n\t\t\theight: oh,\n\t\t\tleft: ol,\n\t\t\ttop: ot,\n\t\t} = parent.getBoundingClientRect();\n\t\tconst st = parent.scrollTop ?? 0;\n\n\t\tpw = ow;\n\t\tph = oh;\n\t\tpt = ot - st;\n\t\tpl = ol;\n\t} else {\n\t\tpw = window.innerWidth;\n\t\tph = window.innerHeight;\n\t}\n\tconst x = e.pageX - pl;\n\tconst y = e.pageY - pt;\n\n\tconst left = x + w >= pw ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= ph ? (y - h > 0 ? y - h : y) : y;\n\n\treturn [left, top];\n}\n\nfunction computePosition({\n\tcontainerSize,\n\ttargetSize,\n\ttargetOffset,\n\tcontentSize,\n\tgap,\n\talign = \"center\",\n}: TComputePosition) {\n\tconst centerPoint = targetOffset + targetSize / 2;\n\n\tswitch (align) {\n\t\tcase \"start\":\n\t\t\treturn targetOffset + contentSize > containerSize\n\t\t\t\t? containerSize - contentSize - gap\n\t\t\t\t: targetOffset;\n\t\tcase \"center\":\n\t\t\tif (targetSize >= contentSize) {\n\t\t\t\treturn centerPoint - contentSize / 2;\n\t\t\t}\n\n\t\t\tif (centerPoint + contentSize / 2 + gap > containerSize) {\n\t\t\t\treturn targetOffset + targetSize - contentSize;\n\t\t\t}\n\n\t\t\tif (centerPoint - contentSize / 2 - gap < 0) {\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\treturn centerPoint - contentSize / 2;\n\t\tcase \"end\":\n\t\t\tconst result = targetOffset + targetSize - contentSize;\n\t\t\treturn result > 0 ? result : gap;\n\t\tdefault:\n\t\t\treturn centerPoint - contentSize / 2;\n\t}\n}\n\nexport function formatOption(options: TOptions): TOption[] {\n\treturn options.map((option) =>\n\t\t[\"string\", \"number\"].includes(typeof option)\n\t\t\t? { label: option, value: option }\n\t\t\t: option\n\t) as TOption[];\n}\n\nexport function animate(\n\tfrom: number,\n\tto: number,\n\tduration: number = 1000,\n\tcallback?: (v: number) => void,\n\teasing: (t: number) => number = (t) => 1 - Math.pow(1 - t, 4)\n) {\n\tconst start = performance.now();\n\tconst diff = to - from;\n\tlet raf = requestAnimationFrame(loop);\n\n\tfunction loop() {\n\t\traf = requestAnimationFrame(loop);\n\n\t\tconst past = performance.now() - start;\n\t\tlet percent = past / duration;\n\n\t\tif (percent >= 1) {\n\t\t\tpercent = 1;\n\t\t\tcancelAnimationFrame(raf);\n\t\t}\n\n\t\tconst pass = diff * easing(percent);\n\t\tcallback?.(pass);\n\t}\n}\n\nexport function formatNumber(\n\tvalue: number,\n\toptions: {\n\t\tprecision?: number;\n\t\tthousand?: string;\n\t} = {}\n) {\n\tconst { precision, thousand } = options;\n\n\tconst result = value.toFixed(precision);\n\n\tif (!thousand) return result;\n\n\tconst points = result.split(\".\");\n\tconst integer = points[0].replace(\n\t\t/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g,\n\t\t`$&${thousand}`\n\t);\n\n\tif (points.length === 1) return integer;\n\n\treturn `${integer}.${points[1]}`;\n}\n\nexport function renderNode(node: ReactNode, container = document.body) {\n\tconst div: HTMLDivElement | null = document.createElement(\"div\");\n\tcontainer.append(div);\n\n\tconst root: Root | null = createRoot(div);\n\tconst sto = setTimeout(() => {\n\t\troot?.render(node);\n\t}, 0);\n\n\treturn () => {\n\t\tdiv?.remove();\n\t\troot?.unmount();\n\t\tsto && clearTimeout(sto);\n\t};\n}\n\nexport function getSuffixByUrl(url: string) {\n\treturn url.match(/\\.([^\\./\\?]+)($|\\?)/)?.[1];\n}\n\nexport function getFileType(suffix: string, type?: string): TFileType {\n\tswitch (true) {\n\t\tcase [\"jpg\", \"jpeg\", \"png\", \"webp\", \"svg\"].includes(suffix) ||\n\t\t\ttype?.startsWith(\"image/\"):\n\t\t\treturn TFileType[\"IMAGE\"];\n\t\tcase [\"mp4\", \"avi\"].includes(suffix) || type?.startsWith(\"video/\"):\n\t\t\treturn TFileType[\"VIDEO\"];\n\t\tdefault:\n\t\t\treturn TFileType[\"UNKNOWN\"];\n\t}\n}\n\nexport function fullScreen(el: HTMLElement) {\n\tel.requestFullscreen?.();\n}\n\nexport function exitFullScreen() {\n\tdocument.exitFullscreen?.();\n}\n\nexport function formatTime(\n\ttime: number,\n\toptions?: {\n\t\tzero?: boolean;\n\t\tunits?: string[];\n\t}\n) {\n\tconst result: string[] = [];\n\tconst { zero = true, units = [\"\", \":\", \":\"] } = options || {};\n\n\tconst l = units.length;\n\tlet i = 0;\n\n\twhile (i < l) {\n\t\tif (time <= 0 && i > 1) break;\n\n\t\tconst n = Math.round(time % 60);\n\n\t\ttime = Math.floor(time / 60);\n\n\t\tresult.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);\n\t}\n\n\treturn result.join(\"\");\n}\n\nexport function getNextSorter(\n\tprevSortBy: string,\n\tprevSortType: string,\n\tsortBy: string\n): [sortBy: string, sortType: string] {\n\tconst types = [\"desc\", \"asc\"];\n\n\tif (prevSortBy === sortBy) {\n\t\tconst i = types.findIndex((t) => t === prevSortType) + 1;\n\t\tconst type = types[i] || \"\";\n\t\tconst by = type === \"\" ? \"\" : sortBy;\n\n\t\treturn [by, type];\n\t}\n\n\treturn [sortBy, \"desc\"];\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n\tif (!+bytes) return \"0 Bytes\";\n\n\tconst k = 1024;\n\tconst dm = decimals < 0 ? 0 : decimals;\n\tconst sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n\treturn value < min ? min : value > max ? max : value;\n}\n\nexport const arrayMove = (array, fromIndex: number, toIndex: number) => {\n\tif (toIndex >= array.length) {\n\t\tlet k = toIndex - array.length + 1;\n\t\twhile (k--) {\n\t\t\tarray.push(undefined);\n\t\t}\n\t}\n\tarray.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);\n\treturn array;\n};\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport { ICheckboxItem } from \"./type\";\n\nexport default function CheckboxItem(props: ICheckboxItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = false,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tdisabled,\n\t\tpartof,\n\t\tchildren,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst checked = e.target.checked;\n\n\t\tObject.assign(state, {\n\t\t\tvalue: checked,\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonChange?.(checked, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${state.status}`]: state.status !== \"normal\",\n\t\t\t\t\tdisabled,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype='checkbox'\n\t\t\t\tname={name}\n\t\t\t\tclassName={classNames(\"i-checkbox-input\", {\n\t\t\t\t\t[`i-checkbox-${type}`]: !partof,\n\t\t\t\t\t\"i-checkbox-partof\": partof,\n\t\t\t\t})}\n\t\t\t\tchecked={state.value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-checkbox-text'>{children || label}</span>\n\n\t\t\t{state.message && (\n\t\t\t\t<span className='i-checkbox-message'>*{state.message}</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{\n\t\tvalue: any;\n\t}>({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...state.value];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tstate.value = group;\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-checkbox-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CheckboxItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={state.value.includes(option.value)}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n","import { CloseRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { createElement } from \"react\";\nimport Icon from \"../../icon\";\nimport \"./index.css\";\nimport { IHelperIcon } from \"./type\";\n\nconst Helpericon = (props: IHelperIcon) => {\n\tconst {\n\t\tas = \"a\",\n\t\tactive,\n\t\tclassName,\n\t\ticon = <CloseRound />,\n\t\t...restProps\n\t} = props;\n\n\tif (!active) return <></>;\n\n\treturn createElement(\n\t\tas,\n\t\t{\n\t\t\tclassName: classNames(\"i-helpericon\", className),\n\t\t\t...restProps,\n\t\t},\n\t\t[\n\t\t\tcreateElement(Icon, {\n\t\t\t\tkey: uid(3),\n\t\t\t\ticon,\n\t\t\t}),\n\t\t]\n\t);\n};\n\nexport default Helpericon;\n","import { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { ICollapse, ICollapseItem, TKey } from \"./type\";\n\nconst Collapse = (props: ICollapse) => {\n\tconst {\n\t\tactive,\n\t\titems,\n\t\tmultiple,\n\t\tborder,\n\t\theaderClickable,\n\t\tclassName,\n\t\tchildren,\n\t\trenderToggle = (active: boolean) =>\n\t\t\tactive ? <MinusRound /> : <PlusRound />,\n\t\tonCollapse,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t});\n\n\tconst collapses = useMemo(() => {\n\t\tif (!items) {\n\t\t\tif (!children) return [];\n\n\t\t\treturn (\n\t\t\t\tChildren.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: TKey;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst { title, children, content, disabled, ...restProps } =\n\t\t\t\t\t\tnodeProps;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...restProps,\n\t\t\t\t\t\tkey: key || i,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tcontent: children || content,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t};\n\t\t\t\t}) || []\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t}, [children]);\n\n\tconst handleHeaderClick = (item: ICollapseItem) => {\n\t\tif (!headerClickable) return;\n\n\t\thandleToggle(item);\n\t};\n\n\tconst handleToggle = (item: ICollapseItem, e?) => {\n\t\tconst { key, disabled } = item;\n\t\te?.stopPropagation();\n\t\tif (disabled) return;\n\n\t\tif (!multiple) {\n\t\t\tstate.active = state.active === key ? undefined : key;\n\t\t\tonCollapse?.(key as TKey, state.active !== undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Array.isArray(state.active)) state.active = [];\n\n\t\tconst i = state.active.findIndex((k) => k === key);\n\n\t\tif (i > -1) {\n\t\t\tstate.active.splice(i, 1);\n\t\t} else {\n\t\t\tkey !== undefined && state.active.push(key);\n\t\t}\n\t\tonCollapse?.(key as TKey, i < 0);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-collapse\",\n\t\t\t\t{\n\t\t\t\t\t\"i-collapse-bordered\": border,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{collapses.map((item) => {\n\t\t\t\tconst {\n\t\t\t\t\tkey,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps\n\t\t\t\t} = item;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? ((state.active as TKey[]) || []).includes(key)\n\t\t\t\t\t: state.active === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tclassName={classNames(\"i-collapse-item\", className, {\n\t\t\t\t\t\t\t\"i-collapse-active\": isActive,\n\t\t\t\t\t\t\t\"i-collapse-disabled\": disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='i-collapse-header'\n\t\t\t\t\t\t\tonClick={() => handleHeaderClick(item)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\tclassName='i-collapse-toggle'\n\t\t\t\t\t\t\t\ticon={renderToggle(isActive)}\n\t\t\t\t\t\t\t\tonClick={(e) => handleToggle(item, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className='i-collapse-content'>{content}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCollapse.Item = Item;\n\nexport default Collapse;\n","import { InboxTwotone } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport default function Empty(props) {\n\tconst { className, ...restProps } = props;\n\n\treturn (\n\t\t<InboxTwotone\n\t\t\tclassName={classNames(\"i-empty\", className)}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\nimport { ICell, IColumn } from \"./type\";\n\nexport function getCellStyle({\n\tjustify,\n\tcol,\n\trow,\n\tcolSpan = 1,\n\trowSpan = 1,\n}: Pick<IColumn, \"justify\" | \"fixed\"> & {\n\tcol: number;\n\trow: number;\n\tcolSpan?: number;\n\trowSpan?: number;\n\tisHeader?: boolean;\n}) {\n\tconst style = {\n\t\t\"--datagrid-justify\": justify,\n\t\tgridArea: `${row + 1} / ${col + 1} / ${row + 1 + rowSpan} / ${\n\t\t\tcol + 1 + colSpan\n\t\t}`,\n\t\tinsetInline: `var(--datagrid-cell-inset-${col})`,\n\t};\n\n\treturn style;\n}\n\nexport function Cell(props: ICell) {\n\tconst {\n\t\tcolumn,\n\t\trow,\n\t\tcol,\n\t\tdata,\n\t\tcellEllipsis,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\tconst { id, fixed, justify, rowSpan, render } = column;\n\tconst style = getCellStyle({ justify, fixed, col, row, rowSpan });\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t[`i-datagrid-cell-fixed-${fixed}`]: fixed,\n\t\t\t})}\n\t\t\tdata-col={id}\n\t\t\tstyle={style}\n\t\t\tonClick={(e) => onCellClick?.(data, column, row, col, e)}\n\t\t\tonDoubleClick={(e) =>\n\t\t\t\tonCellDoubleClick?.(data, column, row, col, e)\n\t\t\t}\n\t\t>\n\t\t\t{render?.(data[id], data, col) ?? (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-datagrid-cell-content\", {\n\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\": cellEllipsis,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{data[id]}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { ICollapseItem } from \"./type\";\n\nexport default function Item(props: ICollapseItem) {\n\treturn <></>;\n}\n","import { useEffect } from \"react\";\n\ntype TMouseEvent = (e: MouseEvent) => void;\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\ntype TEventOption = {\n\tdisabled?: boolean;\n};\n\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst KeydownEvents = new Set<TKeyboardEvent>();\n\nconst touchable = \"ontouchend\" in document;\nconst EVENTS: any = {\n\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\tUP: touchable ? \"touchend\" : \"mouseup\",\n\tKEYDOWN: \"keydown\",\n};\n\ndocument.addEventListener(\n\tEVENTS.MOVE,\n\t(e: MouseEvent) => {\n\t\tfor (const listener of MouseMoveEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t},\n\t{ passive: false }\n);\n\ndocument.addEventListener(EVENTS.UP, (e) => {\n\tfor (const listener of MouseUpEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\ndocument.addEventListener(EVENTS.KEYDOWN, (e) => {\n\tfor (const listener of KeydownEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseMoveEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseMoveEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tKeydownEvents.add(listener);\n\t\treturn () => {\n\t\t\tKeydownEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\n\tconst WM = new WeakMap();\n\tconst IO = new IntersectionObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\n\t\t});\n\t}, configs);\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\tWM.set(target, callback);\n\t\ttarget && IO.observe(target);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n\nexport function useResizeObserver() {\n\tconst WM = new WeakMap();\n\tconst IO = new ResizeObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target);\n\t\t});\n\t});\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\ttarget && IO.observe(target);\n\t\tWM.set(target, callback);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\n\nexport default function Resize(props) {\n\tconst { index, onWidthChange } = props;\n\tconst state = useReactive({\n\t\tresizing: false,\n\t\tx: 0,\n\t\twidth: 0,\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst width = (tar.offsetParent as HTMLElement).offsetWidth;\n\n\t\tObject.assign(state, {\n\t\t\tx: e.pageX,\n\t\t\tresizing: true,\n\t\t\twidth,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tconst after = state.width + e.pageX - state.x;\n\t\tif (after <= 24) return;\n\n\t\tonWidthChange(index, after);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<i\n\t\t\tclassName='i-datagrid-resizor'\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Arrow = (props) => (\n\t<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n\t\t<g fill='none'>\n\t\t\t<path\n\t\t\t\td='M9 17.898c0 1.074 1.265 1.648 2.073.941l6.31-5.522a1.75 1.75 0 0 0 0-2.634l-6.31-5.522C10.265 4.454 9 5.028 9 6.102v11.796z'\n\t\t\t\tfill='currentColor'\n\t\t\t></path>\n\t\t</g>\n\t</svg>\n);\n\nexport default function Sorter(props) {\n\tconst { type } = props;\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-datagrid-sorter\", {\n\t\t\t\t[`i-datagrid-sorter-${type}`]: type,\n\t\t\t})}\n\t\t>\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t</a>\n\t);\n}\n","import classNames from \"classnames\";\nimport { Cell, getCellStyle } from \"./cell\";\nimport Resize from \"./resize\";\nimport Sorter from \"./sorter\";\nimport { IHeader, IRow } from \"./type\";\n\nexport default function Row(props: IRow) {\n\tconst {\n\t\trow,\n\t\tdata,\n\t\tcolumns,\n\t\tcellEllipsis,\n\t\tonRowClick,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-row' onClick={() => onRowClick?.(data, row)}>\n\t\t\t{columns.map((col, i) => (\n\t\t\t\t<Cell\n\t\t\t\t\tkey={i}\n\t\t\t\t\tcolumn={col}\n\t\t\t\t\tcol={i}\n\t\t\t\t\trow={row}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function Header(props: IHeader) {\n\tconst {\n\t\tcolumns,\n\t\tresizable,\n\t\tcellEllipsis,\n\t\tsortBy,\n\t\tsortType,\n\t\tonWidthChange,\n\t\tonHeaderClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-header i-datagrid-row'>\n\t\t\t{columns.map((column, col) => {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\ttitle,\n\t\t\t\t\tfixed,\n\t\t\t\t\tcolSpan,\n\t\t\t\t\tsorter,\n\t\t\t\t\tjustify,\n\t\t\t\t\trenderHeader,\n\t\t\t\t} = column;\n\t\t\t\tconst style = getCellStyle({\n\t\t\t\t\tjustify,\n\t\t\t\t\trow: 0,\n\t\t\t\t\tcol,\n\t\t\t\t\tcolSpan,\n\t\t\t\t});\n\n\t\t\t\tconst order = sortBy === id ? sortType : \"\";\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\tdata-col={id}\n\t\t\t\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t\t\t\t\"i-datagrid-has-sorter\": sorter,\n\t\t\t\t\t\t\t\"i-datagrid-cell-fixed\": fixed,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{ ...style, insetBlockStart: 0 }}\n\t\t\t\t\t\tonClick={(e) => onHeaderClick?.(column, e)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderHeader?.(column, col) ?? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content\",\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\":\n\t\t\t\t\t\t\t\t\t\t\tcellEllipsis,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title || id}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{sorter && <Sorter type={order} />}\n\n\t\t\t\t\t\t{resizable && (\n\t\t\t\t\t\t\t<Resize index={col} onWidthChange={onWidthChange} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","import { getNextSorter } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport ScrollContainer, { Scrollbars } from \"react-custom-scrollbars-2\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => <Loading size='1.5em' className='color-3' />,\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst scrollbar = useRef<Scrollbars>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && scrollbar.current?.scrollTop(0);\n\t}, [loading]);\n\n\tconst scrollBarStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<ScrollContainer\n\t\t\tref={scrollbar}\n\t\t\tautoHide\n\t\t\tautoHeight\n\t\t\tautoHeightMax={height}\n\t\t\tstyle={scrollBarStyle}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t\trenderView={(props) => (\n\t\t\t\t<div\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={classNames({ \"i-datagrid-loading\": loading })}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tonScroll={onScroll}\n\t\t>\n\t\t\t<div ref={container} className='i-datagrid'>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</ScrollContainer>\n\t);\n};\n\nexport default Datagrid;\n","import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n","import { useKeydown } from \"@/packages/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tdisabledEsc,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t\tinit: false,\n\t});\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tstate.active = true;\n\t\t\ttoggable.current = true;\n\t\t\tstate.init = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tstate.active = false;\n\t\tsetTimeout(() => {\n\t\t\tif (!keepDOM) {\n\t\t\t\tstate.show = false;\n\t\t\t}\n\t\t\tonVisibleChange?.(false);\n\t\t\ttoggable.current = true;\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{\n\t\t\tdisabled: disabledEsc,\n\t\t}\n\t);\n\n\treturn createPortal(\n\t\tstate.show && (\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\t\"i-active\": state.active,\n\t\t\t\t})}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</header>\n\n\t\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t\t<div className='i-drawer-footer'>{footer}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n","import classNames from \"classnames\";\nimport { IListItem } from \"./type\";\n\nconst Item = (props: IListItem) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttype,\n\t\talign,\n\t\tdisabled,\n\t\tlabel,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<li\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-list-item\", className, {\n\t\t\t\t\"i-list-item-active\": active,\n\t\t\t\t\"i-list-option\": type === \"option\",\n\t\t\t\tdisabled,\n\t\t\t})}\n\t\t\tstyle={{ alignItems: align, ...style }}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label !== undefined && (\n\t\t\t\t<span className='i-list-item-label'>{label}</span>\n\t\t\t)}\n\t\t\t{children}\n\t\t</li>\n\t);\n};\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, cloneElement, Fragment } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\n\nconst List = (props: IList) => {\n\tconst { label, type, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\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.Item = Item;\n\nexport default List;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IPopupContent } from \"./type\";\n\nconst Content = (props: IPopupContent) => {\n\tconst {\n\t\tref,\n\t\tgetContainer = (trigger) => trigger?.offsetParent ?? document.body,\n\t\ttrigger,\n\t\tarrow,\n\t\tarrowProps = {},\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\tconst arrowCSS = useMemo(() => {\n\t\tlet { left, top, pos } = arrowProps;\n\t\tlet transform = \"\";\n\n\t\tswitch (pos) {\n\t\t\tcase \"left\":\n\t\t\t\tleft += 2;\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\t\tleft -= 2;\n\t\t\t\ttransform = `translate(0, -50%)`;\n\t\t\t\tbreak;\n\t\t\tcase \"top\":\n\t\t\t\ttop -= 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\ttop += 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\ttransform,\n\t\t};\n\t}, [arrowProps]);\n\n\tconst content = (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-popup\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{arrow && (\n\t\t\t\t<svg\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-popup-arrow'\n\t\t\t\t\tstyle={arrowCSS}\n\t\t\t\t>\n\t\t\t\t\t<path d='M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' />\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{children}\n\t\t</div>\n\t);\n\n\treturn createPortal(content, getContainer(trigger));\n};\n\nexport default Content;\n","import { useResizeObserver } from \"@p/js/hooks\";\nimport { getPointPosition, getPosition } from \"@p/js/utils\";\nimport { useClickAway, useCreation, useReactive } from \"ahooks\";\nimport { debounce } from \"radash\";\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 = debounce({ delay: 60 }, () => {\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 {\n\tFormatBoldRound,\n\tFormatClearRound,\n\tFormatItalicRound,\n\tFormatUnderlinedRound,\n\tRedoRound,\n\tStrikethroughSRound,\n\tUndoRound,\n} from \"@ricons/material\";\nimport { Fragment } from \"react/jsx-runtime\";\nimport { escapeAttrValue } from \"xss\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\n\nexport const exec = (a, b?, c?) => document.execCommand(a, b, c);\n\nexport const xssOptions = {\n\tonIgnoreTagAttr: function (tag, name, value) {\n\t\tif ([\"data-\", \"style\"].includes(name.substr(0, 5))) {\n\t\t\treturn name + '=\"' + escapeAttrValue(value) + '\"';\n\t\t}\n\t},\n};\n\nconst fnMap = {\n\tbold: {\n\t\ticon: <FormatBoldRound />,\n\t\tonClick: () => exec(\"bold\"),\n\t},\n\titalic: {\n\t\ticon: <FormatItalicRound />,\n\t\tonClick: () => exec(\"italic\"),\n\t},\n\tunderline: {\n\t\ticon: <FormatUnderlinedRound />,\n\t\tonClick: () => exec(\"underline\"),\n\t},\n\tstrike: {\n\t\ticon: <StrikethroughSRound />,\n\t\tonClick: () => exec(\"strikeThrough\"),\n\t},\n\tredo: {\n\t\ticon: <RedoRound />,\n\t\tonClick: () => exec(\"redo\"),\n\t},\n\tundo: {\n\t\ticon: <UndoRound />,\n\t\tonClick: () => exec(\"undo\"),\n\t},\n\t// color: {\n\t// \ticon: <FormatColorTextRound />,\n\t// \tonClick: () => exec(\"foreColor\", false, \"\"),\n\t// },\n\t// backColor: {\n\t// \ticon: <FormatColorFillRound />,\n\t// \tonClick: () => exec(\"backColor\", false, \"\"),\n\t// },\n\tclear: {\n\t\ticon: <FormatClearRound />,\n\t\tonClick: () => exec(\"removeFormat\"),\n\t},\n};\n\nconst aliasMap = {\n\tsimple: [\"undo\", \"redo\", \"bold\", \"italic\", \"underline\", \"strike\", \"clear\"],\n\tall: Object.keys(fnMap),\n};\n\nexport default function getControls(fns, options) {\n\tconst { controlBtnProps } = options;\n\tconst keys = typeof fns === \"string\" ? aliasMap[fns] : fns;\n\n\treturn keys.map((k) => {\n\t\tif (fnMap[k]) {\n\t\t\tconst { icon, render, onClick } = fnMap[k];\n\n\t\t\tif (render) {\n\t\t\t\treturn render(options);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Button key={k} {...controlBtnProps} onClick={onClick}>\n\t\t\t\t\t<Icon icon={icon} />\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\t\treturn <Fragment key={k} />;\n\t});\n}\n","import { useImperativeHandle, useRef } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport { IEditor } from \"./type\";\n\nconst Editor = (props: IEditor) => {\n\tconst {\n\t\tref,\n\t\twidth,\n\t\theight = \"10em\",\n\t\tplaceholder,\n\t\tcontrols = \"simple\",\n\t\tonInput,\n\t} = props;\n\tconst editorRef = useRef<HTMLDivElement>(null);\n\tconst controlBtnProps: IButton = {\n\t\tsquare: true,\n\t\tflat: true,\n\t\tsize: \"small\",\n\t};\n\n\tconst handlePaste = async (e) => {\n\t\te.preventDefault();\n\t\tconst text = e.clipboardData.getData(\"text/plain\");\n\t\texec(\"insertText\", false, text);\n\t};\n\n\tconst handleKeyDown = (e) => {\n\t\tswitch (e.key) {\n\t\t\tcase \"Tab\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertHTML\", false, \"&#09;\");\n\t\t\t\tbreak;\n\t\t\tcase \"Enter\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertLineBreak\");\n\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\teditorRef.current?.scrollBy({\n\t\t\t\t\ttop: 20,\n\t\t\t\t\tleft: -1000,\n\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tsetValue(html) {\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\tconst safeHtml = xss(html, xssOptions);\n\n\t\t\t\teditorRef.current.innerHTML = safeHtml;\n\t\t\t},\n\t\t\tgetSafeValue() {\n\t\t\t\tconst html = editorRef.current?.innerHTML ?? \"\";\n\n\t\t\t\treturn xss(html, xssOptions);\n\t\t\t},\n\t\t};\n\t});\n\n\tconst handleInput = (e) => {\n\t\tlet html = editorRef.current?.innerHTML ?? \"\";\n\n\t\tif ([\"<br>\", \"\\n\"].includes(html) && editorRef.current) {\n\t\t\thtml = \"\";\n\t\t\teditorRef.current.innerHTML = html;\n\t\t}\n\n\t\tonInput?.(html, e);\n\t};\n\n\treturn (\n\t\t<div className='i-editor' style={{ height, width }}>\n\t\t\t<div className='i-editor-controls'>\n\t\t\t\t{getControls(controls, {\n\t\t\t\t\tcontrolBtnProps,\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={editorRef}\n\t\t\t\tclassName='i-editor-content'\n\t\t\t\tdata-placeholder={placeholder}\n\t\t\t\tcontentEditable\n\t\t\t\tonPaste={handlePaste}\n\t\t\t\tonInput={handleInput}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Editor;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex = (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, useMemo } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tcolumns = 1,\n\t\tgap = \"1em\",\n\t\tchildren,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst handleEnter = (e) => {\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(form.data, form);\n\t};\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\")\n\t\t\treturn `minmax(0, 1fr) `.repeat(columns);\n\n\t\treturn columns;\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\treturn (\n\t\t<Context value={form}>\n\t\t\t<form\n\t\t\t\tstyle={{\n\t\t\t\t\t...style,\n\t\t\t\t\twidth,\n\t\t\t\t\tgap,\n\t\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t}}\n\t\t\t\tclassName={classNames(\"i-form\", className)}\n\t\t\t\tonKeyDown={handleEnter}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n","import { useKeydown } from \"@/packages/js/hooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Button from \"../button\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { CompositionModal, IModal, IModalContent } from \"./type\";\n\nfunction DefaultContent(props: IModalContent) {\n\tconst {\n\t\ttitle,\n\t\tfooter,\n\t\thideCloseButton,\n\t\tfooterLeft,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\tonOk,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst handleOk = async () => {\n\t\tconst ret = await onOk?.();\n\n\t\tif (ret) return;\n\n\t\tonClose?.();\n\t};\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign(\n\t\t\t{\n\t\t\t\tchildren: \"确定\",\n\t\t\t\tonClick: handleOk,\n\t\t\t},\n\t\t\tokButtonProps\n\t\t);\n\t\tconst propsCancel = Object.assign(\n\t\t\t{\n\t\t\t\tsecondary: true,\n\t\t\t\tchildren: \"关闭\",\n\t\t\t\tonClick: onClose,\n\t\t\t},\n\t\t\tcancelButtonProps\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{footerLeft}\n\t\t\t\t<Button {...propsOk} />\n\t\t\t\t<Button {...propsCancel} />\n\t\t\t</>\n\t\t);\n\t}, [footer, okButtonProps, cancelButtonProps]);\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t<header className='i-modal-header'>\n\t\t\t\t\t{title && <b>{title}</b>}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\tclassName='i-modal-close'\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<div className='i-modal-content'>{children}</div>\n\n\t\t\t<footer className='i-modal-footer'>{renderFooter}</footer>\n\t\t</>\n\t);\n}\n\nfunction Modal(props: IModal) {\n\tconst {\n\t\tvisible,\n\t\ttitle,\n\t\tfooter,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tclosable = true,\n\t\thideBackdrop,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tdisableEsc,\n\t\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\thideShadow,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\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\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{ disabled: disableEsc }\n\t);\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tif (!show) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-modal-container\",\n\t\t\t\t{\n\t\t\t\t\t\"i-modal-backdrop\": !hideBackdrop,\n\t\t\t\t\t\"i-modal-customized\": customized,\n\t\t\t\t\t\"i-modal-active\": active,\n\t\t\t\t\tfixed,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\tonClick={handleBackdropClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-modal\", {\n\t\t\t\t\tbounced,\n\t\t\t\t\tshadow: !hideShadow,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => 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\thideShadow\n\t\t\t\t{...modalProps}\n\t\t\t\tchildren={\n\t\t\t\t\t<Content\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tonClose={() => {\n\t\t\t\t\t\t\tref.current?.update({ visible: false });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tfixed\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn preview;\n}\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TFileType } from \"@p/js/usePreview/type\";\nimport { HideImageTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport Icon from \"../icon\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionImage, IImage } from \"./type\";\n\nconst Image = (props: IImage) => {\n\tconst {\n\t\tsrc,\n\t\tround,\n\t\tsize,\n\t\tinitSize,\n\t\tlazyload,\n\t\tfallback = (\n\t\t\t<Icon icon={<HideImageTwotone />} size='2em' className='color-5' />\n\t\t),\n\t\tfit,\n\t\tstyle,\n\t\tclassName,\n\t\tcover,\n\t\tcoverClass,\n\t\tusePreview: previewable,\n\t\tonLoad,\n\t\tonError,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{ status?: string }>({\n\t\tstatus: \"loading\",\n\t});\n\tconst ref = useRef<HTMLImageElement>(null);\n\tconst wh = fit ? \"100%\" : undefined;\n\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst preview = usePreview();\n\n\tconst handleError = (err) => {\n\t\tonError?.(err);\n\t\tstate.status = \"error\";\n\t};\n\n\tconst handleLoad = (e) => {\n\t\tonLoad?.(e);\n\t\tstate.status = undefined;\n\t};\n\n\tconst handleClick = (e) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tsrc &&\n\t\t\tpreview({\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\ttype: TFileType.IMAGE,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!src) return;\n\n\t\tif (!ref.current?.complete) {\n\t\t\tstate.status = \"loading\";\n\t\t}\n\n\t\tif (!lazyload || !ref.current) return;\n\n\t\tobserve(ref.current, (tar: HTMLElement, visible: boolean) => {\n\t\t\tif (!visible) return;\n\n\t\t\ttar.setAttribute(\"src\", tar.dataset.src || \"\");\n\t\t\tunobserve(tar);\n\t\t});\n\n\t\treturn () => {\n\t\t\tref.current && unobserve(ref.current);\n\t\t};\n\t}, [src]);\n\n\trestProps[lazyload ? \"data-src\" : \"src\"] = src;\n\tconst iSize = state.status === \"loading\" ? initSize : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: size ?? iSize,\n\t\t\t\theight: size ?? iSize,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(\"i-image\", className, {\n\t\t\t\trounded: round,\n\t\t\t\t[`i-image-${state.status}`]: state.status,\n\t\t\t})}\n\t\t>\n\t\t\t{state.status === \"error\" ? (\n\t\t\t\tfallback\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{src && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={{ objectFit: fit, width: wh, height: wh }}\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\t\t\tonError={handleError}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{src && state.status === \"loading\" && <Loading absolute />}\n\n\t\t\t\t\t{cover && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\"i-image-cover\", coverClass)}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cover}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Image as CompositionImage;\n","import classNames from \"classnames\";\nimport { IInputContainer } from \"./type\";\n\nexport default function InputContainer(props: IInputContainer) {\n\tconst {\n\t\tas: As = \"label\",\n\t\tlabel,\n\t\tclassName,\n\t\tlabelInline,\n\t\tstyle,\n\t\tchildren,\n\t\tstatus,\n\t\ttip,\n\t\trequired,\n\t} = props;\n\n\treturn (\n\t\t<As\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{children}\n\n\t\t\t{tip && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={classNames(\"i-input-message\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{tip}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</As>\n\t);\n}\n","import Image from \"./image\";\nimport List from \"./list\";\n\nImage.List = List;\n\nexport default Image;\n","import usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { getFileType, getSuffixByUrl } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Flex from \"../flex\";\nimport Image from \"./image\";\nimport { IImageList } from \"./type\";\n\nexport default function List(props: IImageList) {\n\tconst {\n\t\titems = [],\n\t\tgap = 8,\n\t\tcolumns,\n\t\twrap,\n\t\tdirection,\n\t\tusePreview: previewable,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\tconst preview = usePreview();\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst handleClick = (e, i) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tpreview({\n\t\t\t\titems: files,\n\t\t\t\tinitial: i,\n\t\t\t});\n\t};\n\n\tif (!files.length) return \"\";\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName='i-image-list'\n\t\t\tgap={gap}\n\t\t\tcolumns={columns}\n\t\t\twrap={wrap}\n\t\t\tdirection={direction}\n\t\t>\n\t\t\t{files.map((img, i) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Image\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tsrc={img.src}\n\t\t\t\t\t\tsize={60}\n\t\t\t\t\t\tusePreview={false}\n\t\t\t\t\t\tonClick={(e) => handleClick(e, i)}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Flex>\n\t);\n}\n","import { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { CompositionInput, IInput } from \"./type\";\n\nconst Input = ((props: IInput) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue = \"\",\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tclear,\n\t\thideVisible,\n\t\tborder,\n\t\trequired,\n\t\tonChange,\n\t\tonEnter,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t\tvisible: false,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\te.code === \"Enter\" && onEnter?.(e);\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (type === \"password\" && !hideVisible) {\n\t\t\tObject.assign(state, {\n\t\t\t\tvisible: !state.visible,\n\t\t\t\ttype: !state.visible ? \"text\" : \"password\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst v = \"\";\n\t\tonChange?.(v);\n\t};\n\n\tconst HelperIcon = useMemo(() => {\n\t\tif (type === \"password\") {\n\t\t\treturn state.visible ? <VisibilityRound /> : <VisibilityOffRound />;\n\t\t}\n\n\t\treturn undefined;\n\t}, [state.visible]);\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\ttype: state.type,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: classNames(\"i-input\", `i-input-${type}`),\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\tconst clearable = clear && state.value;\n\tconst showHelper = type === \"password\" && !!state.value;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t\trequired={required}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive={!!clearable || showHelper}\n\t\t\t\t\ticon={HelperIcon}\n\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t/>\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n}) as CompositionInput;\n\nexport default Input;\n","import Input from \"./input\";\nimport Number from \"./number\";\nimport Range from \"./range\";\nimport Textarea from \"./textarea\";\n\nInput.Textarea = Textarea;\nInput.Number = Number;\nInput.Range = Range;\n\nexport default Input;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = (props: ITextarea) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue,\n\t\tinitValue,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tautoSize,\n\t\tborder,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\tconst refTextarea = useRef<HTMLDivElement>(null);\n\n\tconst handleChange = (\n\t\te: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n\t) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\n\t\tconst ta = refTextarea.current?.firstChild as HTMLElement;\n\t\tif (autoSize && ta) {\n\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t}\n\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.code !== \"Enter\") return;\n\n\t\te.stopPropagation();\n\t\tonEnter?.(e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-textarea\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={refTextarea}\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<textarea {...inputProps} />\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Textarea;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = (props: IInputNumber) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tstep = 1,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\tthousand,\n\t\tprecision,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tappend,\n\t\tborder,\n\t\tprepend,\n\t\tmessage,\n\t\ttip,\n\t\thideControl,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\tonInput,\n\t\tonBlur,\n\t\t...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 { CheckRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Button from \"../../button\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Select from \"../../select\";\n\nexport const ColorMethods = {\n\tHEX: \"toHexString\",\n\tRGB: \"toRgbString\",\n\tHSB: \"toHsbString\",\n};\n\nexport default function Footer(props) {\n\tconst { value, type, onTypeChange, onChange, onOk } = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t});\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tstate.type = t;\n\t\tonTypeChange(t);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t\tstate.type = type;\n\t}, [value, type]);\n\n\treturn (\n\t\t<div className='i-colorpicker-footer'>\n\t\t\t<Select\n\t\t\t\treadOnly\n\t\t\t\thideClear\n\t\t\t\thideArrow\n\t\t\t\tstyle={{ width: \"5.6em\" }}\n\t\t\t\toptions={[\"RGB\", \"HEX\", \"HSB\"]}\n\t\t\t\tvalue={state.type}\n\t\t\t\tonChange={handleTypeChange}\n\t\t\t/>\n\t\t\t<Input\n\t\t\t\tplaceholder='color'\n\t\t\t\tvalue={state.value}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\t\t\t<Button square onClick={onOk}>\n\t\t\t\t<Icon icon={<CheckRound />} />\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Handle = (props) => {\n\tconst { ref, color, handle, placeholder, className, ...restProps } = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-colorpicker-handle\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{handle !== \"text\" && (\n\t\t\t\t<i\n\t\t\t\t\tclassName='i-colorpicker-square'\n\t\t\t\t\tstyle={{ background: color }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{handle !== \"square\" && (\n\t\t\t\t<span className='i-colorpicker-text' style={{ color }}>\n\t\t\t\t\t{color ?? placeholder}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Handle;\n","import ColorsPanel from \"@rc-component/color-picker\";\nimport \"@rc-component/color-picker/assets/index.css\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Popup from \"../../popup\";\nimport { IColorPicker } from \"../type\";\nimport Footer, { ColorMethods } from \"./footer\";\nimport Handle from \"./handle\";\nimport \"./index.css\";\n\nexport default function ColorPicker(props: IColorPicker) {\n\tconst {\n\t\tvalue,\n\t\ttype = \"HEX\",\n\t\tdisabledAlpha,\n\t\tchildren,\n\t\tusePanel,\n\t\thandle = \"both\",\n\t\tplaceholder = \"Colors\",\n\t\tpopupProps,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttype,\n\t\tvalue,\n\t\tsyncValue: value,\n\t\tvisible: popupProps?.visible,\n\t});\n\n\tconst handleChange = (target) => {\n\t\tstate.syncValue = target;\n\t};\n\n\tconst handleComplete = (target) => {\n\t\tconst method = ColorMethods[state.type];\n\n\t\tif (target.a !== 1) {\n\t\t\ttarget.a = parseFloat(target.a.toFixed(3));\n\t\t}\n\n\t\tstate.value = target[method]?.();\n\t};\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\tpopupProps?.onVisibleChange?.(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tconst method = ColorMethods[t];\n\n\t\tstate.type = t;\n\t\tstate.value = state.syncValue[method]?.();\n\t};\n\n\tconst handleValueChange = (v) => {\n\t\tstate.value = v;\n\t\tstate.syncValue = v;\n\t};\n\n\tconst handleOk = () => {\n\t\tonChange?.(state.value);\n\t\tstate.visible = false;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.syncValue = value;\n\t\tstate.value = value;\n\t}, [value]);\n\n\tif (usePanel) {\n\t\treturn <ColorsPanel {...props} />;\n\t}\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\ttouchable\n\t\t\tposition='bottom'\n\t\t\t{...popupProps}\n\t\t\tvisible={state.visible}\n\t\t\tcontent={\n\t\t\t\t<ColorsPanel\n\t\t\t\t\tvalue={state.syncValue}\n\t\t\t\t\tdisabledAlpha={disabledAlpha}\n\t\t\t\t\tpanelRender={(panel) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{panel}\n\t\t\t\t\t\t\t\t<Footer\n\t\t\t\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t\t\t\ttype={state.type}\n\t\t\t\t\t\t\t\t\tonTypeChange={handleTypeChange}\n\t\t\t\t\t\t\t\t\tonChange={handleValueChange}\n\t\t\t\t\t\t\t\t\tonOk={handleOk}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonChangeComplete={handleComplete}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children ?? (\n\t\t\t\t<Handle\n\t\t\t\t\tcolor={value}\n\t\t\t\t\thandle={handle}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Popup>\n\t);\n}\n","import classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { ReactNode, useMemo } from \"react\";\nimport { IBaseDates } from \"../type\";\n\nconst Dates = (\n\tprops: IBaseDates & {\n\t\tmonth: any;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tmonth,\n\t\tweeks = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\trenderDate = (date: Dayjs) => date.date(),\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\tconst today = dayjs();\n\n\tconst dates = useMemo(() => {\n\t\tconst dates: Dayjs[] = [];\n\n\t\tconst lastDateOfLastMonth = month.add(-1, \"month\").endOf(\"month\");\n\t\tlet { $W, $D } = lastDateOfLastMonth;\n\n\t\tif ($W !== 0) {\n\t\t\tconst lastMonthDates = Array.from({ length: $W }).map(\n\t\t\t\t(whatever, i) => lastDateOfLastMonth.add(i + 1 - $W, \"day\")\n\t\t\t);\n\t\t\tdates.push(...lastMonthDates);\n\t\t}\n\n\t\tconst lastDate = month.endOf(\"month\");\n\t\t$D = lastDate.$D;\n\t\t$W = lastDate.$W;\n\t\tdates.push(\n\t\t\t...Array.from({ length: $D }).map((whatever, i) =>\n\t\t\t\tlastDate.add(i + 1 - $D, \"day\")\n\t\t\t)\n\t\t);\n\n\t\tif ($W !== 0) {\n\t\t\tdates.push(\n\t\t\t\t...Array.from({ length: 7 - $W }).map((whatever, i) =>\n\t\t\t\t\tlastDate.add(i + 1, \"day\")\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn dates;\n\t}, [month]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\tif (disabledDate?.(date)) return;\n\n\t\tonDateClick?.(date);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className='i-datepicker-weeks'>\n\t\t\t\t{weeks.map((week: ReactNode, i: number) => (\n\t\t\t\t\t<span key={i} className='i-datepicker-week'>\n\t\t\t\t\t\t{week}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className='i-datepicker-dates'>\n\t\t\t\t{dates.map((date, i: number) => {\n\t\t\t\t\tconst active = date.isSame(value, \"day\");\n\t\t\t\t\tconst isSameMonth = date.isSame(month, \"month\");\n\t\t\t\t\tconst isToday = date.isSame(today, \"day\");\n\t\t\t\t\tconst disabled = disabledDate?.(date);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-item\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\": active,\n\t\t\t\t\t\t\t\t\"i-datepicker-same-month\": isSameMonth,\n\t\t\t\t\t\t\t\t\"i-datepicker-today\": isToday,\n\t\t\t\t\t\t\t\t\"i-datepicker-disabled\": disabled,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() => handleDateClick(date)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderDate(date)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default Dates;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { throttle } from \"radash\";\nimport { ReactNode, useEffect, useRef } from \"react\";\nimport Icon from \"../../icon\";\nimport Helpericon from \"../../utils/helpericon\";\nimport { IBaseDates } from \"../type\";\nimport Dates from \"./dates\";\n\nconst MONTHS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\nconst YearMonth = (\n\tprops: IBaseDates & {\n\t\tonClick?: () => void;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tunitMonth = \"月\",\n\t\tunitYear = \"年\",\n\t\trenderYear,\n\t\trenderMonth,\n\t\tonClick,\n\t} = props;\n\n\treturn (\n\t\t<a className='i-datepicker-action' data-ripple onClick={onClick}>\n\t\t\t<span>{renderYear?.(value.year())}</span>\n\t\t\t{unitYear}\n\t\t\t<span>{renderMonth?.(value.month() + 1)}</span>\n\t\t\t{unitMonth}\n\t\t</a>\n\t);\n};\n\nconst Panel = (props: IBaseDates) => {\n\tconst {\n\t\tvalue,\n\t\tunitYear,\n\t\tunitMonth,\n\t\trenderDate,\n\t\trenderMonth = (m: ReactNode) => m,\n\t\trenderYear = (y: ReactNode) => y,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttoday: value,\n\t\tmonth: value || dayjs(),\n\t\tselectedYear: dayjs(),\n\t\tyears: [] as number[],\n\t\tselectable: false,\n\t});\n\n\tconst $years = useRef<HTMLDivElement>(null);\n\n\tconst handleOperateMonth = (next: boolean) => {\n\t\tstate.month = state.month[next ? \"add\" : \"subtract\"](1, \"month\");\n\t};\n\n\tconst handleChangeDate = (date: Dayjs) => {\n\t\tif (date.isSame(state.today, \"day\")) return;\n\n\t\tif (!date.isSame(state.month, \"month\")) {\n\t\t\tstate.month = date;\n\t\t}\n\n\t\tstate.today = date;\n\t\tonDateClick?.(date);\n\t};\n\n\tconst handleChangeMonth = (month: number) => {\n\t\tstate.month = state.month\n\t\t\t.year(state.selectedYear.year())\n\t\t\t.month(month - 1);\n\t\tstate.selectable = false;\n\t};\n\n\tconst getMoreYears = throttle({ interval: 100 }, (e) => {\n\t\tconst isUp = e.deltaY < 0;\n\n\t\tstate.years = state.years.map((y) => (y += isUp ? -1 : 1));\n\t});\n\n\tuseEffect(() => {\n\t\tif (!state.selectable) return;\n\n\t\tstate.selectedYear = state.month;\n\t\tconst y = state.selectedYear.year();\n\t\tconst years = Array.from({ length: 7 }).map((_, i) => y - 3 + i);\n\n\t\tstate.years = [...years];\n\t}, [state.selectable]);\n\n\tuseEffect(() => {\n\t\tstate.today = value;\n\t\tstate.month = value || dayjs();\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-datepicker'>\n\t\t\t<div className='i-datepicker-units'>\n\t\t\t\t<YearMonth\n\t\t\t\t\tvalue={state.month}\n\t\t\t\t\tunitYear={unitYear}\n\t\t\t\t\tunitMonth={unitMonth}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tonClick={() => (state.selectable = true)}\n\t\t\t\t/>\n\t\t\t\t<a\n\t\t\t\t\tclassName='ml-auto i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(false)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t</a>\n\t\t\t\t<a\n\t\t\t\t\tclassName='i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(true)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t</a>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-datepicker-ym\", {\n\t\t\t\t\t\"i-datepicker-active\": state.selectable,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName='i-datepicker-close'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tstate.selectable = false;\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tref={$years}\n\t\t\t\t\tclassName='i-datepicker-years'\n\t\t\t\t\tonWheel={getMoreYears}\n\t\t\t\t>\n\t\t\t\t\t{state.years.map((y) => (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tkey={y}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-year\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\ty === state.selectedYear.year(),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t(state.selectedYear =\n\t\t\t\t\t\t\t\t\tstate.selectedYear.year(y))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderYear(y)}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t<div className='i-datepicker-months'>\n\t\t\t\t\t{MONTHS.map((m) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={m}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-month\", {\n\t\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\t\tm === state.month.month() + 1,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => handleChangeMonth(m)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderMonth(m)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dates\n\t\t\t\tvalue={state.today}\n\t\t\t\tmonth={state.month}\n\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\tonDateClick={handleChangeDate}\n\t\t\t\trenderDate={renderDate}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Panel;\n","import { CalendarMonthTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { IDatePicker } from \"../type\";\nimport \"./index.css\";\nimport Panel from \"./panel\";\n\ndayjs.extend(customParseFormat);\n\nconst FORMATTYPES = [\"YYYY-MM-DD\", \"YYYY-M-D\", \"YYYY/MM/DD\", \"YYYY/M/D\"];\nconst FORMAT = \"YYYY-MM-DD\";\n\nconst Datepicker = (props: IDatePicker) => {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tweeks,\n\t\tformat = FORMAT,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderDate,\n\t\trenderMonth,\n\t\trenderYear,\n\t\tpopupProps,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t\tonChange,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst dayJsValue = useMemo(() => {\n\t\tif (!state.value) return null;\n\n\t\tconst date = dayjs(state.value as string, format, true);\n\n\t\tif (date.isValid()) return date;\n\n\t\treturn null;\n\t}, [state.value]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\thandleChange(date.format(format));\n\t};\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSetDate = () => {\n\t\tif (!state.value) return;\n\n\t\tconst date = dayjs(state.value as string, FORMATTYPES, true);\n\n\t\tif (date.isValid()) {\n\t\t\thandleChange(date.format(format));\n\t\t\treturn;\n\t\t}\n\n\t\thandleChange(\"\");\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleSetDate();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\twatchResize\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={dayJsValue}\n\t\t\t\t\tweeks={weeks}\n\t\t\t\t\trenderDate={renderDate}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\t\tonDateClick={handleDateClick}\n\t\t\t\t/>\n\t\t\t}\n\t\t\t{...popupProps}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<CalendarMonthTwotone />}\n\t\t\t\t\t\tclassName='i-datepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonEnter={handleSetDate}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n};\n\nexport default Datepicker;\n","import classNames from \"classnames\";\n\nexport default function Items(props) {\n\tconst { items = [], active, renderItem, unit, onClick } = props;\n\n\treturn items.map((n) => {\n\t\tconst isActive = n === active;\n\n\t\treturn (\n\t\t\t<a\n\t\t\t\tkey={n}\n\t\t\t\tclassName={classNames(\"i-timepicker-item\", {\n\t\t\t\t\t\"i-timepicker-item-active\": isActive,\n\t\t\t\t})}\n\t\t\t\tonClick={() => onClick(n)}\n\t\t\t>\n\t\t\t\t{renderItem?.(n, isActive, unit) ?? (n < 10 ? `0${n}` : n)}\n\t\t\t</a>\n\t\t);\n\t});\n}\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useMemo } from \"react\";\nimport \"./index.css\";\nimport Items from \"./item\";\n\nconst UnitMaps = {\n\th: \"hour\",\n\thh: \"hour\",\n\tm: \"minute\",\n\tmm: \"minute\",\n\ts: \"second\",\n\tss: \"second\",\n};\n\nexport default function Panel(props) {\n\tconst {\n\t\tvalue,\n\t\tstepH = 1,\n\t\tstepM = 1,\n\t\tstepS = 1,\n\t\tformat,\n\t\tperiods,\n\t\trenderItem,\n\t\tonChange,\n\t\tonFallback,\n\t} = props;\n\tconst state = useReactive<any>({\n\t\tperiod: undefined,\n\t\thour: undefined,\n\t\tminute: undefined,\n\t\tsecond: undefined,\n\t});\n\n\tconst [hours, minutes, seconds] = useMemo(() => {\n\t\tconst hasH = format.includes(\"h\");\n\t\tconst hasM = format.includes(\"m\");\n\t\tconst hasS = format.includes(\"s\");\n\t\tconst hours = hasH\n\t\t\t? Array.from(\n\t\t\t\t\t{ length: (periods ? 12 : 24) / stepH },\n\t\t\t\t\t(_, i) => i * stepH\n\t\t\t )\n\t\t\t: [];\n\t\tconst minutes = hasM\n\t\t\t? Array.from({ length: 60 / stepM }, (_, i) => i * stepM)\n\t\t\t: [];\n\t\tconst seconds = hasS\n\t\t\t? Array.from({ length: 60 / stepS }, (_, i) => i * stepS)\n\t\t\t: [];\n\n\t\treturn [hours, minutes, seconds];\n\t}, [stepH, stepM, stepS, format, periods]);\n\n\tconst updateValue = () => {\n\t\tconst reg = /(hh|h){1}|(mm|m){1}|(ss|s){1}/gi;\n\t\tlet result = format.replace(reg, (pattern) => {\n\t\t\tconst p = pattern.toLowerCase();\n\t\t\tconst u = UnitMaps[p];\n\t\t\tconst n = state[u] ?? 0;\n\n\t\t\treturn p.length > 1 && n < 10 ? `0${n ?? 0}` : n ?? 0;\n\t\t});\n\n\t\tif (periods && hours.length > 0) {\n\t\t\tresult = `${state.period ?? periods[0]} ${result}`;\n\t\t}\n\n\t\tonChange(result);\n\t};\n\n\tconst handleSetTime = (v, unit) => {\n\t\tstate[unit] = v;\n\t\tupdateValue();\n\t};\n\n\tuseEffect(() => {\n\t\tlet time = value ?? \"\";\n\n\t\tif (periods && hours.length > 0 && value) {\n\t\t\tconst [p, t] = value.split(\" \");\n\t\t\ttime = t ?? \"\";\n\t\t\tstate.period = periods.includes(p) ? p : undefined;\n\t\t}\n\n\t\tconst nums = time.match(/\\d+/g) ?? [];\n\n\t\tif (!nums.length) {\n\t\t\tonFallback(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet i = 0;\n\t\tconst r = format.replace(/(hh|h)+|(mm|m)+|(ss|s)+/gi, (p) => {\n\t\t\tconst n = nums[i++] ?? 0;\n\t\t\tlet o = p;\n\n\t\t\tif (UnitMaps[p] === \"hour\") {\n\t\t\t\to = Math.min(periods ? 11 : 23, n);\n\t\t\t}\n\n\t\t\to = Math.min(59, n);\n\n\t\t\tstate[UnitMaps[p]] = o;\n\t\t\treturn p.length > 1 && o < 10 ? `0${o}` : o;\n\t\t});\n\n\t\tonFallback(r);\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-timepicker'>\n\t\t\t{hours.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{periods && (\n\t\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\t\titems={periods}\n\t\t\t\t\t\t\t\tactive={state.period}\n\t\t\t\t\t\t\t\tonClick={(p) => handleSetTime(p, \"period\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\titems={hours}\n\t\t\t\t\t\t\tactive={state.hour}\n\t\t\t\t\t\t\tunit='hour'\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\tonClick={(h) => handleSetTime(h, \"hour\")}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{minutes.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={minutes}\n\t\t\t\t\t\tactive={state.minute}\n\t\t\t\t\t\tunit='minute'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(m) => handleSetTime(m, \"minute\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{seconds.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={seconds}\n\t\t\t\t\t\tactive={state.second}\n\t\t\t\t\t\tunit='second'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(s) => handleSetTime(s, \"second\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { AccessTimeRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { ITimePicker } from \"../type\";\nimport Panel from \"./panel\";\n\nconst FORMAT = \"hh:mm:ss\";\n\nexport default function TimePicker(props: ITimePicker) {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tformat = FORMAT,\n\t\tperiods,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderItem,\n\t\tonChange,\n\t\tonBlur,\n\t\tpopupProps,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\tsafeValue: undefined,\n\t});\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t};\n\n\tconst handleFallback = (v) => {\n\t\tstate.safeValue = v;\n\t};\n\n\tconst handleValidTime = () => {\n\t\tif (!state.value) return;\n\n\t\tstate.value = state.safeValue;\n\t\thandleChange(state.safeValue);\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleValidTime();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\twatchResize\n\t\t\t{...popupProps}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tformat={format}\n\t\t\t\t\tperiods={periods}\n\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonFallback={handleFallback}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<AccessTimeRound />}\n\t\t\t\t\t\tclassName='i-timepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n}\n","import { InfoOutlined } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { MouseEvent } from \"react\";\nimport Button from \"../button\";\nimport { IButton } from \"../button/type\";\nimport Flex from \"../flex\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport { IPopconfirm } from \"./type\";\n\nconst defaultOk = {\n\tchildren: \"确定\",\n};\n\nconst defaultCancel = {\n\tchildren: \"取消\",\n\tsecondary: true,\n};\n\nconst Popconfirm = (props: IPopconfirm) => {\n\tconst {\n\t\ttrigger = \"click\",\n\t\tvisible,\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' />,\n\t\tcontent,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\talign = \"end\",\n\t\tposition = \"top\",\n\t\toffset = 12,\n\t\textra,\n\t\tonOk,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tloading: false,\n\t\tvisible,\n\t});\n\n\tconst ok: IButton = okButtonProps\n\t\t? Object.assign({}, defaultOk, okButtonProps)\n\t\t: defaultOk;\n\tconst cancel: IButton = cancelButtonProps\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\n\t\t: defaultCancel;\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\trestProps.onVisibleChange?.(v);\n\t};\n\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\n\t\tstate.loading = true;\n\t\tok.onClick?.(e);\n\n\t\tonOk?.()\n\t\t\t?.then(() => {\n\t\t\t\tstate.visible = false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tstate.loading = false;\n\t\t\t});\n\t};\n\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\n\t\tcancel.onClick?.(e);\n\t\tawait onClose?.();\n\t\tstate.visible = false;\n\t};\n\n\tconst popconfirmContent = (\n\t\t<div className='i-popconfirm'>\n\t\t\t<Flex gap={12}>\n\t\t\t\t{icon}\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\n\t\t\t</Flex>\n\n\t\t\t<Flex\n\t\t\t\tgap={12}\n\t\t\t\tjustify='flex-end'\n\t\t\t\tclassName='mt-8 i-popconfirm-footer'\n\t\t\t>\n\t\t\t\t{cancelButtonProps !== null && (\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\n\t\t\t\t)}\n\t\t\t\t{extra}\n\t\t\t\t{okButtonProps !== null && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t{...ok}\n\t\t\t\t\t\tonClick={handleOk}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<Popup\n\t\t\tcontent={popconfirmContent}\n\t\t\t{...restProps}\n\t\t\ttrigger={trigger}\n\t\t\tvisible={state.visible}\n\t\t\talign={align}\n\t\t\toffset={offset}\n\t\t\tposition={position}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nexport default Popconfirm;\n","import classNames from \"classnames\";\nimport { ChangeEvent } from \"react\";\nimport { IRadioItem } from \"./type\";\n\nexport default function RadioItem(props: IRadioItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tname,\n\t\tvalue,\n\t\tchecked,\n\t\tdisabled,\n\t\tchildren,\n\t\tonChange,\n\t} = props;\n\n\tconst handleChange = (e: ChangeEvent) => {\n\t\tonChange?.(value, e);\n\t};\n\n\treturn (\n\t\t<label className={classNames(\"i-radio-item\", { disabled })}>\n\t\t\t<input\n\t\t\t\ttype='radio'\n\t\t\t\tname={name}\n\t\t\t\tchecked={checked}\n\t\t\t\tclassName={classNames(\"i-radio-input\", `i-radio-${type}`)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-radio-text'>{children}</span>\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tstate.value = value;\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => (\n\t\t\t\t\t<RadioItem\n\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\tchecked={state.value === option.value}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</RadioItem>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n","import \"./index.css\";\n\nexport default function Divider() {\n\treturn <i className='i-step-divider' />;\n}\n","import { CheckRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Divider from \"./divider\";\nimport { IStepItem } from \"./type\";\n\nconst STATUS = [\"finished\", \"active\", \"pending\"];\n\nfunction defaultRenderIcon(i: number, status: string) {\n\treturn (\n\t\t<span className='i-step-item-index'>\n\t\t\t{status === \"finished\" ? (\n\t\t\t\t<CheckRound style={{ width: \"1em\", height: \"1.5em\" }} />\n\t\t\t) : (\n\t\t\t\ti + 1\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction Item(props: IStepItem) {\n\tconst {\n\t\tindex = 0,\n\t\tactive = 0,\n\t\trenderIcon = defaultRenderIcon,\n\t\ttitle,\n\t\tvertical,\n\t\tline = <Divider />,\n\t\tasList,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\tconst status = STATUS[index === active ? 1 : index < active ? 0 : 2];\n\n\tconst handleClick = () => {\n\t\tonClick?.(index);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-step-item-${status}`]: !asList,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{vertical ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-left'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='i-step-item-right'>\n\t\t\t\t\t\t<div className='i-step-item-title'>{title}</div>\n\t\t\t\t\t\t{children && (\n\t\t\t\t\t\t\t<div className='i-step-item-content'>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-title'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\n\t\t\t\t\t\t<span>{title}</span>\n\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t{children && (\n\t\t\t\t\t\t<div className='i-step-item-content'>{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, ReactNode, useMemo } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IStep } from \"./type\";\n\nconst Step = (props: IStep) => {\n\tconst {\n\t\tactive = 0,\n\t\tvertical,\n\t\trenderIcon,\n\t\tline,\n\t\tstyle,\n\t\tasList,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\n\tconst steps = useMemo(() => {\n\t\tconst nodes: ReactNode[] = [];\n\t\tlet index = 0;\n\n\t\tChildren.map(children, (el: any) => {\n\t\t\tif (!el || el.type !== Item) return;\n\n\t\t\tconst { props: elProps } = el;\n\n\t\t\tnodes.push({\n\t\t\t\t...el,\n\t\t\t\tprops: {\n\t\t\t\t\trenderIcon,\n\t\t\t\t\tline,\n\t\t\t\t\tonClick,\n\t\t\t\t\t...elProps,\n\t\t\t\t\tvertical,\n\t\t\t\t\tactive,\n\t\t\t\t\tasList,\n\t\t\t\t\tindex: index++,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\treturn nodes;\n\t}, [active, children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step\",\n\t\t\t\t{ \"i-step-vertical\": vertical },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{steps}\n\t\t</div>\n\t);\n};\n\nStep.Item = Item;\n\nexport default Step;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { ISwiperItem } from \"./type\";\n\nfunction Item(props: ISwiperItem) {\n\tconst {\n\t\tindex = 0,\n\t\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 { RefObject } from \"react\";\nimport SortableContainer from \"react-easy-sort\";\nimport Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport const ListContainer = (props) => {\n\tconst { sortable, onSortEnd, itemProps, ...restProps } = props;\n\tconst customProps = {\n\t\tclassName: \"i-upload-list\",\n\t\tonClick: (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t};\n\n\tif (!sortable) {\n\t\treturn <div {...customProps} {...restProps} />;\n\t}\n\treturn (\n\t\t<SortableContainer\n\t\t\tdraggedItemClassName='i-upload-item-dragged'\n\t\t\tonSortEnd={onSortEnd}\n\t\t\t{...customProps}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nconst FileListItem = (\n\tprops: IUploadItem & { ref?: RefObject<HTMLDivElement | null> }\n) => {\n\tconst { ref, mode, index, file, renderItem, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\n\tconst { id, name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\n\n\tif (renderItem) {\n\t\treturn renderItem(file, index);\n\t}\n\n\tconst CloseBtn = (\n\t\t<Helpericon\n\t\t\tactive\n\t\t\tclassName='i-upload-delete'\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\tonRemove(index);\n\t\t\t}}\n\t\t/>\n\t);\n\n\tswitch (mode) {\n\t\tcase \"card\":\n\t\t\tlet node = <></>;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase TFileType.IMAGE:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tlazyload\n\t\t\t\t\t\t\tsrc={url || src}\n\t\t\t\t\t\t\tfit='cover'\n\t\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase TFileType.VIDEO:\n\t\t\t\t\tnode = <video src={url || src} preload='none' />;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Icon icon={<ListAltRound />} />\n\t\t\t\t\t\t\t<span className='i-upload-file-name'>\n\t\t\t\t\t\t\t\t{title(name)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttitle={name}\n\t\t\t\t\tclassName='i-upload-item-card'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t{node}\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName='i-upload-item'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t<span>{name}</span>\n\n\t\t\t\t\t<i className='i-upload-size'>{formatBytes(size ?? 0)}</i>\n\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t}\n};\n\nexport default FileListItem;\n","import { arrayMove } from \"@/packages/js/utils\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { PlusSharp } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n\tChangeEvent,\n\tCSSProperties,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { SortableItem } from \"react-easy-sort\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport \"./index.css\";\nimport FileListItem, { ListContainer } from \"./renderFile\";\nimport { IFile, IUpload } from \"./type\";\n\nconst Upload = (props: IUpload) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tinitialFiles,\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tdefaultText = \"Upload\",\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tsortable,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem,\n\t\tshouldUpload = () => true,\n\t\tuploader,\n\t\tonChange,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tfiles,\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst preview = usePreview();\n\n\tconst trigger = useMemo(() => {\n\t\tif (children) return children;\n\n\t\tswitch (mode) {\n\t\t\tcase \"card\":\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-upload-card-btn color-5'\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tflat\n\t\t\t\t\t\toutline\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlusSharp />} />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<Button className='i-upload-btn' disabled={disabled}>\n\t\t\t\t\t\t{defaultText}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t}\n\t}, [mode, children]);\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = Array.from(e.target.files || []) as IFile[];\n\t\tconst { files: before } = state;\n\t\tconst changed: IFile[] = [];\n\n\t\tfiles.map((f) => {\n\t\t\tconst { id, name, size, type } = f;\n\t\t\tconst same = before.find((pf) => {\n\t\t\t\tconst { name: n, size: s, type: t } = pf;\n\t\t\t\treturn n === name && s === size && t === type;\n\t\t\t});\n\t\t\tconst src = URL.createObjectURL(f);\n\t\t\tf.src = src;\n\n\t\t\tObject.assign(f, {\n\t\t\t\tid: id ?? 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.id === result.id);\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\tconst setFileList = (files?: IFile[] | File[]) => {\n\t\tif (!files) return;\n\n\t\tstate.files = files.map((f) => {\n\t\t\treturn { ...f, id: f.id ?? uid(7) };\n\t\t});\n\t};\n\n\tconst handleSortEnd = (before, after) => {\n\t\tconst [...files] = state.files;\n\n\t\tstate.files = arrayMove(files, before, after);\n\t\tonChange?.(state.files);\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\t}, [status, message]);\n\n\tuseEffect(() => {\n\t\tsetFileList(initialFiles);\n\t}, []);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\n\t\t\tsetFileList,\n\t\t}),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<InputContainer\n\t\t\tas='div'\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={classNames(\"i-input-label-file\", className)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-upload-inner\", {\n\t\t\t\t\t[`i-upload-${mode}`]: mode !== \"default\",\n\t\t\t\t})}\n\t\t\t\tstyle={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n\t\t\t>\n\t\t\t\t<ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\n\t\t\t\t\t{state.files.map((file: IFile, i: number) => {\n\t\t\t\t\t\tconst node = (\n\t\t\t\t\t\t\t<FileListItem\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\tfile={file}\n\t\t\t\t\t\t\t\tmode={mode}\n\t\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\t\tonRemove={handleRemove}\n\t\t\t\t\t\t\t\tonPreview={handlePreview}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!sortable) return node;\n\n\t\t\t\t\t\treturn <SortableItem key={i}>{node}</SortableItem>;\n\t\t\t\t\t})}\n\t\t\t\t</ListContainer>\n\n\t\t\t\t{state.message && (\n\t\t\t\t\t<span className='i-upload-message'>{state.message}</span>\n\t\t\t\t)}\n\n\t\t\t\t{state.files.length < limit && (\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\ttype='file'\n\t\t\t\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{trigger}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Upload;\n"],"names":["TIMEOUT","listener","e","target","parent","closest","$box","$ripple","document","createElement","className","append","createRipple","rect","getBoundingClientRect","size","Math","max","width","height","style","cssText","pageX","left","pageY","top","insertAdjacentElement","offsetHeight","classList","add","setTimeout","remove","triggerRipple","Loading","props","icon","text","absolute","restProps","_jsxs","classNames","inset","children","_jsx","stroke","viewBox","xmlns","fontSize","cx","cy","r","fill","strokeWidth","strokeLinecap","strokeDasharray","strokeDashoffset","formatClass","outline","flat","loading","disabled","block","round","square","secondary","classnames","Button","as","As","ref","href","ripple","onClick","childNodes","key","attrs","stopPropagation","useEffect","documentElement","dataset","addEventListener","to","Toggle","active","activeClass","after","onToggle","state","useReactive","done","toggle","hasAfter","undefined","nextActive","Object","assign","Group","vertical","buttonProps","nodes","useMemo","Children","map","node","type","cloneElement","Icon","rotate","isValidElement","iconProps","transform","ToTop","SkipPreviousRound","Affix","position","right","bottom","offset","getContainer","body","hidden","setHidden","useState","hijackChildren","container","scrollTo","behavior","debounce","delay","scrollTop","removeEventListener","Badge","content","contentClass","dot","dotSize","rounded","Card","hideShadow","border","header","footer","shadow","TFileType","getPosition","$source","$popup","options","refWindow","gap","align","arrowX","arrowY","arrowPos","rectT","rectC","w","window","innerWidth","h","innerHeight","tl","tt","tr","tb","tw","th","ch","cw","rectPa","offsetParent","offsetLeft","offsetTop","y","x","computePosition","containerSize","targetSize","targetOffset","contentSize","xl","xr","R","yt","yb","T","B","getPointPosition","pw","ph","pl","pt","ow","oh","ol","ot","centerPoint","result","formatOption","option","includes","label","value","formatNumber","precision","thousand","toFixed","points","split","integer","replace","length","renderNode","div","root","createRoot","sto","render","unmount","clearTimeout","getSuffixByUrl","url","match","getFileType","suffix","startsWith","formatBytes","bytes","decimals","dm","i","floor","log","parseFloat","pow","clamp","min","CheckboxItem","name","status","message","partof","onChange","checked","Checkbox","optionInline","labelInline","required","formattedOptions","opt","group","findIndex","item","push","splice","handleChange","Item","Helpericon","CloseRound","uid","Collapse","items","multiple","headerClickable","renderToggle","MinusRound","PlusRound","onCollapse","collapses","nodeProps","title","handleToggle","Array","isArray","k","isActive","handleHeaderClick","Empty","InboxTwotone","getCellStyle","justify","col","row","colSpan","rowSpan","gridArea","insetInline","Cell","column","data","cellEllipsis","onCellClick","onCellDoubleClick","id","fixed","onDoubleClick","MouseMoveEvents","Set","MouseUpEvents","KeydownEvents","touchable","EVENTS","MOVE","UP","KEYDOWN","useMouseMove","delete","useMouseUp","useKeydown","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","entry","callback","get","isIntersecting","observe","set","unobserve","disconnect","Resize","index","onWidthChange","resizing","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","disabledEsc","onVisibleChange","onClose","toggable","show","init","handleShow","handleHide","code","createPortal","List","renderLabel","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","exec","c","execCommand","xssOptions","onIgnoreTagAttr","tag","substr","escapeAttrValue","fnMap","bold","FormatBoldRound","italic","FormatItalicRound","underline","FormatUnderlinedRound","strike","StrikethroughSRound","redo","RedoRound","undo","UndoRound","clear","FormatClearRound","aliasMap","simple","all","getControls","fns","controlBtnProps","Editor","placeholder","controls","onInput","editorRef","useImperativeHandle","setValue","html","safeHtml","xss","innerHTML","getSafeValue","contentEditable","onPaste","async","clipboardData","getData","onKeyDown","scrollBy","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","cacheData","rules","constructor","this","field","PubSub","publish","validate","rule","validator","v","isValid","isAllValid","Promise","resolve","Form","form","initialValues","onEnter","repeat","keyCode","DefaultContent","footerLeft","okButtonProps","cancelButtonProps","onOk","showHeader","handleOk","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","disableEsc","customized","setShow","setActive","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","then","unsubscribe","HookModal","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","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","clearable","showHelper","Textarea","autoSize","refTextarea","ta","firstChild","scrollHeight","step","Infinity","hideControl","rest","formatInputValue","replaceAll","handleOperate","param","getFormatNumber","Range","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","Pagination","defaultPage","total","sibling","prev","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","handlePageChange","p","dotClass","hoverShowClose","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","activeOptions","Select","hideClear","hideArrow","popupProps","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","ColorMethods","HEX","RGB","HSB","Footer","onTypeChange","Handle","color","handle","background","ColorPicker","disabledAlpha","usePanel","syncValue","handleTypeChange","method","handleValueChange","ColorsPanel","panelRender","panel","onChangeComplete","Dates","month","weeks","renderDate","date","disabledDate","onDateClick","today","dayjs","dates","lastDateOfLastMonth","endOf","$W","$D","lastMonthDates","whatever","lastDate","week","isSame","isSameMonth","isToday","handleDateClick","MONTHS","YearMonth","unitMonth","unitYear","renderYear","renderMonth","year","Panel","m","selectedYear","years","selectable","$years","handleOperateMonth","getMoreYears","isUp","_","handleChangeMonth","extend","customParseFormat","FORMATTYPES","FORMAT","Datepicker","format","dayJsValue","handleSetDate","CalendarMonthTwotone","Items","renderItem","unit","UnitMaps","hh","mm","s","ss","stepH","stepM","stepS","periods","onFallback","period","hour","minute","second","hours","minutes","hasH","hasM","hasS","handleSetTime","pattern","toLowerCase","updateValue","nums","TimePicker","safeValue","AccessTimeRound","defaultOk","defaultCancel","Popconfirm","InfoOutlined","extra","ok","cancel","popconfirmContent","finally","RadioItem","Radio","Resizable","other","minSize","maxSize","line","asPercent","onResizeComplete","Divider","STATUS","defaultRenderIcon","renderIcon","asList","Step","steps","elProps","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","deltaX","scrollWidth","nav","intersecting","isLine","navs","flex","TreeList","depth","contents","itemKey","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","ListContainer","sortable","onSortEnd","customProps","SortableContainer","draggedItemClassName","FileListItem","mode","onRemove","onPreview","CloseBtn","preload","ListAltRound","Upload","initialFiles","defaultText","cardSize","limit","shouldUpload","uploader","onFilesChange","onUpload","inputRef","PlusSharp","handleRemove","changed","URL","revokeObjectURL","handleUpload","forEach","f","handlePreview","setFileList","getFileList","array","fromIndex","toIndex","arrayMove","SortableItem","same","pf","createObjectURL","at"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../packages/js/useRipple/index.ts","../packages/components/loading/loading.tsx","../packages/components/button/button.tsx","../packages/components/button/index.tsx","../packages/components/button/toggle.tsx","../packages/components/button/group.tsx","../packages/components/icon/icon.tsx","../packages/components/affix/totop.tsx","../packages/components/affix/affix.tsx","../packages/components/badge/badge.tsx","../packages/components/card/card.tsx","../packages/js/usePreview/type.ts","../packages/js/utils.ts","../packages/components/checkbox/item.tsx","../packages/components/checkbox/checkbox.tsx","../packages/components/utils/helpericon/helpericon.tsx","../packages/components/collapse/collapse.tsx","../packages/components/utils/empty/index.tsx","../packages/components/datagrid/cell.tsx","../packages/components/collapse/item.tsx","../packages/js/hooks.ts","../packages/components/datagrid/resize.tsx","../packages/components/datagrid/sorter.tsx","../packages/components/datagrid/row.tsx","../packages/components/datagrid/datagrid.tsx","../packages/components/description/description.tsx","../packages/components/drawer/drawer.tsx","../packages/components/list/item.tsx","../packages/components/list/list.tsx","../packages/components/popup/content.tsx","../packages/components/popup/popup.tsx","../packages/components/dropdown/item.tsx","../packages/components/dropdown/dropdown.tsx","../packages/components/editor/controls.tsx","../packages/components/editor/editor.tsx","../packages/components/flex/flex.tsx","../packages/components/form/context.tsx","../packages/components/form/useForm.ts","../packages/components/form/form.tsx","../packages/components/modal/modal.tsx","../packages/components/form/field.tsx","../packages/components/modal/hookModal.tsx","../packages/components/text/text.tsx","../packages/components/progress/circle.tsx","../packages/components/text/index.tsx","../packages/components/text/number.tsx","../packages/components/text/time.tsx","../packages/components/text/highlight.tsx","../packages/components/progress/line.tsx","../packages/components/progress/progress.tsx","../packages/components/video/video.tsx","../packages/js/usePreview/renderFile.tsx","../packages/js/usePreview/content.tsx","../packages/js/usePreview/index.tsx","../packages/components/image/image.tsx","../packages/components/input/container.tsx","../packages/components/image/index.tsx","../packages/components/image/list.tsx","../packages/components/input/input.tsx","../packages/components/input/index.tsx","../packages/components/input/textarea.tsx","../packages/components/input/number.tsx","../packages/components/input/range.tsx","../packages/components/message/message.tsx","../packages/components/modal/index.tsx","../packages/components/modal/useModal.tsx","../packages/components/pagination/page.tsx","../packages/components/pagination/pagination.tsx","../packages/components/tag/tag.tsx","../packages/components/select/options.tsx","../packages/components/select/select.tsx","../packages/components/picker/colors/footer.tsx","../packages/components/picker/colors/handle.tsx","../packages/components/picker/colors/index.tsx","../packages/components/picker/dates/dates.tsx","../packages/components/picker/dates/panel.tsx","../packages/components/picker/dates/index.tsx","../packages/components/picker/time/item.tsx","../packages/components/picker/time/panel.tsx","../packages/components/picker/time/index.tsx","../packages/components/popconfirm/popconfirm.tsx","../packages/components/radio/item.tsx","../packages/components/radio/radio.tsx","../packages/components/resizable/resizable.tsx","../packages/components/step/divider.tsx","../packages/components/step/item.tsx","../packages/components/step/step.tsx","../packages/components/swiper/item.tsx","../packages/components/swiper/swiper.tsx","../packages/components/tabs/item.tsx","../packages/components/tabs/tabs.tsx","../packages/components/tree/item.tsx","../packages/components/tree/tree.tsx","../packages/components/upload/renderFile.tsx","../packages/components/upload/upload.tsx"],"sourcesContent":["import \"./ripple.css\";\n\nconst TIMEOUT = 500;\n\nconst useRipple = () => {\n\tif (document.documentElement.dataset[\"useripple\"]) return;\n\tdocument.documentElement.dataset[\"useripple\"] = \"enable\";\n\n\tdocument.addEventListener(\"mousedown\", listener);\n};\n\nfunction listener(e: MouseEvent) {\n\tconst target = e.target as HTMLElement;\n\tconst parent = target.closest(\"[data-ripple]\") as HTMLElement;\n\n\tif (!target || !parent) return;\n\n\ttriggerRipple(parent, e);\n}\n\nfunction triggerRipple(target: HTMLElement, e: MouseEvent) {\n\tconst [$box, $ripple] = createRipple();\n\tconst rect = target.getBoundingClientRect();\n\tconst size = Math.max(rect.width, rect.height) * 2;\n\n\t$ripple.style.cssText = `\n left: ${e.pageX - rect.left}px;\n top: ${e.pageY - rect.top}px;\n width: ${size}px;\n height: ${size}px;\n transition: all ${TIMEOUT / 1000}s;\n `;\n\ttarget.insertAdjacentElement(\"afterbegin\", $box);\n\ttarget.offsetHeight;\n\t$ripple.classList.add(\"i-ripple-active\");\n\n\tsetTimeout(() => {\n\t\t$box.remove();\n\t}, TIMEOUT);\n}\n\nfunction createRipple() {\n\tconst $box = document.createElement(\"SPAN\");\n\tconst $ripple = document.createElement(\"SPAN\");\n\n\t$box.className = \"i-ripple-container\";\n\t$ripple.className = \"i-ripple\";\n\n\t$box.append($ripple);\n\n\treturn [$box, $ripple];\n}\n\nexport default useRipple;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n","import useRipple from \"@p/js/useRipple\";\nimport classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\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 { Children, cloneElement, useMemo } from \"react\";\nimport Button from \"./button\";\nimport { IButtonGroup } from \"./type\";\n\nexport default function Group(props: IButtonGroup) {\n\tconst { children, vertical, buttonProps, className, style } = props;\n\n\tconst nodes = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tconst { type } = node;\n\n\t\t\tif (type === Button) {\n\t\t\t\treturn cloneElement(\n\t\t\t\t\tnode,\n\t\t\t\t\tObject.assign({}, node.props, buttonProps)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\tvertical ? \"i-btn-group-vertical\" : \"i-btn-group-horizonal\"\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{nodes}\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\nimport { cloneElement, isValidElement } from \"react\";\nimport \"./index.css\";\nimport { IIcon } from \"./type\";\n\nconst Icon = (props: IIcon) => {\n\tconst {\n\t\tref,\n\t\ticon,\n\t\tsize = \"1.425em\",\n\t\trotate,\n\t\tstyle,\n\t\tclassName,\n\t\t...restProps\n\t} = props;\n\n\tif (!isValidElement(icon)) return icon;\n\n\tconst iconProps = {\n\t\tref,\n\t\tstyle: {\n\t\t\ttransform: rotate ? `rotate(${rotate}deg)` : undefined,\n\t\t\t...style,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t},\n\t\tclassName: classNames(\"i-icon\", className),\n\t\t...restProps,\n\t};\n\n\treturn cloneElement(icon, iconProps);\n};\n\nexport default Icon;\n","import { SkipPreviousRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport { IAffix } from \"./type\";\n\nfunction ToTop(props: IAffix) {\n\tconst { style, className, onClick } = props;\n\n\treturn (\n\t\t<Button\n\t\t\tsquare\n\t\t\tclassName={classNames(\"i-affix-totop\", className)}\n\t\t\tstyle={{ ...style }}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Icon icon={<SkipPreviousRound />} rotate={90} />\n\t\t</Button>\n\t);\n}\n\nexport default ToTop;\n","import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => document.body,\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n","import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst {\n\t\thideShadow,\n\t\tborder,\n\t\tclassName,\n\t\tchildren,\n\t\theader,\n\t\tfooter,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n","import { CSSProperties, ReactNode } from \"react\";\nimport { IModal } from \"../../components/modal/type\";\n\nexport type TPreviewItem = {\n\tsrc: string;\n\tname?: ReactNode;\n\tthumb?: string;\n\trotate?: number;\n\tzoom?: number;\n\tstyle?: CSSProperties;\n\ttype?: TFileType;\n\tsuffix?: string;\n};\n\nexport enum TFileType {\n\tIMAGE = \"IMAGE\",\n\tVIDEO = \"VIDEO\",\n\tAUDIO = \"AUDIO\",\n\tPDF = \"PDF\",\n\tEXCEL = \"EXCEL\",\n\tTXT = \"TXT\",\n\tUNKNOWN = \"UNKNOWN\",\n}\n\nexport interface IPreview {\n\titems: (TPreviewItem | string)[];\n\tinitial?: number;\n\tcontrols?: boolean;\n\tloop?: boolean;\n\tclassName?: string;\n\tstyle?: CSSProperties;\n\tmodalProps?: IModal;\n\trenderImage?: (file: TPreviewItem) => ReactNode;\n\trenderFile?: (file: TPreviewItem) => ReactNode;\n\tonClose?: () => void;\n\tonChange?: (after: number, before?: number) => void;\n\tonZoom?: (scale: number) => void;\n\tonRotate?: (deg: number) => void;\n}\n","import { MouseEvent, ReactNode } from \"react\";\nimport { Root, createRoot } from \"react-dom/client\";\nimport { TFileType } from \"../js/usePreview/type\";\nimport { TOption, TOptions, TRelativeOptions } from \"../type\";\n\ntype TComputePosition = {\n\tcontainerSize: number;\n\ttargetSize: number;\n\ttargetOffset: number;\n\tcontentSize: number;\n\tgap: number;\n\talign?: \"start\" | \"center\" | \"end\";\n};\n\nexport function getPosition(\n\t$source?: HTMLElement | null,\n\t$popup?: HTMLElement | null,\n\toptions: TRelativeOptions = {}\n): [\n\tx: number,\n\ty: number,\n\tz: {\n\t\tarrowX: number;\n\t\tarrowY: number;\n\t\tarrowPos: string;\n\t}\n] {\n\tconst { refWindow, gap = 0, offset = 0, position = \"top\", align } = options;\n\n\tif (!$source || !$popup)\n\t\treturn [\n\t\t\t0,\n\t\t\t0,\n\t\t\t{\n\t\t\t\tarrowX: 0,\n\t\t\t\tarrowY: 0,\n\t\t\t\tarrowPos: \"bottom\",\n\t\t\t},\n\t\t];\n\n\tconst rectT = $source.getBoundingClientRect();\n\tconst rectC = $popup.getBoundingClientRect();\n\n\tlet w = window.innerWidth;\n\tlet h = window.innerHeight;\n\tlet {\n\t\tleft: tl,\n\t\ttop: tt,\n\t\tright: tr,\n\t\tbottom: tb,\n\t\twidth: tw,\n\t\theight: th,\n\t} = rectT;\n\tconst { height: ch, width: cw } = rectC;\n\n\tif (!refWindow) {\n\t\tconst rectPa = $source.offsetParent?.getBoundingClientRect();\n\n\t\tw = rectPa?.width || w;\n\t\th = rectPa?.height || h;\n\t\ttl = $source.offsetLeft;\n\t\ttt = $source.offsetTop;\n\t\ttr = tl + rectT.width;\n\t\ttb = tt + rectT.height;\n\t}\n\n\tlet y = 0;\n\tlet x = 0;\n\tlet arrowX = 0;\n\tlet arrowY = 0;\n\tlet arrowPos = \"bottom\";\n\n\tswitch (position) {\n\t\tcase \"left\":\n\t\tcase \"right\":\n\t\t\ty =\n\t\t\t\tth !== ch\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: h,\n\t\t\t\t\t\t\ttargetSize: th,\n\t\t\t\t\t\t\ttargetOffset: tt,\n\t\t\t\t\t\t\tcontentSize: ch,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tt;\n\t\t\tarrowY = y < tt ? tt - y + th / 2 : th / 2;\n\n\t\t\tconst xl = tl - offset - cw;\n\t\t\tconst xr = tr + offset + cw;\n\n\t\t\tif (position === \"left\") {\n\t\t\t\tconst R = xl < 0 && xr <= w;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t} else {\n\t\t\t\tconst R = w > xr || xl < 0;\n\t\t\t\tx = R ? tr + offset : xl;\n\t\t\t\tarrowX = R ? 0 : cw;\n\t\t\t\tarrowPos = R ? \"left\" : \"right\";\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\tcase \"bottom\":\n\t\t\tx =\n\t\t\t\ttw !== cw\n\t\t\t\t\t? computePosition({\n\t\t\t\t\t\t\tcontainerSize: w,\n\t\t\t\t\t\t\ttargetOffset: tl,\n\t\t\t\t\t\t\ttargetSize: tw,\n\t\t\t\t\t\t\tcontentSize: cw,\n\t\t\t\t\t\t\tgap,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t })\n\t\t\t\t\t: tl;\n\t\t\tarrowX = x > tl ? cw / 2 : tl - x + tw / 2;\n\n\t\t\tconst yt = tt - offset - ch;\n\t\t\tconst yb = tb + offset + ch;\n\t\t\tif (position === \"top\") {\n\t\t\t\tconst T = yt < 0 && yb <= h;\n\t\t\t\ty = T ? tb + offset : yt;\n\t\t\t\tarrowY = T ? 0 : ch;\n\t\t\t\tarrowPos = T ? \"top\" : \"bottom\";\n\t\t\t} else {\n\t\t\t\tconst B = h > yb || yt < 0;\n\t\t\t\ty = B ? tb + offset : yt;\n\t\t\t\tarrowY = B ? 0 : ch;\n\t\t\t\tarrowPos = B ? \"top\" : \"bottom\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn [\n\t\tx,\n\t\ty,\n\t\t{\n\t\t\tarrowX,\n\t\t\tarrowY,\n\t\t\tarrowPos,\n\t\t},\n\t];\n}\n\nexport function getPointPosition(e: MouseEvent, content: HTMLElement) {\n\tconst { width: w, height: h } = content.getBoundingClientRect();\n\tconst parent = content.offsetParent;\n\tlet pw,\n\t\tph,\n\t\tpl = 0,\n\t\tpt = 0;\n\n\tif (parent) {\n\t\tconst {\n\t\t\twidth: ow,\n\t\t\theight: oh,\n\t\t\tleft: ol,\n\t\t\ttop: ot,\n\t\t} = parent.getBoundingClientRect();\n\t\tconst st = parent.scrollTop ?? 0;\n\n\t\tpw = ow;\n\t\tph = oh;\n\t\tpt = ot - st;\n\t\tpl = ol;\n\t} else {\n\t\tpw = window.innerWidth;\n\t\tph = window.innerHeight;\n\t}\n\tconst x = e.pageX - pl;\n\tconst y = e.pageY - pt;\n\n\tconst left = x + w >= pw ? (x - w > 0 ? x - w : x) : x;\n\tconst top = y + h >= ph ? (y - h > 0 ? y - h : y) : y;\n\n\treturn [left, top];\n}\n\nfunction computePosition({\n\tcontainerSize,\n\ttargetSize,\n\ttargetOffset,\n\tcontentSize,\n\tgap,\n\talign = \"center\",\n}: TComputePosition) {\n\tconst centerPoint = targetOffset + targetSize / 2;\n\n\tswitch (align) {\n\t\tcase \"start\":\n\t\t\treturn targetOffset + contentSize > containerSize\n\t\t\t\t? containerSize - contentSize - gap\n\t\t\t\t: targetOffset;\n\t\tcase \"center\":\n\t\t\tif (targetSize >= contentSize) {\n\t\t\t\treturn centerPoint - contentSize / 2;\n\t\t\t}\n\n\t\t\tif (centerPoint + contentSize / 2 + gap > containerSize) {\n\t\t\t\treturn targetOffset + targetSize - contentSize;\n\t\t\t}\n\n\t\t\tif (centerPoint - contentSize / 2 - gap < 0) {\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\treturn centerPoint - contentSize / 2;\n\t\tcase \"end\":\n\t\t\tconst result = targetOffset + targetSize - contentSize;\n\t\t\treturn result > 0 ? result : gap;\n\t\tdefault:\n\t\t\treturn centerPoint - contentSize / 2;\n\t}\n}\n\nexport function formatOption(options: TOptions): TOption[] {\n\treturn options.map((option) =>\n\t\t[\"string\", \"number\"].includes(typeof option)\n\t\t\t? { label: option, value: option }\n\t\t\t: option\n\t) as TOption[];\n}\n\nexport function animate(\n\tfrom: number,\n\tto: number,\n\tduration: number = 1000,\n\tcallback?: (v: number) => void,\n\teasing: (t: number) => number = (t) => 1 - Math.pow(1 - t, 4)\n) {\n\tconst start = performance.now();\n\tconst diff = to - from;\n\tlet raf = requestAnimationFrame(loop);\n\n\tfunction loop() {\n\t\traf = requestAnimationFrame(loop);\n\n\t\tconst past = performance.now() - start;\n\t\tlet percent = past / duration;\n\n\t\tif (percent >= 1) {\n\t\t\tpercent = 1;\n\t\t\tcancelAnimationFrame(raf);\n\t\t}\n\n\t\tconst pass = diff * easing(percent);\n\t\tcallback?.(pass);\n\t}\n}\n\nexport function formatNumber(\n\tvalue: number,\n\toptions: {\n\t\tprecision?: number;\n\t\tthousand?: string;\n\t} = {}\n) {\n\tconst { precision, thousand } = options;\n\n\tconst result = value.toFixed(precision);\n\n\tif (!thousand) return result;\n\n\tconst points = result.split(\".\");\n\tconst integer = points[0].replace(\n\t\t/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g,\n\t\t`$&${thousand}`\n\t);\n\n\tif (points.length === 1) return integer;\n\n\treturn `${integer}.${points[1]}`;\n}\n\nexport function renderNode(node: ReactNode, container = document.body) {\n\tconst div: HTMLDivElement | null = document.createElement(\"div\");\n\tcontainer.append(div);\n\n\tconst root: Root | null = createRoot(div);\n\tconst sto = setTimeout(() => {\n\t\troot?.render(node);\n\t}, 0);\n\n\treturn () => {\n\t\tdiv?.remove();\n\t\troot?.unmount();\n\t\tsto && clearTimeout(sto);\n\t};\n}\n\nexport function getSuffixByUrl(url: string) {\n\treturn url.match(/\\.([^\\./\\?]+)($|\\?)/)?.[1];\n}\n\nexport function getFileType(suffix: string, type?: string): TFileType {\n\tswitch (true) {\n\t\tcase [\"jpg\", \"jpeg\", \"png\", \"webp\", \"svg\"].includes(suffix) ||\n\t\t\ttype?.startsWith(\"image/\"):\n\t\t\treturn TFileType[\"IMAGE\"];\n\t\tcase [\"mp4\", \"avi\"].includes(suffix) || type?.startsWith(\"video/\"):\n\t\t\treturn TFileType[\"VIDEO\"];\n\t\tdefault:\n\t\t\treturn TFileType[\"UNKNOWN\"];\n\t}\n}\n\nexport function fullScreen(el: HTMLElement) {\n\tel.requestFullscreen?.();\n}\n\nexport function exitFullScreen() {\n\tdocument.exitFullscreen?.();\n}\n\nexport function formatTime(\n\ttime: number,\n\toptions?: {\n\t\tzero?: boolean;\n\t\tunits?: string[];\n\t}\n) {\n\tconst result: string[] = [];\n\tconst { zero = true, units = [\"\", \":\", \":\"] } = options || {};\n\n\tconst l = units.length;\n\tlet i = 0;\n\n\twhile (i < l) {\n\t\tif (time <= 0 && i > 1) break;\n\n\t\tconst n = Math.round(time % 60);\n\n\t\ttime = Math.floor(time / 60);\n\n\t\tresult.unshift((zero && n < 10 ? `0${n}` : n) + units[i++]);\n\t}\n\n\treturn result.join(\"\");\n}\n\nexport function getNextSorter(\n\tprevSortBy: string,\n\tprevSortType: string,\n\tsortBy: string\n): [sortBy: string, sortType: string] {\n\tconst types = [\"desc\", \"asc\"];\n\n\tif (prevSortBy === sortBy) {\n\t\tconst i = types.findIndex((t) => t === prevSortType) + 1;\n\t\tconst type = types[i] || \"\";\n\t\tconst by = type === \"\" ? \"\" : sortBy;\n\n\t\treturn [by, type];\n\t}\n\n\treturn [sortBy, \"desc\"];\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n\tif (!+bytes) return \"0 Bytes\";\n\n\tconst k = 1024;\n\tconst dm = decimals < 0 ? 0 : decimals;\n\tconst sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n\treturn value < min ? min : value > max ? max : value;\n}\n\nexport const arrayMove = (array, fromIndex: number, toIndex: number) => {\n\tif (toIndex >= array.length) {\n\t\tlet k = toIndex - array.length + 1;\n\t\twhile (k--) {\n\t\t\tarray.push(undefined);\n\t\t}\n\t}\n\tarray.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);\n\treturn array;\n};\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport { ICheckboxItem } from \"./type\";\n\nexport default function CheckboxItem(props: ICheckboxItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = false,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tdisabled,\n\t\tpartof,\n\t\tchildren,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst checked = e.target.checked;\n\n\t\tObject.assign(state, {\n\t\t\tvalue: checked,\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonChange?.(checked, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${state.status}`]: state.status !== \"normal\",\n\t\t\t\t\tdisabled,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype='checkbox'\n\t\t\t\tname={name}\n\t\t\t\tclassName={classNames(\"i-checkbox-input\", {\n\t\t\t\t\t[`i-checkbox-${type}`]: !partof,\n\t\t\t\t\t\"i-checkbox-partof\": partof,\n\t\t\t\t})}\n\t\t\t\tchecked={state.value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-checkbox-text'>{children || label}</span>\n\n\t\t\t{state.message && (\n\t\t\t\t<span className='i-checkbox-message'>*{state.message}</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{\n\t\tvalue: any;\n\t}>({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...state.value];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tstate.value = group;\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-checkbox-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CheckboxItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={state.value.includes(option.value)}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n","import { CloseRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { createElement } from \"react\";\nimport Icon from \"../../icon\";\nimport \"./index.css\";\nimport { IHelperIcon } from \"./type\";\n\nconst Helpericon = (props: IHelperIcon) => {\n\tconst {\n\t\tas = \"a\",\n\t\tactive,\n\t\tclassName,\n\t\ticon = <CloseRound />,\n\t\t...restProps\n\t} = props;\n\n\tif (!active) return <></>;\n\n\treturn createElement(\n\t\tas,\n\t\t{\n\t\t\tclassName: classNames(\"i-helpericon\", className),\n\t\t\t...restProps,\n\t\t},\n\t\t[\n\t\t\tcreateElement(Icon, {\n\t\t\t\tkey: uid(3),\n\t\t\t\ticon,\n\t\t\t}),\n\t\t]\n\t);\n};\n\nexport default Helpericon;\n","import { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { ICollapse, ICollapseItem, TKey } from \"./type\";\n\nconst Collapse = (props: ICollapse) => {\n\tconst {\n\t\tactive,\n\t\titems,\n\t\tmultiple,\n\t\tborder,\n\t\theaderClickable,\n\t\tclassName,\n\t\tchildren,\n\t\trenderToggle = (active: boolean) =>\n\t\t\tactive ? <MinusRound /> : <PlusRound />,\n\t\tonCollapse,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t});\n\n\tconst collapses = useMemo(() => {\n\t\tif (!items) {\n\t\t\tif (!children) return [];\n\n\t\t\treturn (\n\t\t\t\tChildren.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: TKey;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst { title, children, content, disabled, ...restProps } =\n\t\t\t\t\t\tnodeProps;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...restProps,\n\t\t\t\t\t\tkey: key || i,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tcontent: children || content,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t};\n\t\t\t\t}) || []\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t}, [children]);\n\n\tconst handleHeaderClick = (item: ICollapseItem) => {\n\t\tif (!headerClickable) return;\n\n\t\thandleToggle(item);\n\t};\n\n\tconst handleToggle = (item: ICollapseItem, e?) => {\n\t\tconst { key, disabled } = item;\n\t\te?.stopPropagation();\n\t\tif (disabled) return;\n\n\t\tif (!multiple) {\n\t\t\tstate.active = state.active === key ? undefined : key;\n\t\t\tonCollapse?.(key as TKey, state.active !== undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Array.isArray(state.active)) state.active = [];\n\n\t\tconst i = state.active.findIndex((k) => k === key);\n\n\t\tif (i > -1) {\n\t\t\tstate.active.splice(i, 1);\n\t\t} else {\n\t\t\tkey !== undefined && state.active.push(key);\n\t\t}\n\t\tonCollapse?.(key as TKey, i < 0);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-collapse\",\n\t\t\t\t{\n\t\t\t\t\t\"i-collapse-bordered\": border,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{collapses.map((item) => {\n\t\t\t\tconst {\n\t\t\t\t\tkey,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps\n\t\t\t\t} = item;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? ((state.active as TKey[]) || []).includes(key)\n\t\t\t\t\t: state.active === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tclassName={classNames(\"i-collapse-item\", className, {\n\t\t\t\t\t\t\t\"i-collapse-active\": isActive,\n\t\t\t\t\t\t\t\"i-collapse-disabled\": disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='i-collapse-header'\n\t\t\t\t\t\t\tonClick={() => handleHeaderClick(item)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\tclassName='i-collapse-toggle'\n\t\t\t\t\t\t\t\ticon={renderToggle(isActive)}\n\t\t\t\t\t\t\t\tonClick={(e) => handleToggle(item, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className='i-collapse-content'>{content}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCollapse.Item = Item;\n\nexport default Collapse;\n","import { InboxTwotone } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport default function Empty(props) {\n\tconst { className, ...restProps } = props;\n\n\treturn (\n\t\t<InboxTwotone\n\t\t\tclassName={classNames(\"i-empty\", className)}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\nimport { ICell, IColumn } from \"./type\";\n\nexport function getCellStyle({\n\tjustify,\n\tcol,\n\trow,\n\tcolSpan = 1,\n\trowSpan = 1,\n}: Pick<IColumn, \"justify\" | \"fixed\"> & {\n\tcol: number;\n\trow: number;\n\tcolSpan?: number;\n\trowSpan?: number;\n\tisHeader?: boolean;\n}) {\n\tconst style = {\n\t\t\"--datagrid-justify\": justify,\n\t\tgridArea: `${row + 1} / ${col + 1} / ${row + 1 + rowSpan} / ${\n\t\t\tcol + 1 + colSpan\n\t\t}`,\n\t\tinsetInline: `var(--datagrid-cell-inset-${col})`,\n\t};\n\n\treturn style;\n}\n\nexport function Cell(props: ICell) {\n\tconst {\n\t\tcolumn,\n\t\trow,\n\t\tcol,\n\t\tdata,\n\t\tcellEllipsis,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\tconst { id, fixed, justify, rowSpan, render } = column;\n\tconst style = getCellStyle({ justify, fixed, col, row, rowSpan });\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t[`i-datagrid-cell-fixed-${fixed}`]: fixed,\n\t\t\t})}\n\t\t\tdata-col={id}\n\t\t\tstyle={style}\n\t\t\tonClick={(e) => onCellClick?.(data, column, row, col, e)}\n\t\t\tonDoubleClick={(e) =>\n\t\t\t\tonCellDoubleClick?.(data, column, row, col, e)\n\t\t\t}\n\t\t>\n\t\t\t{render?.(data[id], data, col) ?? (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-datagrid-cell-content\", {\n\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\": cellEllipsis,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{data[id]}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { ICollapseItem } from \"./type\";\n\nexport default function Item(props: ICollapseItem) {\n\treturn <></>;\n}\n","import { useEffect } from \"react\";\n\ntype TMouseEvent = (e: MouseEvent) => void;\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\ntype TEventOption = {\n\tdisabled?: boolean;\n};\n\nconst MouseMoveEvents = new Set<TMouseEvent>();\nconst MouseUpEvents = new Set<TMouseEvent>();\nconst KeydownEvents = new Set<TKeyboardEvent>();\n\nconst touchable = \"ontouchend\" in document;\nconst EVENTS: any = {\n\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\n\tUP: touchable ? \"touchend\" : \"mouseup\",\n\tKEYDOWN: \"keydown\",\n};\n\ndocument.addEventListener(\n\tEVENTS.MOVE,\n\t(e: MouseEvent) => {\n\t\tfor (const listener of MouseMoveEvents.values()) {\n\t\t\tlistener(e);\n\t\t}\n\t},\n\t{ passive: false }\n);\n\ndocument.addEventListener(EVENTS.UP, (e) => {\n\tfor (const listener of MouseUpEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\ndocument.addEventListener(EVENTS.KEYDOWN, (e) => {\n\tfor (const listener of KeydownEvents.values()) {\n\t\tlistener(e);\n\t}\n});\n\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseMoveEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseMoveEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tMouseUpEvents.add(listener);\n\t\treturn () => {\n\t\t\tMouseUpEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\n\tuseEffect(() => {\n\t\tif (options?.disabled) return;\n\n\t\tKeydownEvents.add(listener);\n\t\treturn () => {\n\t\t\tKeydownEvents.delete(listener);\n\t\t};\n\t}, [listener]);\n}\n\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\n\tconst WM = new WeakMap();\n\tconst IO = new IntersectionObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\n\t\t});\n\t}, configs);\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\tWM.set(target, callback);\n\t\ttarget && IO.observe(target);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n\nexport function useResizeObserver() {\n\tconst WM = new WeakMap();\n\tconst IO = new ResizeObserver((entries) => {\n\t\tentries.map((entry) => {\n\t\t\tconst callback = WM.get(entry.target);\n\n\t\t\tcallback?.(entry.target);\n\t\t});\n\t});\n\n\tfunction observe(target: HTMLElement, callback: Function) {\n\t\tif (WM.get(target)) return;\n\n\t\ttarget && IO.observe(target);\n\t\tWM.set(target, callback);\n\t}\n\n\tfunction unobserve(target: HTMLElement) {\n\t\ttarget && IO.unobserve(target);\n\t\tWM.delete(target);\n\t}\n\n\tfunction disconnect() {\n\t\tIO.disconnect();\n\t}\n\n\treturn {\n\t\tobserve,\n\t\tunobserve,\n\t\tdisconnect,\n\t};\n}\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\n\nexport default function Resize(props) {\n\tconst { index, onWidthChange } = props;\n\tconst state = useReactive({\n\t\tresizing: false,\n\t\tx: 0,\n\t\twidth: 0,\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst width = (tar.offsetParent as HTMLElement).offsetWidth;\n\n\t\tObject.assign(state, {\n\t\t\tx: e.pageX,\n\t\t\tresizing: true,\n\t\t\twidth,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tconst after = state.width + e.pageX - state.x;\n\t\tif (after <= 24) return;\n\n\t\tonWidthChange(index, after);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<i\n\t\t\tclassName='i-datagrid-resizor'\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t/>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Arrow = (props) => (\n\t<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n\t\t<g fill='none'>\n\t\t\t<path\n\t\t\t\td='M9 17.898c0 1.074 1.265 1.648 2.073.941l6.31-5.522a1.75 1.75 0 0 0 0-2.634l-6.31-5.522C10.265 4.454 9 5.028 9 6.102v11.796z'\n\t\t\t\tfill='currentColor'\n\t\t\t></path>\n\t\t</g>\n\t</svg>\n);\n\nexport default function Sorter(props) {\n\tconst { type } = props;\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-datagrid-sorter\", {\n\t\t\t\t[`i-datagrid-sorter-${type}`]: type,\n\t\t\t})}\n\t\t>\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t</a>\n\t);\n}\n","import classNames from \"classnames\";\nimport { Cell, getCellStyle } from \"./cell\";\nimport Resize from \"./resize\";\nimport Sorter from \"./sorter\";\nimport { IHeader, IRow } from \"./type\";\n\nexport default function Row(props: IRow) {\n\tconst {\n\t\trow,\n\t\tdata,\n\t\tcolumns,\n\t\tcellEllipsis,\n\t\tonRowClick,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-row' onClick={() => onRowClick?.(data, row)}>\n\t\t\t{columns.map((col, i) => (\n\t\t\t\t<Cell\n\t\t\t\t\tkey={i}\n\t\t\t\t\tcolumn={col}\n\t\t\t\t\tcol={i}\n\t\t\t\t\trow={row}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function Header(props: IHeader) {\n\tconst {\n\t\tcolumns,\n\t\tresizable,\n\t\tcellEllipsis,\n\t\tsortBy,\n\t\tsortType,\n\t\tonWidthChange,\n\t\tonHeaderClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-header i-datagrid-row'>\n\t\t\t{columns.map((column, col) => {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\ttitle,\n\t\t\t\t\tfixed,\n\t\t\t\t\tcolSpan,\n\t\t\t\t\tsorter,\n\t\t\t\t\tjustify,\n\t\t\t\t\trenderHeader,\n\t\t\t\t} = column;\n\t\t\t\tconst style = getCellStyle({\n\t\t\t\t\tjustify,\n\t\t\t\t\trow: 0,\n\t\t\t\t\tcol,\n\t\t\t\t\tcolSpan,\n\t\t\t\t});\n\n\t\t\t\tconst order = sortBy === id ? sortType : \"\";\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\tdata-col={id}\n\t\t\t\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t\t\t\t\"i-datagrid-has-sorter\": sorter,\n\t\t\t\t\t\t\t\"i-datagrid-cell-fixed\": fixed,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{ ...style, insetBlockStart: 0 }}\n\t\t\t\t\t\tonClick={(e) => onHeaderClick?.(column, e)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderHeader?.(column, col) ?? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content\",\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\":\n\t\t\t\t\t\t\t\t\t\t\tcellEllipsis,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title || id}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{sorter && <Sorter type={order} />}\n\n\t\t\t\t\t\t{resizable && (\n\t\t\t\t\t\t\t<Resize index={col} onWidthChange={onWidthChange} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","import { getNextSorter } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport ScrollContainer, { Scrollbars } from \"react-custom-scrollbars-2\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => <Loading size='1.5em' className='color-3' />,\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst scrollbar = useRef<Scrollbars>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && scrollbar.current?.scrollTop(0);\n\t}, [loading]);\n\n\tconst scrollBarStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<ScrollContainer\n\t\t\tref={scrollbar}\n\t\t\tautoHide\n\t\t\tautoHeight\n\t\t\tautoHeightMax={height}\n\t\t\tstyle={scrollBarStyle}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t\trenderView={(props) => (\n\t\t\t\t<div\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={classNames({ \"i-datagrid-loading\": loading })}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tonScroll={onScroll}\n\t\t>\n\t\t\t<div ref={container} className='i-datagrid'>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</ScrollContainer>\n\t);\n};\n\nexport default Datagrid;\n","import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n","import { useKeydown } from \"@/packages/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tdisabledEsc,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t\tinit: false,\n\t});\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tstate.active = true;\n\t\t\ttoggable.current = true;\n\t\t\tstate.init = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tstate.active = false;\n\t\tsetTimeout(() => {\n\t\t\tif (!keepDOM) {\n\t\t\t\tstate.show = false;\n\t\t\t}\n\t\t\tonVisibleChange?.(false);\n\t\t\ttoggable.current = true;\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{\n\t\t\tdisabled: disabledEsc,\n\t\t}\n\t);\n\n\treturn createPortal(\n\t\tstate.show && (\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\t\"i-active\": state.active,\n\t\t\t\t})}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</header>\n\n\t\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t\t<div className='i-drawer-footer'>{footer}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n","import classNames from \"classnames\";\nimport { IListItem } from \"./type\";\n\nconst Item = (props: IListItem) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttype,\n\t\talign,\n\t\tdisabled,\n\t\tlabel,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<li\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-list-item\", className, {\n\t\t\t\t\"i-list-item-active\": active,\n\t\t\t\t\"i-list-option\": type === \"option\",\n\t\t\t\tdisabled,\n\t\t\t})}\n\t\t\tstyle={{ alignItems: align, ...style }}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label !== undefined && (\n\t\t\t\t<span className='i-list-item-label'>{label}</span>\n\t\t\t)}\n\t\t\t{children}\n\t\t</li>\n\t);\n};\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, cloneElement } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\n\nconst List = (props: IList) => {\n\tconst { label, type, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\tconst { type, props: nodeProps } = node;\n\n\t\t\t\tif (type === Item) {\n\t\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t\t...nodeProps,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn node;\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Item = Item;\n\nexport default List;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IPopupContent } from \"./type\";\n\nconst Content = (props: IPopupContent) => {\n\tconst {\n\t\tref,\n\t\tgetContainer = (trigger) => trigger?.offsetParent ?? document.body,\n\t\ttrigger,\n\t\tarrow,\n\t\tarrowProps = {},\n\t\tclassName,\n\t\tchildren,\n\t\t...restProps\n\t} = props;\n\n\tconst arrowCSS = useMemo(() => {\n\t\tlet { left, top, pos } = arrowProps;\n\t\tlet transform = \"\";\n\n\t\tswitch (pos) {\n\t\t\tcase \"left\":\n\t\t\t\tleft += 2;\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\t\tleft -= 2;\n\t\t\t\ttransform = `translate(0, -50%)`;\n\t\t\t\tbreak;\n\t\t\tcase \"top\":\n\t\t\t\ttop -= 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\ttop += 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\ttransform,\n\t\t};\n\t}, [arrowProps]);\n\n\tconst content = (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-popup\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{arrow && (\n\t\t\t\t<svg\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-popup-arrow'\n\t\t\t\t\tstyle={arrowCSS}\n\t\t\t\t>\n\t\t\t\t\t<path d='M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' />\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{children}\n\t\t</div>\n\t);\n\n\treturn createPortal(content, getContainer(trigger));\n};\n\nexport default Content;\n","import { useResizeObserver } from \"@p/js/hooks\";\nimport { getPointPosition, getPosition } from \"@p/js/utils\";\nimport { useClickAway, useCreation, useReactive } from \"ahooks\";\nimport { debounce } from \"radash\";\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(\n\t\t(e: Event) => {\n\t\t\tif (!clickOutside) return;\n\n\t\t\tconst tar = e.target as HTMLElement;\n\t\t\tconst isContain = triggerRef.current?.contains(tar);\n\n\t\t\tif (!state.show) return;\n\n\t\t\t(!isContain || trigger === \"contextmenu\") && handleToggle(false);\n\t\t},\n\t\t[contentRef, triggerRef]\n\t);\n\n\tconst handleShow = () => {\n\t\tif (disabled) return;\n\t\tif (\n\t\t\tstate.show &&\n\t\t\t(trigger !== \"hover\" || (trigger === \"hover\" && !touchable))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tstate.show = true;\n\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 = debounce({ delay: 16 }, () => {\n\t\tif (!state.show) return;\n\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 {\n\tFormatBoldRound,\n\tFormatClearRound,\n\tFormatItalicRound,\n\tFormatUnderlinedRound,\n\tRedoRound,\n\tStrikethroughSRound,\n\tUndoRound,\n} from \"@ricons/material\";\nimport { Fragment } from \"react/jsx-runtime\";\nimport { escapeAttrValue } from \"xss\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\n\nexport const exec = (a, b?, c?) => document.execCommand(a, b, c);\n\nexport const xssOptions = {\n\tonIgnoreTagAttr: function (tag, name, value) {\n\t\tif ([\"data-\", \"style\"].includes(name.substr(0, 5))) {\n\t\t\treturn name + '=\"' + escapeAttrValue(value) + '\"';\n\t\t}\n\t},\n};\n\nconst fnMap = {\n\tbold: {\n\t\ticon: <FormatBoldRound />,\n\t\tonClick: () => exec(\"bold\"),\n\t},\n\titalic: {\n\t\ticon: <FormatItalicRound />,\n\t\tonClick: () => exec(\"italic\"),\n\t},\n\tunderline: {\n\t\ticon: <FormatUnderlinedRound />,\n\t\tonClick: () => exec(\"underline\"),\n\t},\n\tstrike: {\n\t\ticon: <StrikethroughSRound />,\n\t\tonClick: () => exec(\"strikeThrough\"),\n\t},\n\tredo: {\n\t\ticon: <RedoRound />,\n\t\tonClick: () => exec(\"redo\"),\n\t},\n\tundo: {\n\t\ticon: <UndoRound />,\n\t\tonClick: () => exec(\"undo\"),\n\t},\n\t// color: {\n\t// \ticon: <FormatColorTextRound />,\n\t// \tonClick: () => exec(\"foreColor\", false, \"\"),\n\t// },\n\t// backColor: {\n\t// \ticon: <FormatColorFillRound />,\n\t// \tonClick: () => exec(\"backColor\", false, \"\"),\n\t// },\n\tclear: {\n\t\ticon: <FormatClearRound />,\n\t\tonClick: () => exec(\"removeFormat\"),\n\t},\n};\n\nconst aliasMap = {\n\tsimple: [\"undo\", \"redo\", \"bold\", \"italic\", \"underline\", \"strike\", \"clear\"],\n\tall: Object.keys(fnMap),\n};\n\nexport default function getControls(fns, options) {\n\tconst { controlBtnProps } = options;\n\tconst keys = typeof fns === \"string\" ? aliasMap[fns] : fns;\n\n\treturn keys.map((k) => {\n\t\tif (fnMap[k]) {\n\t\t\tconst { icon, render, onClick } = fnMap[k];\n\n\t\t\tif (render) {\n\t\t\t\treturn render(options);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Button key={k} {...controlBtnProps} onClick={onClick}>\n\t\t\t\t\t<Icon icon={icon} />\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\t\treturn <Fragment key={k} />;\n\t});\n}\n","import { useImperativeHandle, useRef } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport { IEditor } from \"./type\";\n\nconst Editor = (props: IEditor) => {\n\tconst {\n\t\tref,\n\t\twidth,\n\t\theight = \"10em\",\n\t\tplaceholder,\n\t\tautosize,\n\t\tcontrols = \"simple\",\n\t\tonInput,\n\t} = props;\n\tconst editorRef = useRef<HTMLDivElement>(null);\n\tconst controlBtnProps: IButton = {\n\t\tsquare: true,\n\t\tflat: true,\n\t\tsize: \"small\",\n\t};\n\n\tconst handlePaste = async (e) => {\n\t\te.preventDefault();\n\t\tconst text = e.clipboardData.getData(\"text/plain\");\n\t\texec(\"insertText\", false, text);\n\t};\n\n\tconst handleKeyDown = (e) => {\n\t\tswitch (e.key) {\n\t\t\tcase \"Tab\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertHTML\", false, \"&#09;\");\n\t\t\t\tbreak;\n\t\t\tcase \"Enter\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertLineBreak\");\n\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\teditorRef.current.scrollBy({\n\t\t\t\t\ttop: 20,\n\t\t\t\t\tleft: -1000,\n\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t});\n\n\t\t\t\tif (!autosize) return;\n\t\t\t\teditorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tsetValue(html) {\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\tconst safeHtml = xss(html, xssOptions);\n\n\t\t\t\teditorRef.current.innerHTML = safeHtml;\n\t\t\t},\n\t\t\tgetSafeValue() {\n\t\t\t\tconst html = editorRef.current?.innerHTML ?? \"\";\n\n\t\t\t\treturn xss(html, xssOptions);\n\t\t\t},\n\t\t};\n\t});\n\n\tconst handleInput = (e) => {\n\t\tlet html = editorRef.current?.innerHTML ?? \"\";\n\n\t\tif ([\"<br>\", \"\\n\"].includes(html) && editorRef.current) {\n\t\t\thtml = \"\";\n\t\t\teditorRef.current.innerHTML = html;\n\t\t}\n\n\t\tonInput?.(html, e);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName='i-editor'\n\t\t\tstyle={{ [autosize ? \"minHeight\" : \"height\"]: height, width }}\n\t\t>\n\t\t\t<div className='i-editor-controls'>\n\t\t\t\t{getControls(controls, {\n\t\t\t\t\tcontrolBtnProps,\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={editorRef}\n\t\t\t\tclassName='i-editor-content'\n\t\t\t\tdata-placeholder={placeholder}\n\t\t\t\tcontentEditable\n\t\t\t\tonPaste={handlePaste}\n\t\t\t\tonInput={handleInput}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Editor;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex = (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, useMemo } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tcolumns = 1,\n\t\tgap = \"1em\",\n\t\tchildren,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst handleEnter = (e) => {\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(form.data, form);\n\t};\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\")\n\t\t\treturn `minmax(0, 1fr) `.repeat(columns);\n\n\t\treturn columns;\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\treturn (\n\t\t<Context value={form}>\n\t\t\t<form\n\t\t\t\tstyle={{\n\t\t\t\t\t...style,\n\t\t\t\t\twidth,\n\t\t\t\t\tgap,\n\t\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t}}\n\t\t\t\tclassName={classNames(\"i-form\", className)}\n\t\t\t\tonKeyDown={handleEnter}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n","import { useKeydown } from \"@/packages/js/hooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Button from \"../button\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { CompositionModal, IModal, IModalContent } from \"./type\";\n\nfunction DefaultContent(props: IModalContent) {\n\tconst {\n\t\ttitle,\n\t\tfooter,\n\t\thideCloseButton,\n\t\tfooterLeft,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\tonOk,\n\t\tonClose,\n\t} = props;\n\tconst showHeader = title || !hideCloseButton;\n\n\tconst handleOk = async () => {\n\t\tconst ret = await onOk?.();\n\n\t\tif (ret) return;\n\n\t\tonClose?.();\n\t};\n\n\tconst renderFooter = useMemo(() => {\n\t\tif (footer || footer === null) return footer;\n\n\t\tconst propsOk = Object.assign(\n\t\t\t{\n\t\t\t\tchildren: \"确定\",\n\t\t\t\tonClick: handleOk,\n\t\t\t},\n\t\t\tokButtonProps\n\t\t);\n\t\tconst propsCancel = Object.assign(\n\t\t\t{\n\t\t\t\tsecondary: true,\n\t\t\t\tchildren: \"关闭\",\n\t\t\t\tonClick: onClose,\n\t\t\t},\n\t\t\tcancelButtonProps\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{footerLeft}\n\t\t\t\t<Button {...propsOk} />\n\t\t\t\t<Button {...propsCancel} />\n\t\t\t</>\n\t\t);\n\t}, [footer, okButtonProps, cancelButtonProps]);\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t<header className='i-modal-header'>\n\t\t\t\t\t{title && <b>{title}</b>}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\tclassName='i-modal-close'\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<div className='i-modal-content'>{children}</div>\n\n\t\t\t<footer className='i-modal-footer'>{renderFooter}</footer>\n\t\t</>\n\t);\n}\n\nfunction Modal(props: IModal) {\n\tconst {\n\t\tvisible,\n\t\ttitle,\n\t\tfooter,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tclosable = true,\n\t\thideBackdrop,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tdisableEsc,\n\t\twidth,\n\t\theight,\n\t\tcustomized,\n\t\tfixed,\n\t\thideShadow,\n\t\tchildren,\n\t\tstyle,\n\t\tclassName,\n\t\tkeepDOM,\n\t\tfooterLeft,\n\t\tonClick,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\tonOk,\n\t\t...restProps\n\t} = props;\n\tconst [show, setShow] = useState(visible);\n\tconst [active, setActive] = useState(false);\n\tconst [bounced, setBounced] = useState(false);\n\tconst toggable = useRef(true);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\t(!keepDOM || !show) && setShow(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tsetActive(true);\n\t\t\tonVisibleChange?.(true);\n\t\t\ttoggable.current = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tif (!closable) {\n\t\t\tsetBounced(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetBounced(false);\n\t\t\t\ttoggable.current = true;\n\t\t\t}, 400);\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tsetTimeout(() => {\n\t\t\t!keepDOM && setShow(false);\n\t\t\ttoggable.current = true;\n\t\t\tonVisibleChange?.(false);\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{ disabled: disableEsc }\n\t);\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tif (!show) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-modal-container\",\n\t\t\t\t{\n\t\t\t\t\t\"i-modal-backdrop\": !hideBackdrop,\n\t\t\t\t\t\"i-modal-customized\": customized,\n\t\t\t\t\t\"i-modal-active\": active,\n\t\t\t\t\tfixed,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\tonClick={handleBackdropClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-modal\", {\n\t\t\t\t\tbounced,\n\t\t\t\t\tshadow: !hideShadow,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tdocument.documentElement.click();\n\t\t\t\t\tonClick?.(e);\n\t\t\t\t}}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{customized && children}\n\n\t\t\t\t{!customized && (\n\t\t\t\t\t<DefaultContent\n\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\thideCloseButton={hideCloseButton}\n\t\t\t\t\t\tfooter={footer}\n\t\t\t\t\t\tokButtonProps={okButtonProps}\n\t\t\t\t\t\tcancelButtonProps={cancelButtonProps}\n\t\t\t\t\t\tchildren={children}\n\t\t\t\t\t\tfooterLeft={footerLeft}\n\t\t\t\t\t\tonOk={onOk}\n\t\t\t\t\t\tonClose={handleHide}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body\n\t);\n}\n\nexport default Modal as CompositionModal;\n","import { useReactive } from \"ahooks\";\nimport PubSub from \"pubsub-js\";\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from \"react\";\nimport Context from \"./context\";\nimport { IField } from \"./type\";\n\nfunction Field(props: IField) {\n\tconst { name, required, children } = props;\n\tconst state = useReactive({\n\t\tvalue: undefined,\n\t\tstatus: \"normal\",\n\t\tmessage: undefined,\n\t\tupdate: 0,\n\t});\n\tconst form = useContext(Context);\n\tconst { id } = form;\n\n\tconst handleChange = (v) => {\n\t\tif (!name) return;\n\n\t\tform.set(name, v);\n\t};\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node) => {\n\t\t\tif (!isValidElement(node)) return null;\n\n\t\t\tconst { onChange } = node.props as any;\n\t\t\tconst { value, status, message } = state;\n\n\t\t\treturn cloneElement(node, {\n\t\t\t\tvalue,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t\trequired,\n\t\t\t\tonChange: (...args) => {\n\t\t\t\t\thandleChange(args[0]);\n\t\t\t\t\tonChange?.(...args);\n\t\t\t\t\tObject.assign(state, {\n\t\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t\t\tmessage: undefined,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t} as any);\n\t\t});\n\t}, [children, state.update]);\n\n\tuseEffect(() => {\n\t\tif (!name) return;\n\n\t\tPubSub.subscribe(`${id}:set:${name}`, (evt, v) => {\n\t\t\tstate.value = v;\n\t\t\tstate.update += 1;\n\t\t});\n\t\tPubSub.subscribe(`${id}:invalid:${name}`, (evt, v) => {\n\t\t\tObject.assign(state, v);\n\t\t\tstate.update += 1;\n\t\t});\n\n\t\tPromise.resolve().then(() => {\n\t\t\tform.set(name, form.cacheData[name] ?? undefined);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${id}:set:${name}`);\n\t\t\tPubSub.unsubscribe(`${id}:invalid:${name}`);\n\t\t\tform.delete(name);\n\t\t};\n\t}, [name, children]);\n\n\tif (!name) return children;\n\n\treturn hijackChildren;\n}\n\nexport default Field;\n","import { useReactive } from \"ahooks\";\nimport { RefObject, useImperativeHandle } from \"react\";\nimport Modal from \"./modal\";\nimport { IModal, RefHookModal } from \"./type\";\n\nconst HookModal = (\n\tprops: IModal & { ref?: RefObject<RefHookModal | null> }\n) => {\n\tconst { ref } = props;\n\tconst state = useReactive<IModal>({});\n\n\tconst mergedProps = Object.assign({}, props, state);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tupdate: (config: IModal = {}) => {\n\t\t\tObject.assign(state, config);\n\t\t},\n\n\t\tclose: () => {\n\t\t\tstate.visible = false;\n\n\t\t\tif (mergedProps.closable) return;\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tstate.visible = true;\n\t\t\t});\n\t\t},\n\t}));\n\n\treturn <Modal {...mergedProps} />;\n};\n\nexport default HookModal;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { CompositionText, IText } from \"./type\";\n\nconst Text = (props: IText) => {\n\tconst {\n\t\tas: Tag = \"span\",\n\t\tsize,\n\t\tweight,\n\t\tdecoration,\n\t\tgradient,\n\t\twave,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\tconst gradients = useMemo(() => {\n\t\tif (!gradient || !Array.isArray(gradient)) return {};\n\n\t\treturn {\n\t\t\tbackgroundImage: `-webkit-linear-gradient(${gradient.join(\",\")})`,\n\t\t\tbackgroundClip: \"text\",\n\t\t};\n\t}, [gradient]);\n\n\treturn (\n\t\t<Tag\n\t\t\tstyle={{\n\t\t\t\tfontSize: size,\n\t\t\t\tfontWeight: weight,\n\t\t\t\ttextDecoration: decoration,\n\t\t\t\t...gradients,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t\"i-text-gradient\": gradient,\n\t\t\t\t\"i-text-gradient-wave\": wave,\n\t\t\t})}\n\t\t>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport default Text as CompositionText;\n","import Text from \"../text\";\nimport { IProgress } from \"./type\";\n\nexport default function Circle(\n\tprops: Pick<IProgress, \"value\" | \"circleSize\" | \"lineWidth\">\n) {\n\tconst { value, circleSize = 40, lineWidth = 8 } = props;\n\n\treturn (\n\t\t<div className='i-progress-circle'>\n\t\t\t<svg width={circleSize} height={circleSize}>\n\t\t\t\t<circle\n\t\t\t\t\tcx={circleSize / 2}\n\t\t\t\t\tcy={circleSize / 2}\n\t\t\t\t\tr={circleSize / 2 - lineWidth / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--background-opacity-2)'\n\t\t\t\t\tstrokeWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t\t<circle\n\t\t\t\t\tcx={circleSize / 2}\n\t\t\t\t\tcy={circleSize / 2}\n\t\t\t\t\tr={circleSize / 2 - lineWidth / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--color-main)'\n\t\t\t\t\tstrokeWidth={lineWidth}\n\t\t\t\t\tstrokeDasharray={100}\n\t\t\t\t\tpathLength={100}\n\t\t\t\t\tclassName='i-progress-circle-path'\n\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tstrokeDashoffset: `calc(100 - ${value})`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</svg>\n\n\t\t\t<span className='i-progress-circle-value'>\n\t\t\t\t<span>{value}</span>\n\t\t\t\t<Text size='.81em' className='color-7'>\n\t\t\t\t\t%\n\t\t\t\t</Text>\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n","import HighLight from \"./highlight\";\nimport Number from \"./number\";\nimport Text from \"./text\";\nimport Time from \"./time\";\n\nText.Number = Number;\nText.Time = Time;\nText.HighLight = HighLight;\n\nexport default Text;\n","import { animate, formatNumber } from \"@p/js/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Text from \"./text\";\nimport { ITextNumber } from \"./type\";\n\nexport default function Number(props: ITextNumber) {\n\tconst {\n\t\tcount,\n\t\tto,\n\t\tdecimal,\n\t\tthousand = \",\",\n\t\tduration = 2400,\n\t\teasing,\n\t\t...restProps\n\t} = props;\n\tconst [n, setN] = useState(count);\n\n\tconst number = useMemo(() => {\n\t\tif (n === undefined) return;\n\n\t\tconst z = n.toFixed(decimal);\n\n\t\tif (!thousand) return z;\n\n\t\treturn formatNumber(n, { precision: decimal, thousand });\n\t}, [n, thousand]);\n\n\tuseEffect(() => {\n\t\tif (count === undefined || to === undefined) return;\n\n\t\tanimate(count, to, duration, (v) => setN(count + v), easing);\n\t}, [to]);\n\n\tuseEffect(() => setN(count), [count]);\n\n\treturn <Text {...restProps}>{number}</Text>;\n}\n","import { formatTime } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextTime } from \"./type\";\n\nexport default function Number(props: ITextTime) {\n\tconst { seconds, zero, units, ...restProps } = props;\n\n\tconst text = useMemo(() => {\n\t\tif (seconds === undefined) return \"\";\n\n\t\treturn formatTime(seconds, {\n\t\t\tzero,\n\t\t\tunits,\n\t\t});\n\t}, [seconds]);\n\n\treturn <Text {...restProps}>{text}</Text>;\n}\n","import { findAll } from \"highlight-words-core\";\nimport { Fragment, useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextHighLight } from \"./type\";\n\nexport default function HighLight(props: ITextHighLight) {\n\tconst {\n\t\tkeyword,\n\t\ttext,\n\t\tescape,\n\t\tcaseSensitive,\n\t\trenderWord = (word) => <mark>{word}</mark>,\n\t\t...restProps\n\t} = props;\n\n\tconst content = useMemo(() => {\n\t\tconst source = text;\n\t\tconst searchWords = typeof keyword === \"string\" ? [keyword] : keyword;\n\n\t\tconst chunks = findAll({\n\t\t\tsearchWords,\n\t\t\ttextToHighlight: text,\n\t\t\tcaseSensitive,\n\t\t\tautoEscape: escape,\n\t\t});\n\n\t\tconst result = chunks.map((chunk, i) => {\n\t\t\tconst { end, highlight, start } = chunk;\n\t\t\tconst word = source.slice(start, end);\n\n\t\t\treturn highlight ? (\n\t\t\t\t<Fragment key={i}>{renderWord(word)}</Fragment>\n\t\t\t) : (\n\t\t\t\tword\n\t\t\t);\n\t\t});\n\n\t\treturn result;\n\t}, [keyword, text, escape, caseSensitive]);\n\n\treturn <Text {...restProps}>{content}</Text>;\n}\n","import classNames from \"classnames\";\nimport { MouseEvent, RefObject } from \"react\";\nimport { IProgress } from \"./type\";\n\nconst Line = (\n\tprops: Pick<\n\t\tIProgress,\n\t\t\"value\" | \"vertical\" | \"lineWidth\" | \"barClass\" | \"renderCursor\"\n\t> & {\n\t\tref: RefObject<HTMLDivElement | null>;\n\t\tdragging: boolean;\n\t\tonMouseDown: (e: MouseEvent) => void;\n\t\tonTouchStart: (e) => void;\n\t}\n) => {\n\tconst {\n\t\tref,\n\t\tvalue,\n\t\tlineWidth,\n\t\tvertical,\n\t\tbarClass,\n\t\tdragging,\n\t\trenderCursor,\n\t\tonMouseDown,\n\t\tonTouchStart,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-progress\", {\n\t\t\t\t\"i-progress-vertical\": vertical,\n\t\t\t})}\n\t\t\tstyle={{ [vertical ? \"width\" : \"height\"]: lineWidth }}\n\t\t\tonMouseDown={onMouseDown}\n\t\t\tonTouchStart={onTouchStart}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-progress-bar\", barClass, {\n\t\t\t\t\t\"no-transition\": dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{ [vertical ? \"height\" : \"width\"]: `${value}%` }}\n\t\t\t>\n\t\t\t\t{renderCursor && (\n\t\t\t\t\t<a className='i-progress-cursor'>\n\t\t\t\t\t\t{renderCursor(value ?? 0)}\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Line;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tlineWidth = 8,\n\t\tcircleSize = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tvertical,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t\tonDraggingChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\tsize: 0,\n\t\tstart: 0,\n\t});\n\n\tconst pageXY = vertical ? \"pageY\" : \"pageX\";\n\tconst rectTL = vertical ? \"top\" : \"left\";\n\tconst rectWH = vertical ? \"height\" : \"width\";\n\n\tconst toFixedValue = useMemo(() => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t}, [state.value, precision]);\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e[pageXY] - rect[rectTL]) * 100) / rect[rectWH];\n\n\t\tObject.assign(state, {\n\t\t\tvalue: vertical ? 100 - value : value,\n\t\t\tsize: rect[rectWH],\n\t\t\tstart: rect[rectTL],\n\t\t\tdragging: true,\n\t\t});\n\t\tonDraggingChange?.(true);\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, size } = state;\n\t\tconst offset = e[pageXY] - start;\n\n\t\tif (offset < 0 || offset > size) return;\n\n\t\tconst value = ((e[pageXY] - start) * 100) / size;\n\t\tstate.value = vertical ? 100 - value : value;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(toFixedValue);\n\t\tstate.dragging = false;\n\t\tonDraggingChange?.(false);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tvertical={vertical}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tcircleSize={circleSize}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n","import { exitFullScreen, fullScreen } from \"@p/js/utils\";\nimport {\n\tFullscreenExitRound,\n\tFullscreenRound,\n\tPauseRound,\n\tPlayArrowRound,\n\tStopRound,\n\tVolumeDownRound,\n\tVolumeOffRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Progress from \"../progress\";\nimport Text from \"../text\";\nimport \"./index.css\";\nimport { IVideo } from \"./type\";\n\nconst Video = (props: IVideo) => {\n\tconst {\n\t\tref,\n\t\tstyle,\n\t\thideControls,\n\t\tautoplay,\n\t\tmuted,\n\t\tvolume = 50,\n\t\theight,\n\t\twidth,\n\t\tuseOriginControls,\n\t\ttimeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tclassName,\n\t\tonFullScreenChange,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tplaying: autoplay,\n\t\tvolume: muted ? 0 : volume,\n\t\tvolumeCache: 0,\n\t\tmuted,\n\t\tcurrent: 0,\n\t\tduration: 0,\n\t\tisFullscreen: false,\n\t\tcontrolHidden: true,\n\t\tdraggingProgress: false,\n\t});\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst timeUpdateListener = (e) => {\n\t\tconst tar = e.target;\n\t\tif (tar.paused || state.draggingProgress) return;\n\n\t\tObject.assign(state, {\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t};\n\n\tconst playChangeListener = (e) => {\n\t\tstate.playing = !e.target.paused;\n\t};\n\n\tconst fsChangeListener = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\n\t};\n\n\tconst volumeChangeListener = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tvolume: tar.volume * 100,\n\t\t\tmuted: tar.volume === 0,\n\t\t});\n\t};\n\n\tconst handlePlay = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.paused ? v.play() : v.pause();\n\t};\n\n\tconst handleReady = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tduration: tar.duration,\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t\ttar.volume = state.volume / 100;\n\t};\n\n\tconst handleMuted = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tif (v.volume > 0) {\n\t\t\tstate.volumeCache = v.volume;\n\t\t\tv.volume = 0;\n\t\t\treturn;\n\t\t}\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\n\t};\n\n\tconst handleStop = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = 0;\n\t\tv.pause();\n\t};\n\n\tconst handleFullscreen = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\n\t\tonFullScreenChange?.(!state.isFullscreen);\n\t};\n\n\tconst handleUpdateTime = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = (state.duration * t) / 100;\n\t};\n\n\tconst handleUpdateVolume = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tconst showControls = !hideControls && !useOriginControls;\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!showControls || !state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst handleDraggingProgress = (dragging) => {\n\t\tstate.draggingProgress = dragging;\n\t};\n\n\tconst handleMouseMove = throttle({ interval: 900 }, setHiddenFalse);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.pause();\n\t\t},\n\t\tstop: handleStop,\n\t\tfullscreen: handleFullscreen,\n\t\tgetVideo: () => videoRef.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\n\t\tv.addEventListener(\"play\", playChangeListener);\n\t\tv.addEventListener(\"pause\", playChangeListener);\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\n\n\t\treturn () => {\n\t\t\tclearHiddenTO();\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\n\t\t};\n\t}, []);\n\n\tconst currentValue = (state.current / state.duration) * 100;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-video\", className)}\n\t\t\tstyle={{ height, width, ...style }}\n\t\t\tonClick={handlePlay}\n\t\t\tonDoubleClick={() => handleFullscreen()}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tonCanPlay={handleReady}\n\t\t\t\t{...restProps}\n\t\t\t\tcontrols={useOriginControls}\n\t\t\t/>\n\n\t\t\t{showControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tonClick={handleStop}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t</Button>\n\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<Progress\n\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\tvalue={currentValue}\n\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\tonDraggingChange={handleDraggingProgress}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className='i-video-control-volume'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tactive={state.volume <= 0}\n\t\t\t\t\t\t\tafter={\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={<VolumeOffRound />}\n\t\t\t\t\t\t\t\t\tstyle={{ padding: \".125em\" }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={handleMuted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\n\t\t\t\t\t\t<div className='i-video-volume'>\n\t\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\t\tstyle={{ height: 100 }}\n\t\t\t\t\t\t\t\tvertical\n\t\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Video;\n","import Icon from \"@p/components/icon\";\nimport Video from \"@p/components/video\";\nimport { FeedOutlined } from \"@ricons/material\";\nimport { TFileType, TPreviewItem } from \"./type\";\n\nexport default function renderFile(props: TPreviewItem) {\n\tconst { name, suffix, type } = props;\n\n\tswitch (type) {\n\t\tcase TFileType.IMAGE:\n\t\t\treturn <img src={props.src} />;\n\t\tcase TFileType.VIDEO:\n\t\t\treturn <Video {...props} />;\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div className='i-preview-unknown'>\n\t\t\t\t\t<Icon icon={<FeedOutlined />} size='3em' />\n\t\t\t\t\t<h5 className='mt-4'>{name || suffix || \"?\"}</h5>\n\t\t\t\t</div>\n\t\t\t);\n\t}\n}\n","import Button from \"@p/components/button\";\nimport Icon from \"@p/components/icon\";\nimport {\n\tAspectRatioRound,\n\tCloseRound,\n\tFileDownloadOutlined,\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tOpenInNewRound,\n\tRotateLeftRound,\n\tRotateRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useMemo, useRef } from \"react\";\nimport { useMouseMove, useMouseUp } from \"../hooks\";\nimport { getFileType, getSuffixByUrl } from \"../utils\";\nimport DefaultRenderFile from \"./renderFile\";\nimport { IPreview, TFileType, TPreviewItem } from \"./type\";\n\nexport default function Content(props: IPreview) {\n\tconst {\n\t\titems = [],\n\t\tinitial = 0,\n\t\trenderFile = DefaultRenderFile,\n\t\tonRotate,\n\t\tonChange,\n\t\tonClose,\n\t\tonZoom,\n\t} = props;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\trotate: 0,\n\t\tscale: 1,\n\t\ttranslate: [0, 0],\n\t\tstart: [0, 0],\n\t\tdragging: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t\tstate.translate = translate.current = [0, 0];\n\t};\n\n\tconst handleRotate = (deg: number) => {\n\t\tstate.rotate += deg;\n\n\t\tonRotate?.(state.rotate);\n\t};\n\n\tconst handleMouseWheel = throttle({ interval: 60 }, (e) => {\n\t\tif (!isImage) return;\n\t\tlet after = state.scale + (e.deltaY < 0 ? 0.05 : -0.05);\n\t\tif (after > 2) after = 2;\n\t\tif (after < 0.25) after = 0.25;\n\n\t\tonZoom?.(after);\n\t\tstate.scale = after;\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!isImage) return;\n\t\te.preventDefault();\n\t\tstate.dragging = true;\n\t\tstate.start = [e.pageX, e.pageY];\n\t};\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current || state.controlHidden) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst throttleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tconst handleMouseMove = (e) => {\n\t\tthrottleMouseMove();\n\t\tif (!state.dragging) return;\n\t\te.preventDefault();\n\n\t\tconst [x, y] = translate.current;\n\t\tconst [ox, oy] = state.start;\n\t\tconst offsetX = e.pageX - ox;\n\t\tconst offsetY = e.pageY - oy;\n\n\t\tstate.translate = [x + offsetX, y + offsetY];\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging) return;\n\t\tstate.dragging = false;\n\t\ttranslate.current = state.translate;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName={classNames(\"i-preview-content\", {\n\t\t\t\t\t\"no-transition\": state.dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate(${state.translate\n\t\t\t\t\t\t.map((n) => `${n}px`)\n\t\t\t\t\t\t.join(\",\")}) rotate(${state.rotate}deg) scale(${\n\t\t\t\t\t\tstate.scale\n\t\t\t\t\t})`,\n\t\t\t\t}}\n\t\t\t\tonWheel={handleMouseWheel}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-preview-controls\", {\n\t\t\t\t\t\"i-preview-controls-hidden\": state.controlHidden,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Button square flat onClick={onClose}>\n\t\t\t\t\t<Icon icon={<CloseRound />} />\n\t\t\t\t</Button>\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<span className='px-8'>\n\t\t\t\t\t\t{state.current + 1} / {files.length}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{state.scale !== 1 && (\n\t\t\t\t\t<Button flat onClick={() => (state.scale = 1)}>\n\t\t\t\t\t\t<Icon icon={<AspectRatioRound />} />\n\t\t\t\t\t\t<span className='mt-2'>\n\t\t\t\t\t\t\t{(state.scale * 100).toFixed(0)}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button square flat href={file.src} target='_blank'>\n\t\t\t\t\t<Icon icon={<OpenInNewRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat href={file.src} download target='_blank'>\n\t\t\t\t\t<Icon icon={<FileDownloadOutlined />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(90)}>\n\t\t\t\t\t<Icon icon={<RotateRightRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(-90)}>\n\t\t\t\t\t<Icon icon={<RotateLeftRound />} />\n\t\t\t\t</Button>\n\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current - 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current + 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","import HookModal from \"@p/components/modal/hookModal\";\nimport { RefHookModal } from \"@p/components/modal/type\";\nimport { useRef } from \"react\";\nimport { renderNode } from \"../utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPreview } from \"./type\";\n\nexport default function usePreview() {\n\tconst ref = useRef<RefHookModal>(null);\n\n\tconst preview = (config: IPreview) => {\n\t\tconst { items, modalProps, onClose, ...restProps } = config;\n\n\t\tconst handleClose = () => {\n\t\t\tonClose?.();\n\t\t\tunMount?.();\n\t\t};\n\n\t\tconst unMount = renderNode(\n\t\t\t<HookModal\n\t\t\t\tref={ref}\n\t\t\t\tvisible\n\t\t\t\tclassName='i-preview'\n\t\t\t\tcustomized\n\t\t\t\thideShadow\n\t\t\t\t{...modalProps}\n\t\t\t\tchildren={\n\t\t\t\t\t<Content\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tonClose={() => {\n\t\t\t\t\t\t\tref.current?.update({ visible: false });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tfixed\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn preview;\n}\n","import { useIntersectionObserver } from \"@p/js/hooks\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TFileType } from \"@p/js/usePreview/type\";\nimport { HideImageTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport Icon from \"../icon\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionImage, IImage } from \"./type\";\n\nconst Image = (props: IImage) => {\n\tconst {\n\t\tsrc,\n\t\tround,\n\t\tsize,\n\t\tinitSize,\n\t\tlazyload,\n\t\tfallback = (\n\t\t\t<Icon icon={<HideImageTwotone />} size='2em' className='color-5' />\n\t\t),\n\t\tfit,\n\t\tstyle,\n\t\tclassName,\n\t\tcover,\n\t\tcoverClass,\n\t\tusePreview: previewable,\n\t\tonLoad,\n\t\tonError,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{ status?: string }>({\n\t\tstatus: \"loading\",\n\t});\n\tconst ref = useRef<HTMLImageElement>(null);\n\tconst wh = fit ? \"100%\" : undefined;\n\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst preview = usePreview();\n\n\tconst handleError = (err) => {\n\t\tonError?.(err);\n\t\tstate.status = \"error\";\n\t};\n\n\tconst handleLoad = (e) => {\n\t\tonLoad?.(e);\n\t\tstate.status = undefined;\n\t};\n\n\tconst handleClick = (e) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tsrc &&\n\t\t\tpreview({\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\ttype: TFileType.IMAGE,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (!src) return;\n\n\t\tif (!ref.current?.complete) {\n\t\t\tstate.status = \"loading\";\n\t\t}\n\n\t\tif (!lazyload || !ref.current) return;\n\n\t\tobserve(ref.current, (tar: HTMLElement, visible: boolean) => {\n\t\t\tif (!visible) return;\n\n\t\t\ttar.setAttribute(\"src\", tar.dataset.src || \"\");\n\t\t\tunobserve(tar);\n\t\t});\n\n\t\treturn () => {\n\t\t\tref.current && unobserve(ref.current);\n\t\t};\n\t}, [src]);\n\n\trestProps[lazyload ? \"data-src\" : \"src\"] = src;\n\tconst iSize = state.status === \"loading\" ? initSize : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: size ?? iSize,\n\t\t\t\theight: size ?? iSize,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(\"i-image\", className, {\n\t\t\t\trounded: round,\n\t\t\t\t[`i-image-${state.status}`]: state.status,\n\t\t\t})}\n\t\t>\n\t\t\t{state.status === \"error\" ? (\n\t\t\t\tfallback\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{src && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={{ objectFit: fit, width: wh, height: wh }}\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\t\t\tonError={handleError}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{src && state.status === \"loading\" && <Loading absolute />}\n\n\t\t\t\t\t{cover && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\"i-image-cover\", coverClass)}\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cover}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Image as CompositionImage;\n","import classNames from \"classnames\";\nimport { IInputContainer } from \"./type\";\n\nexport default function InputContainer(props: IInputContainer) {\n\tconst {\n\t\tas: As = \"label\",\n\t\tlabel,\n\t\tclassName,\n\t\tlabelInline,\n\t\tstyle,\n\t\tchildren,\n\t\tstatus,\n\t\ttip,\n\t\trequired,\n\t} = props;\n\n\treturn (\n\t\t<As\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{children}\n\n\t\t\t{tip && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={classNames(\"i-input-message\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{tip}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</As>\n\t);\n}\n","import Image from \"./image\";\nimport List from \"./list\";\n\nImage.List = List;\n\nexport default Image;\n","import usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { getFileType, getSuffixByUrl } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Flex from \"../flex\";\nimport Image from \"./image\";\nimport { IImageList } from \"./type\";\n\nexport default function List(props: IImageList) {\n\tconst {\n\t\titems = [],\n\t\tgap = 8,\n\t\tcolumns,\n\t\twrap,\n\t\tdirection,\n\t\tusePreview: previewable,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\tconst preview = usePreview();\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst handleClick = (e, i) => {\n\t\tonClick?.(e);\n\n\t\tpreviewable &&\n\t\t\tpreview({\n\t\t\t\titems: files,\n\t\t\t\tinitial: i,\n\t\t\t});\n\t};\n\n\tif (!files.length) return \"\";\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName='i-image-list'\n\t\t\tgap={gap}\n\t\t\tcolumns={columns}\n\t\t\twrap={wrap}\n\t\t\tdirection={direction}\n\t\t>\n\t\t\t{files.map((img, i) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Image\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tsrc={img.src}\n\t\t\t\t\t\tsize={60}\n\t\t\t\t\t\tusePreview={false}\n\t\t\t\t\t\tonClick={(e) => handleClick(e, i)}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Flex>\n\t);\n}\n","import { VisibilityOffRound, VisibilityRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { CompositionInput, IInput } from \"./type\";\n\nconst Input = ((props: IInput) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue = \"\",\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tclear,\n\t\thideVisible,\n\t\tborder,\n\t\trequired,\n\t\tonChange,\n\t\tonEnter,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t\tvisible: false,\n\t});\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\te.code === \"Enter\" && onEnter?.(e);\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (type === \"password\" && !hideVisible) {\n\t\t\tObject.assign(state, {\n\t\t\t\tvisible: !state.visible,\n\t\t\t\ttype: !state.visible ? \"text\" : \"password\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst v = \"\";\n\t\tonChange?.(v);\n\t};\n\n\tconst HelperIcon = useMemo(() => {\n\t\tif (type === \"password\") {\n\t\t\treturn state.visible ? <VisibilityRound /> : <VisibilityOffRound />;\n\t\t}\n\n\t\treturn undefined;\n\t}, [state.visible]);\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\ttype: state.type,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: classNames(\"i-input\", `i-input-${type}`),\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\tconst clearable = clear && state.value;\n\tconst showHelper = type === \"password\" && !!state.value;\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t\trequired={required}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive={!!clearable || showHelper}\n\t\t\t\t\ticon={HelperIcon}\n\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t/>\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n}) as CompositionInput;\n\nexport default Input;\n","import Input from \"./input\";\nimport Number from \"./number\";\nimport Range from \"./range\";\nimport Textarea from \"./textarea\";\n\nInput.Textarea = Textarea;\nInput.Number = Number;\nInput.Range = Range;\n\nexport default Input;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport InputContainer from \"./container\";\nimport type { ITextarea } from \"./type\";\n\nconst Textarea = (props: ITextarea) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue,\n\t\tinitValue,\n\t\tlabelInline,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tautoSize,\n\t\tborder,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\tconst refTextarea = useRef<HTMLDivElement>(null);\n\n\tconst handleChange = (\n\t\te: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n\t) => {\n\t\tconst v = e.target.value;\n\n\t\tstate.value = v;\n\n\t\tconst ta = refTextarea.current?.firstChild as HTMLElement;\n\t\tif (autoSize && ta) {\n\t\t\tta.style.height = `${ta.scrollHeight}px`;\n\t\t}\n\n\t\tonChange?.(v, e);\n\t};\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.code !== \"Enter\") return;\n\n\t\te.stopPropagation();\n\t\tonEnter?.(e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-textarea\",\n\t\tonChange: handleChange,\n\t\tonKeyDown: handleKeydown,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={refTextarea}\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<textarea {...inputProps} />\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Textarea;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputNumber } from \"./type\";\n\nconst Number = (props: IInputNumber) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tstep = 1,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\tthousand,\n\t\tprecision,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tappend,\n\t\tborder,\n\t\tprepend,\n\t\tmessage,\n\t\ttip,\n\t\thideControl,\n\t\tstyle,\n\t\tonChange,\n\t\tonEnter,\n\t\tonInput,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tstate.value = v;\n\t\tonChange?.(+v, e);\n\t};\n\n\tconst handleOperate = (param: number) => {\n\t\tconst value = formatInputValue(state.value) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\tstate.value = getFormatNumber(result);\n\n\t\tonChange?.(result);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tref,\n\t\tname,\n\t\tvalue: state.value,\n\t\tclassName: \"i-input i-input-number\",\n\t\tonChange: handleChange,\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(-step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input {...inputProps} />\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={() => handleOperate(step)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Number;\n","import { clamp, formatNumber } from \"@p/js/utils\";\nimport { MinusRound, PlusRound, SyncAltRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, MouseEvent, useEffect } from \"react\";\nimport \"../../css/input.css\";\nimport Helpericon from \"../utils/helpericon\";\nimport InputContainer from \"./container\";\nimport type { IInputRange } from \"./type\";\n\nconst Range = (props: IInputRange) => {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\tvalue = props.initValue ?? \"\",\n\t\tinitValue,\n\t\tlabelInline,\n\t\tmin = -Infinity,\n\t\tmax = Infinity,\n\t\ttype,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\ttip,\n\t\tappend,\n\t\tprepend,\n\t\tstep = 1,\n\t\tthousand,\n\t\tprecision,\n\t\thideControl,\n\t\tplaceholder,\n\t\tborder,\n\t\tonChange,\n\t\tonBlur,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst getRangeNumber = (v: number) => clamp(v, min, max);\n\n\tconst getFormatNumber = (v: number) =>\n\t\tformatNumber(v, { precision, thousand });\n\n\tconst formatInputValue = (v?: string | number) => {\n\t\tif (!v) return \"\";\n\t\tif (typeof v === \"number\" || !thousand) return v;\n\n\t\treturn v.replaceAll(thousand, \"\");\n\t};\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>, i: number) => {\n\t\tconst { value } = e.target;\n\t\tconst v = formatInputValue(value.replace(/[^\\d\\.-]/g, \"\"));\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\trange[i] = +v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleOperate = (\n\t\te: MouseEvent<Element>,\n\t\tparam: number,\n\t\ti: number\n\t) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst range = Array.isArray(state.value) ? state.value : [];\n\t\tconst value = formatInputValue(range[i]) ?? 0;\n\t\tconst result = getRangeNumber(+value + param);\n\n\t\trange[i] = getFormatNumber(result);\n\n\t\tstate.value = range;\n\t\tonChange?.(range, e);\n\t};\n\n\tconst handleSwitch = (e: MouseEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst range = state.value ? state.value : [];\n\t\tconst v = range[0];\n\t\trange[0] = range[1];\n\t\trange[1] = v;\n\n\t\tstate.value = range;\n\t\tonChange?.(range);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst inputProps = {\n\t\tname,\n\t\tclassName: \"i-input i-input-number\",\n\t\t...restProps,\n\t};\n\n\treturn (\n\t\t<InputContainer\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t\ttip={message ?? tip}\n\t\t\tstatus={status}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend && <div className='i-input-prepend'>{prepend}</div>}\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[0] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[0]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 0)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 0)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\ticon={<SyncAltRound />}\n\t\t\t\t\tstyle={{ margin: 0 }}\n\t\t\t\t\tonClick={handleSwitch}\n\t\t\t\t/>\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<MinusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, -step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tvalue={state.value?.[1] || \"\"}\n\t\t\t\t\tplaceholder={placeholder?.[1]}\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tonChange={(e) => handleChange(e, 1)}\n\t\t\t\t/>\n\n\t\t\t\t{!hideControl && (\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon={<PlusRound />}\n\t\t\t\t\t\tonClick={(e) => handleOperate(e, step, 1)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{append && <div className='i-input-append'>{append}</div>}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Range;\n","import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport { ReactNode, isValidElement, useEffect, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport \"./index.css\";\nimport type { IMessage, IMessageItem, THeights, TMessageQueue } from \"./type\";\n\nconst AlignMap = {\n\tleft: \"flex-start\",\n\tcenter: \"center\",\n\tright: \"flex-end\",\n};\n\nconst GlobalConfig = {\n\talign: \"center\",\n\toffset: \"12px\",\n\tgap: 12,\n\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\tconst handleClose = () => {\n\t\tif (!ref.current) return;\n\n\t\tconst { close } = ref.current;\n\t\tclose();\n\t};\n\n\treturn {\n\t\topen: handleOpen,\n\t\tupdate: handleUpdate,\n\t\tclose: handleClose,\n\t};\n}\n","import classNames from \"classnames\";\nimport { useState } from \"react\";\nimport Loading from \"../loading\";\nimport { IPageItem } from \"./type\";\n\nconst Page = (props: IPageItem) => {\n\tconst { page, active, children, onChange } = props;\n\tconst [loading, setLoading] = useState(false);\n\n\tconst handleClick = async () => {\n\t\tif (active || loading) return;\n\n\t\tsetLoading(true);\n\t\tawait onChange?.(page);\n\t\tsetLoading(false);\n\t};\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-page\", {\n\t\t\t\t\"i-page-active\": active,\n\t\t\t\t\"i-page-loading\": loading,\n\t\t\t\t\"i-page-disabled\": false,\n\t\t\t})}\n\t\t\tdata-page={page}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{loading && <Loading />}\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n\nexport default Page;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tMoreHorizRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Page from \"./page\";\nimport { IPagination } from \"./type\";\n\nconst Pagination = (props: IPagination) => {\n\tconst {\n\t\tpage: defaultPage = 1,\n\t\tsize = 10,\n\t\ttotal = 0,\n\t\tsibling = 2,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} />,\n\t\tsimple,\n\t\tjumper,\n\t\tclassName,\n\t\trenderEllipsis = () => (\n\t\t\t<Icon icon={<MoreHorizRound />} className='color-7' />\n\t\t),\n\t\trenderPage = (i) => i,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst [page, setPage] = useState(defaultPage);\n\tconst [loading, setLoading] = useState(false);\n\n\tconst totalPage = useMemo(() => Math.ceil(total / size), [size, total]);\n\n\tconst [start, end, loop] = useMemo(() => {\n\t\tconst start = Math.max(1, page - sibling);\n\t\tconst end = Math.min(totalPage, page + sibling);\n\n\t\treturn [\n\t\t\tstart,\n\t\t\tend,\n\t\t\tArray.from({ length: end - start + 1 }).map((n, i) => start + i),\n\t\t];\n\t}, [page, totalPage, sibling]);\n\n\tif (totalPage <= page && page === 1) return <></>;\n\n\tconst handlePageChange = async (p?: number) => {\n\t\tif (!onChange || loading) return;\n\t\tsetLoading(true);\n\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\tif (p === undefined) return;\n\t\t\tawait onChange(p);\n\t\t\tsetPage(p);\n\t\t\tsetLoading(false);\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tuseEffect(() => setPage(defaultPage), [defaultPage]);\n\n\treturn (\n\t\t<div className={classNames(\"i-pagination\", className)} {...restProps}>\n\t\t\t{prev && (\n\t\t\t\t<Page page={page - 1 || 1} onChange={handlePageChange}>\n\t\t\t\t\t{prev}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 1 && (\n\t\t\t\t<Page page={1} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(1)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{start > 2 && renderEllipsis()}\n\n\t\t\t{loop.map((p) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Page\n\t\t\t\t\t\tkey={p}\n\t\t\t\t\t\tpage={p}\n\t\t\t\t\t\tactive={p === page}\n\t\t\t\t\t\tonChange={handlePageChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderPage(p)}\n\t\t\t\t\t</Page>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{end < totalPage - 1 && renderEllipsis()}\n\n\t\t\t{end < totalPage && (\n\t\t\t\t<Page page={totalPage} onChange={handlePageChange}>\n\t\t\t\t\t{renderPage(totalPage)}\n\t\t\t\t</Page>\n\t\t\t)}\n\n\t\t\t{next && (\n\t\t\t\t<Page page={page + 1} onChange={handlePageChange}>\n\t\t\t\t\t{next}\n\t\t\t\t</Page>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Pagination;\n","import classNames from \"classnames\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { ITag } from \"./type\";\n\nconst Tag = (props: ITag) => {\n\tconst {\n\t\tdot,\n\t\tdotClass,\n\t\toutline,\n\t\tround,\n\t\tsize = \"normal\",\n\t\thoverShowClose,\n\t\tclassName,\n\t\tchildren,\n\t\tonClose,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<span\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tag\",\n\t\t\t\t{\n\t\t\t\t\t\"i-tag-outline\": outline,\n\t\t\t\t\t\"i-tag-clickable\": onClick,\n\t\t\t\t\t[`i-tag-${size}`]: size !== \"normal\",\n\t\t\t\t\tround,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={onClick}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{dot && <span className={classNames(\"i-tag-dot\", dotClass)}></span>}\n\n\t\t\t{children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName={classNames(\"i-tag-close\", {\n\t\t\t\t\t\t\"i-tag-hover-close\": hoverShowClose,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={onClose}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\nexport default Tag;\n","import { CheckRound, SearchRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { TOption } from \"../../type\";\nimport Icon from \"../icon\";\nimport List from \"../list\";\nimport Tag from \"../tag\";\nimport Empty from \"../utils/empty\";\nimport { ISelectOptions } from \"./type\";\nexport const Options = (props: ISelectOptions) => {\n\tconst {\n\t\tvalue: val,\n\t\toptions,\n\t\tfilter,\n\t\tfilterPlaceholder,\n\t\tmultiple,\n\t\tempty = <Empty />,\n\t\tonSelect,\n\t\tonFilter,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-select-options\", {\n\t\t\t\t\"i-select-options-multiple\": multiple,\n\t\t\t})}\n\t\t>\n\t\t\t{filter && multiple && (\n\t\t\t\t<div className='i-select-filter'>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<SearchRound />}\n\t\t\t\t\t\tclassName='color-8 ml-8 my-auto'\n\t\t\t\t\t\tsize='1.2em'\n\t\t\t\t\t/>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype='text'\n\t\t\t\t\t\tclassName='i-input'\n\t\t\t\t\t\tplaceholder={filterPlaceholder}\n\t\t\t\t\t\tonChange={onFilter}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{options.length === 0 && empty}\n\n\t\t\t{options.map((option, i) => {\n\t\t\t\tconst { label, value, disabled } = option;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? val?.includes(value)\n\t\t\t\t\t: val === value;\n\n\t\t\t\treturn (\n\t\t\t\t\t<List.Item\n\t\t\t\t\t\tkey={(value as string) || i}\n\t\t\t\t\t\tactive={isActive}\n\t\t\t\t\t\ttype='option'\n\t\t\t\t\t\tonClick={() => onSelect?.(value, option)}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{multiple && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={<CheckRound />}\n\t\t\t\t\t\t\t\tclassName='i-select-option-check'\n\t\t\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</List.Item>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport const activeOptions = (\n\toptions: TOption[] = [],\n\tvalue: any[] = [],\n\tmax = 3\n) => {\n\tconst total = options.flatMap((opt) =>\n\t\tvalue.includes(opt.value) ? [opt] : []\n\t);\n\n\tif (max >= total.length) return total;\n\n\tconst rest = total.length - max;\n\tconst after = total.slice(0, max);\n\tafter.push(rest as any);\n\n\treturn after;\n};\n\nexport const displayValue = (config) => {\n\tconst { options, value, maxDisplay, multiple, onSelect } = config;\n\n\tif (multiple) {\n\t\treturn activeOptions(options, value, maxDisplay).map((opt, i) => {\n\t\t\tif (typeof opt === \"number\") return <Tag key={i}>+{opt}</Tag>;\n\n\t\t\tconst { label, value } = opt;\n\n\t\t\treturn (\n\t\t\t\t<Tag\n\t\t\t\t\tkey={value as string}\n\t\t\t\t\thoverShowClose\n\t\t\t\t\tonClose={(e) => {\n\t\t\t\t\t\te?.stopPropagation();\n\t\t\t\t\t\tonSelect?.(value, opt);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Tag>\n\t\t\t);\n\t\t});\n\t}\n\n\treturn options.find((opt: TOption) => opt.value === value)?.label;\n};\n","import { UnfoldMoreRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport { ChangeEvent, useEffect, useMemo, useState } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport { TOption } from \"../../type\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { Options, displayValue } from \"./options\";\nimport { ISelect } from \"./type\";\n\nconst Select = (props: ISelect) => {\n\tconst {\n\t\tref,\n\t\ttype = \"text\",\n\t\tname,\n\t\tlabel,\n\t\tvalue = \"\",\n\t\tplaceholder,\n\t\toptions = [],\n\t\tmultiple,\n\t\tprepend,\n\t\tappend,\n\t\tlabelInline,\n\t\tstyle,\n\t\tclassName,\n\t\tmessage,\n\t\tstatus = \"normal\",\n\t\thideClear,\n\t\thideArrow,\n\t\tmaxDisplay,\n\t\tborder,\n\t\tfilter,\n\t\ttip,\n\t\tfilterPlaceholder = \"...\",\n\t\tpopupProps,\n\t\tonSelect,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tinputValue: \"\",\n\t\tfilterValue: \"\",\n\t\tvalue,\n\t\tloading: false,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst filterOptions = useMemo(() => {\n\t\tconst { filterValue: fv } = state;\n\t\tif (!fv || !filter) return formattedOptions;\n\n\t\tconst filterFn =\n\t\t\ttypeof filter === \"function\"\n\t\t\t\t? filter\n\t\t\t\t: (opt) => opt.value.includes(fv) || opt.label.includes(fv);\n\n\t\treturn formattedOptions.filter(filterFn);\n\t}, [formattedOptions, filter, state.filterValue]);\n\n\tconst changeValue = (v: any) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSelect = (value: any, option?: TOption) => {\n\t\tonSelect?.(value, option);\n\n\t\tif (multiple) {\n\t\t\tconst values = [...(state.value as any[])];\n\t\t\tconst i = values.findIndex((v) => v === value);\n\n\t\t\ti > -1 ? values.splice(i, 1) : values.push(value);\n\t\t\tchangeValue(values as any);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetActive(false);\n\t\tchangeValue(value);\n\t};\n\n\tconst handleVisibleChange = (visible: boolean) => {\n\t\tsetActive(visible);\n\n\t\tif (!filter) return;\n\n\t\tstate.filterValue = \"\";\n\t};\n\n\tconst handleHelperClick = () => {\n\t\tif (!active) return;\n\n\t\tchangeValue(multiple ? [] : \"\");\n\t};\n\n\tconst handleFilterChange = debounce(\n\t\t{ delay: 400 },\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst v = e.target.value;\n\t\t\tstate.filterValue = v;\n\t\t}\n\t);\n\n\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tstate.filterValue = e.target.value;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\tconst hasValue = multiple\n\t\t? (state.value as any[]).length > 0\n\t\t: !!state.value;\n\tconst clearable = !hideClear && active && hasValue;\n\tconst text = message ?? tip;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t<Popup\n\t\t\t\tposition='bottom'\n\t\t\t\tarrow={false}\n\t\t\t\tfitSize\n\t\t\t\t{...popupProps}\n\t\t\t\tvisible={active}\n\t\t\t\ttrigger='none'\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t\tcontent={\n\t\t\t\t\t<Options\n\t\t\t\t\t\toptions={filterOptions}\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tfilter={!!filter}\n\t\t\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonFilter={handleFilterChange}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-input-item\", {\n\t\t\t\t\t\t[`i-input-${status}`]: status !== \"normal\",\n\t\t\t\t\t\t\"i-input-borderless\": !border,\n\t\t\t\t\t\t\"i-input-focus\": active,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={() => setActive(true)}\n\t\t\t\t>\n\t\t\t\t\t{prepend}\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\ttype='hidden'\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{multiple ? (\n\t\t\t\t\t\thasValue ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-input i-select\", {\n\t\t\t\t\t\t\t\t\t\"i-select-multiple\": multiple,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{displayValue({\n\t\t\t\t\t\t\t\t\toptions: formattedOptions,\n\t\t\t\t\t\t\t\t\tvalue: state.value,\n\t\t\t\t\t\t\t\t\tmultiple,\n\t\t\t\t\t\t\t\t\tmaxDisplay,\n\t\t\t\t\t\t\t\t\tonSelect: handleSelect,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\n\t\t\t\t\t{!multiple && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={active ? state.filterValue : state.value}\n\t\t\t\t\t\t\tclassName='i-input i-select'\n\t\t\t\t\t\t\tplaceholder={state.value || placeholder}\n\t\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\t\treadOnly={!filter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Helpericon\n\t\t\t\t\t\tactive={!hideArrow}\n\t\t\t\t\t\ticon={clearable ? undefined : <UnfoldMoreRound />}\n\t\t\t\t\t\tonClick={handleHelperClick}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{append}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\n\t\t\t{text && <span className='i-input-message'>{text}</span>}\n\t\t</label>\n\t);\n};\n\nexport default Select;\n","import { CheckRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Button from \"../../button\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Select from \"../../select\";\n\nexport const ColorMethods = {\n\tHEX: \"toHexString\",\n\tRGB: \"toRgbString\",\n\tHSB: \"toHsbString\",\n};\n\nexport default function Footer(props) {\n\tconst { value, type, onTypeChange, onChange, onOk } = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\ttype,\n\t});\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tstate.type = t;\n\t\tonTypeChange(t);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t\tstate.type = type;\n\t}, [value, type]);\n\n\treturn (\n\t\t<div className='i-colorpicker-footer'>\n\t\t\t<Select\n\t\t\t\treadOnly\n\t\t\t\thideClear\n\t\t\t\thideArrow\n\t\t\t\tstyle={{ width: \"5.6em\" }}\n\t\t\t\toptions={[\"RGB\", \"HEX\", \"HSB\"]}\n\t\t\t\tvalue={state.type}\n\t\t\t\tonChange={handleTypeChange}\n\t\t\t/>\n\t\t\t<Input\n\t\t\t\tplaceholder='color'\n\t\t\t\tvalue={state.value}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\t\t\t<Button square onClick={onOk}>\n\t\t\t\t<Icon icon={<CheckRound />} />\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n","import classNames from \"classnames\";\n\nconst Handle = (props) => {\n\tconst { ref, color, handle, placeholder, className, ...restProps } = props;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-colorpicker-handle\", className)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{handle !== \"text\" && (\n\t\t\t\t<i\n\t\t\t\t\tclassName='i-colorpicker-square'\n\t\t\t\t\tstyle={{ background: color }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{handle !== \"square\" && (\n\t\t\t\t<span className='i-colorpicker-text' style={{ color }}>\n\t\t\t\t\t{color ?? placeholder}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Handle;\n","import ColorsPanel from \"@rc-component/color-picker\";\nimport \"@rc-component/color-picker/assets/index.css\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect } from \"react\";\nimport Popup from \"../../popup\";\nimport { IColorPicker } from \"../type\";\nimport Footer, { ColorMethods } from \"./footer\";\nimport Handle from \"./handle\";\nimport \"./index.css\";\n\nexport default function ColorPicker(props: IColorPicker) {\n\tconst {\n\t\tvalue,\n\t\ttype = \"HEX\",\n\t\tdisabledAlpha,\n\t\tchildren,\n\t\tusePanel,\n\t\thandle = \"both\",\n\t\tplaceholder = \"Colors\",\n\t\tpopupProps,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttype,\n\t\tvalue,\n\t\tsyncValue: value,\n\t\tvisible: popupProps?.visible,\n\t});\n\n\tconst handleChange = (target) => {\n\t\tstate.syncValue = target;\n\t};\n\n\tconst handleComplete = (target) => {\n\t\tconst method = ColorMethods[state.type];\n\n\t\tif (target.a !== 1) {\n\t\t\ttarget.a = parseFloat(target.a.toFixed(3));\n\t\t}\n\n\t\tstate.value = target[method]?.();\n\t};\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\tpopupProps?.onVisibleChange?.(v);\n\t};\n\n\tconst handleTypeChange = (t) => {\n\t\tconst method = ColorMethods[t];\n\n\t\tstate.type = t;\n\t\tstate.value = state.syncValue[method]?.();\n\t};\n\n\tconst handleValueChange = (v) => {\n\t\tstate.value = v;\n\t\tstate.syncValue = v;\n\t};\n\n\tconst handleOk = () => {\n\t\tonChange?.(state.value);\n\t\tstate.visible = false;\n\t};\n\n\tuseEffect(() => {\n\t\tstate.syncValue = value;\n\t\tstate.value = value;\n\t}, [value]);\n\n\tif (usePanel) {\n\t\treturn <ColorsPanel {...props} />;\n\t}\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\ttouchable\n\t\t\tposition='bottom'\n\t\t\t{...popupProps}\n\t\t\tvisible={state.visible}\n\t\t\tcontent={\n\t\t\t\t<ColorsPanel\n\t\t\t\t\tvalue={state.syncValue}\n\t\t\t\t\tdisabledAlpha={disabledAlpha}\n\t\t\t\t\tpanelRender={(panel) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{panel}\n\t\t\t\t\t\t\t\t<Footer\n\t\t\t\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\t\t\t\ttype={state.type}\n\t\t\t\t\t\t\t\t\tonTypeChange={handleTypeChange}\n\t\t\t\t\t\t\t\t\tonChange={handleValueChange}\n\t\t\t\t\t\t\t\t\tonOk={handleOk}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonChangeComplete={handleComplete}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children ?? (\n\t\t\t\t<Handle\n\t\t\t\t\tcolor={value}\n\t\t\t\t\thandle={handle}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Popup>\n\t);\n}\n","import classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { ReactNode, useMemo } from \"react\";\nimport { IBaseDates } from \"../type\";\n\nconst Dates = (\n\tprops: IBaseDates & {\n\t\tmonth: any;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tmonth,\n\t\tweeks = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\trenderDate = (date: Dayjs) => date.date(),\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\tconst today = dayjs();\n\n\tconst dates = useMemo(() => {\n\t\tconst dates: Dayjs[] = [];\n\n\t\tconst lastDateOfLastMonth = month.add(-1, \"month\").endOf(\"month\");\n\t\tlet { $W, $D } = lastDateOfLastMonth;\n\n\t\tif ($W !== 0) {\n\t\t\tconst lastMonthDates = Array.from({ length: $W }).map(\n\t\t\t\t(whatever, i) => lastDateOfLastMonth.add(i + 1 - $W, \"day\")\n\t\t\t);\n\t\t\tdates.push(...lastMonthDates);\n\t\t}\n\n\t\tconst lastDate = month.endOf(\"month\");\n\t\t$D = lastDate.$D;\n\t\t$W = lastDate.$W;\n\t\tdates.push(\n\t\t\t...Array.from({ length: $D }).map((whatever, i) =>\n\t\t\t\tlastDate.add(i + 1 - $D, \"day\")\n\t\t\t)\n\t\t);\n\n\t\tif ($W !== 0) {\n\t\t\tdates.push(\n\t\t\t\t...Array.from({ length: 7 - $W }).map((whatever, i) =>\n\t\t\t\t\tlastDate.add(i + 1, \"day\")\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn dates;\n\t}, [month]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\tif (disabledDate?.(date)) return;\n\n\t\tonDateClick?.(date);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className='i-datepicker-weeks'>\n\t\t\t\t{weeks.map((week: ReactNode, i: number) => (\n\t\t\t\t\t<span key={i} className='i-datepicker-week'>\n\t\t\t\t\t\t{week}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className='i-datepicker-dates'>\n\t\t\t\t{dates.map((date, i: number) => {\n\t\t\t\t\tconst active = date.isSame(value, \"day\");\n\t\t\t\t\tconst isSameMonth = date.isSame(month, \"month\");\n\t\t\t\t\tconst isToday = date.isSame(today, \"day\");\n\t\t\t\t\tconst disabled = disabledDate?.(date);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-item\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\": active,\n\t\t\t\t\t\t\t\t\"i-datepicker-same-month\": isSameMonth,\n\t\t\t\t\t\t\t\t\"i-datepicker-today\": isToday,\n\t\t\t\t\t\t\t\t\"i-datepicker-disabled\": disabled,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() => handleDateClick(date)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderDate(date)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default Dates;\n","import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { throttle } from \"radash\";\nimport { ReactNode, useEffect, useRef } from \"react\";\nimport Icon from \"../../icon\";\nimport Helpericon from \"../../utils/helpericon\";\nimport { IBaseDates } from \"../type\";\nimport Dates from \"./dates\";\n\nconst MONTHS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\nconst YearMonth = (\n\tprops: IBaseDates & {\n\t\tonClick?: () => void;\n\t}\n) => {\n\tconst {\n\t\tvalue,\n\t\tunitMonth = \"月\",\n\t\tunitYear = \"年\",\n\t\trenderYear,\n\t\trenderMonth,\n\t\tonClick,\n\t} = props;\n\n\treturn (\n\t\t<a className='i-datepicker-action' data-ripple onClick={onClick}>\n\t\t\t<span>{renderYear?.(value.year())}</span>\n\t\t\t{unitYear}\n\t\t\t<span>{renderMonth?.(value.month() + 1)}</span>\n\t\t\t{unitMonth}\n\t\t</a>\n\t);\n};\n\nconst Panel = (props: IBaseDates) => {\n\tconst {\n\t\tvalue,\n\t\tunitYear,\n\t\tunitMonth,\n\t\trenderDate,\n\t\trenderMonth = (m: ReactNode) => m,\n\t\trenderYear = (y: ReactNode) => y,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t} = props;\n\n\tconst state = useReactive({\n\t\ttoday: value,\n\t\tmonth: value || dayjs(),\n\t\tselectedYear: dayjs(),\n\t\tyears: [] as number[],\n\t\tselectable: false,\n\t});\n\n\tconst $years = useRef<HTMLDivElement>(null);\n\n\tconst handleOperateMonth = (next: boolean) => {\n\t\tstate.month = state.month[next ? \"add\" : \"subtract\"](1, \"month\");\n\t};\n\n\tconst handleChangeDate = (date: Dayjs) => {\n\t\tif (date.isSame(state.today, \"day\")) return;\n\n\t\tif (!date.isSame(state.month, \"month\")) {\n\t\t\tstate.month = date;\n\t\t}\n\n\t\tstate.today = date;\n\t\tonDateClick?.(date);\n\t};\n\n\tconst handleChangeMonth = (month: number) => {\n\t\tstate.month = state.month\n\t\t\t.year(state.selectedYear.year())\n\t\t\t.month(month - 1);\n\t\tstate.selectable = false;\n\t};\n\n\tconst getMoreYears = throttle({ interval: 100 }, (e) => {\n\t\tconst isUp = e.deltaY < 0;\n\n\t\tstate.years = state.years.map((y) => (y += isUp ? -1 : 1));\n\t});\n\n\tuseEffect(() => {\n\t\tif (!state.selectable) return;\n\n\t\tstate.selectedYear = state.month;\n\t\tconst y = state.selectedYear.year();\n\t\tconst years = Array.from({ length: 7 }).map((_, i) => y - 3 + i);\n\n\t\tstate.years = [...years];\n\t}, [state.selectable]);\n\n\tuseEffect(() => {\n\t\tstate.today = value;\n\t\tstate.month = value || dayjs();\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-datepicker'>\n\t\t\t<div className='i-datepicker-units'>\n\t\t\t\t<YearMonth\n\t\t\t\t\tvalue={state.month}\n\t\t\t\t\tunitYear={unitYear}\n\t\t\t\t\tunitMonth={unitMonth}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tonClick={() => (state.selectable = true)}\n\t\t\t\t/>\n\t\t\t\t<a\n\t\t\t\t\tclassName='ml-auto i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(false)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t</a>\n\t\t\t\t<a\n\t\t\t\t\tclassName='i-datepicker-action'\n\t\t\t\t\tdata-ripple\n\t\t\t\t\tonClick={() => handleOperateMonth(true)}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t</a>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-datepicker-ym\", {\n\t\t\t\t\t\"i-datepicker-active\": state.selectable,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Helpericon\n\t\t\t\t\tactive\n\t\t\t\t\tclassName='i-datepicker-close'\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tstate.selectable = false;\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tref={$years}\n\t\t\t\t\tclassName='i-datepicker-years'\n\t\t\t\t\tonWheel={getMoreYears}\n\t\t\t\t>\n\t\t\t\t\t{state.years.map((y) => (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tkey={y}\n\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-year\", {\n\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\ty === state.selectedYear.year(),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t(state.selectedYear =\n\t\t\t\t\t\t\t\t\tstate.selectedYear.year(y))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderYear(y)}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t<div className='i-datepicker-months'>\n\t\t\t\t\t{MONTHS.map((m) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={m}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-datepicker-month\", {\n\t\t\t\t\t\t\t\t\t\"i-datepicker-active\":\n\t\t\t\t\t\t\t\t\t\tm === state.month.month() + 1,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => handleChangeMonth(m)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderMonth(m)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dates\n\t\t\t\tvalue={state.today}\n\t\t\t\tmonth={state.month}\n\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\tonDateClick={handleChangeDate}\n\t\t\t\trenderDate={renderDate}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Panel;\n","import { CalendarMonthTwotone } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { IDatePicker } from \"../type\";\nimport \"./index.css\";\nimport Panel from \"./panel\";\n\ndayjs.extend(customParseFormat);\n\nconst FORMATTYPES = [\"YYYY-MM-DD\", \"YYYY-M-D\", \"YYYY/MM/DD\", \"YYYY/M/D\"];\nconst FORMAT = \"YYYY-MM-DD\";\n\nconst Datepicker = (props: IDatePicker) => {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tweeks,\n\t\tformat = FORMAT,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderDate,\n\t\trenderMonth,\n\t\trenderYear,\n\t\tpopupProps,\n\t\tdisabledDate,\n\t\tonDateClick,\n\t\tonChange,\n\t\tonBlur,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst dayJsValue = useMemo(() => {\n\t\tif (!state.value) return null;\n\n\t\tconst date = dayjs(state.value as string, format, true);\n\n\t\tif (date.isValid()) return date;\n\n\t\treturn null;\n\t}, [state.value]);\n\n\tconst handleDateClick = (date: Dayjs) => {\n\t\thandleChange(date.format(format));\n\t};\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t\tonChange?.(v);\n\t};\n\n\tconst handleSetDate = () => {\n\t\tif (!state.value) return;\n\n\t\tconst date = dayjs(state.value as string, FORMATTYPES, true);\n\n\t\tif (date.isValid()) {\n\t\t\thandleChange(date.format(format));\n\t\t\treturn;\n\t\t}\n\n\t\thandleChange(\"\");\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleSetDate();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\twatchResize\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={dayJsValue}\n\t\t\t\t\tweeks={weeks}\n\t\t\t\t\trenderDate={renderDate}\n\t\t\t\t\trenderMonth={renderMonth}\n\t\t\t\t\trenderYear={renderYear}\n\t\t\t\t\tdisabledDate={disabledDate}\n\t\t\t\t\tonDateClick={handleDateClick}\n\t\t\t\t/>\n\t\t\t}\n\t\t\t{...popupProps}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<CalendarMonthTwotone />}\n\t\t\t\t\t\tclassName='i-datepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonEnter={handleSetDate}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n};\n\nexport default Datepicker;\n","import classNames from \"classnames\";\n\nexport default function Items(props) {\n\tconst { items = [], active, renderItem, unit, onClick } = props;\n\n\treturn items.map((n) => {\n\t\tconst isActive = n === active;\n\n\t\treturn (\n\t\t\t<a\n\t\t\t\tkey={n}\n\t\t\t\tclassName={classNames(\"i-timepicker-item\", {\n\t\t\t\t\t\"i-timepicker-item-active\": isActive,\n\t\t\t\t})}\n\t\t\t\tonClick={() => onClick(n)}\n\t\t\t>\n\t\t\t\t{renderItem?.(n, isActive, unit) ?? (n < 10 ? `0${n}` : n)}\n\t\t\t</a>\n\t\t);\n\t});\n}\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useMemo } from \"react\";\nimport \"./index.css\";\nimport Items from \"./item\";\n\nconst UnitMaps = {\n\th: \"hour\",\n\thh: \"hour\",\n\tm: \"minute\",\n\tmm: \"minute\",\n\ts: \"second\",\n\tss: \"second\",\n};\n\nexport default function Panel(props) {\n\tconst {\n\t\tvalue,\n\t\tstepH = 1,\n\t\tstepM = 1,\n\t\tstepS = 1,\n\t\tformat,\n\t\tperiods,\n\t\trenderItem,\n\t\tonChange,\n\t\tonFallback,\n\t} = props;\n\tconst state = useReactive<any>({\n\t\tperiod: undefined,\n\t\thour: undefined,\n\t\tminute: undefined,\n\t\tsecond: undefined,\n\t});\n\n\tconst [hours, minutes, seconds] = useMemo(() => {\n\t\tconst hasH = format.includes(\"h\");\n\t\tconst hasM = format.includes(\"m\");\n\t\tconst hasS = format.includes(\"s\");\n\t\tconst hours = hasH\n\t\t\t? Array.from(\n\t\t\t\t\t{ length: (periods ? 12 : 24) / stepH },\n\t\t\t\t\t(_, i) => i * stepH\n\t\t\t )\n\t\t\t: [];\n\t\tconst minutes = hasM\n\t\t\t? Array.from({ length: 60 / stepM }, (_, i) => i * stepM)\n\t\t\t: [];\n\t\tconst seconds = hasS\n\t\t\t? Array.from({ length: 60 / stepS }, (_, i) => i * stepS)\n\t\t\t: [];\n\n\t\treturn [hours, minutes, seconds];\n\t}, [stepH, stepM, stepS, format, periods]);\n\n\tconst updateValue = () => {\n\t\tconst reg = /(hh|h){1}|(mm|m){1}|(ss|s){1}/gi;\n\t\tlet result = format.replace(reg, (pattern) => {\n\t\t\tconst p = pattern.toLowerCase();\n\t\t\tconst u = UnitMaps[p];\n\t\t\tconst n = state[u] ?? 0;\n\n\t\t\treturn p.length > 1 && n < 10 ? `0${n ?? 0}` : n ?? 0;\n\t\t});\n\n\t\tif (periods && hours.length > 0) {\n\t\t\tresult = `${state.period ?? periods[0]} ${result}`;\n\t\t}\n\n\t\tonChange(result);\n\t};\n\n\tconst handleSetTime = (v, unit) => {\n\t\tstate[unit] = v;\n\t\tupdateValue();\n\t};\n\n\tuseEffect(() => {\n\t\tlet time = value ?? \"\";\n\n\t\tif (periods && hours.length > 0 && value) {\n\t\t\tconst [p, t] = value.split(\" \");\n\t\t\ttime = t ?? \"\";\n\t\t\tstate.period = periods.includes(p) ? p : undefined;\n\t\t}\n\n\t\tconst nums = time.match(/\\d+/g) ?? [];\n\n\t\tif (!nums.length) {\n\t\t\tonFallback(\"\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet i = 0;\n\t\tconst r = format.replace(/(hh|h)+|(mm|m)+|(ss|s)+/gi, (p) => {\n\t\t\tconst n = nums[i++] ?? 0;\n\t\t\tlet o = p;\n\n\t\t\tif (UnitMaps[p] === \"hour\") {\n\t\t\t\to = Math.min(periods ? 11 : 23, n);\n\t\t\t}\n\n\t\t\to = Math.min(59, n);\n\n\t\t\tstate[UnitMaps[p]] = o;\n\t\t\treturn p.length > 1 && o < 10 ? `0${o}` : o;\n\t\t});\n\n\t\tonFallback(r);\n\t}, [value]);\n\n\treturn (\n\t\t<div className='i-timepicker'>\n\t\t\t{hours.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{periods && (\n\t\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\t\titems={periods}\n\t\t\t\t\t\t\t\tactive={state.period}\n\t\t\t\t\t\t\t\tonClick={(p) => handleSetTime(p, \"period\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t\t<Items\n\t\t\t\t\t\t\titems={hours}\n\t\t\t\t\t\t\tactive={state.hour}\n\t\t\t\t\t\t\tunit='hour'\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\tonClick={(h) => handleSetTime(h, \"hour\")}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{minutes.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={minutes}\n\t\t\t\t\t\tactive={state.minute}\n\t\t\t\t\t\tunit='minute'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(m) => handleSetTime(m, \"minute\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{seconds.length > 0 && (\n\t\t\t\t<div className='i-timepicker-list'>\n\t\t\t\t\t<Items\n\t\t\t\t\t\titems={seconds}\n\t\t\t\t\t\tactive={state.second}\n\t\t\t\t\t\tunit='second'\n\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\tonClick={(s) => handleSetTime(s, \"second\")}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { AccessTimeRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { useEffect, useState } from \"react\";\nimport Icon from \"../../icon\";\nimport Input from \"../../input\";\nimport Popup from \"../../popup\";\nimport { ITimePicker } from \"../type\";\nimport Panel from \"./panel\";\n\nconst FORMAT = \"hh:mm:ss\";\n\nexport default function TimePicker(props: ITimePicker) {\n\tconst {\n\t\tname,\n\t\tvalue,\n\t\tformat = FORMAT,\n\t\tperiods,\n\t\tplaceholder = props.format ?? FORMAT,\n\t\trenderItem,\n\t\tonChange,\n\t\tonBlur,\n\t\tpopupProps,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tvalue,\n\t\tsafeValue: undefined,\n\t});\n\tconst [active, setActive] = useState<boolean>(false);\n\n\tconst handleChange = (v) => {\n\t\tstate.value = v;\n\t};\n\n\tconst handleFallback = (v) => {\n\t\tstate.safeValue = v;\n\t};\n\n\tconst handleValidTime = () => {\n\t\tif (!state.value) return;\n\n\t\tstate.value = state.safeValue;\n\t\thandleChange(state.safeValue);\n\t};\n\n\tconst handleBlur = (e) => {\n\t\tonBlur?.(e);\n\t\thandleValidTime();\n\t};\n\n\tconst handleVisibleChange = (v) => {\n\t\tpopupProps?.onVisibleChange?.(v);\n\t\tsetActive(v);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<Popup\n\t\t\tvisible={active}\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\twatchResize\n\t\t\t{...popupProps}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\tcontent={\n\t\t\t\t<Panel\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tformat={format}\n\t\t\t\t\tperiods={periods}\n\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonFallback={handleFallback}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Input\n\t\t\t\tvalue={state.value}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tappend={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<AccessTimeRound />}\n\t\t\t\t\t\tclassName='i-timepicker-icon'\n\t\t\t\t\t\tsize='1em'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</Popup>\n\t);\n}\n","import { InfoOutlined } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport { MouseEvent } from \"react\";\nimport Button from \"../button\";\nimport { IButton } from \"../button/type\";\nimport Flex from \"../flex\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport { IPopconfirm } from \"./type\";\n\nconst defaultOk = {\n\tchildren: \"确定\",\n};\n\nconst defaultCancel = {\n\tchildren: \"取消\",\n\tsecondary: true,\n};\n\nconst Popconfirm = (props: IPopconfirm) => {\n\tconst {\n\t\ttrigger = \"click\",\n\t\tvisible,\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' />,\n\t\tcontent,\n\t\tokButtonProps,\n\t\tcancelButtonProps,\n\t\tchildren,\n\t\talign = \"end\",\n\t\tposition = \"top\",\n\t\toffset = 12,\n\t\textra,\n\t\tonOk,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tloading: false,\n\t\tvisible,\n\t});\n\n\tconst ok: IButton = okButtonProps\n\t\t? Object.assign({}, defaultOk, okButtonProps)\n\t\t: defaultOk;\n\tconst cancel: IButton = cancelButtonProps\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\n\t\t: defaultCancel;\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tstate.visible = v;\n\t\trestProps.onVisibleChange?.(v);\n\t};\n\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\n\t\tstate.loading = true;\n\t\tok.onClick?.(e);\n\n\t\tonOk?.()\n\t\t\t?.then(() => {\n\t\t\t\tstate.visible = false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tstate.loading = false;\n\t\t\t});\n\t};\n\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\n\t\tcancel.onClick?.(e);\n\t\tawait onClose?.();\n\t\tstate.visible = false;\n\t};\n\n\tconst popconfirmContent = (\n\t\t<div className='i-popconfirm'>\n\t\t\t<Flex gap={12}>\n\t\t\t\t{icon}\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\n\t\t\t</Flex>\n\n\t\t\t<Flex\n\t\t\t\tgap={12}\n\t\t\t\tjustify='flex-end'\n\t\t\t\tclassName='mt-8 i-popconfirm-footer'\n\t\t\t>\n\t\t\t\t{cancelButtonProps !== null && (\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\n\t\t\t\t)}\n\t\t\t\t{extra}\n\t\t\t\t{okButtonProps !== null && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t{...ok}\n\t\t\t\t\t\tonClick={handleOk}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<Popup\n\t\t\tcontent={popconfirmContent}\n\t\t\t{...restProps}\n\t\t\ttrigger={trigger}\n\t\t\tvisible={state.visible}\n\t\t\talign={align}\n\t\t\toffset={offset}\n\t\t\tposition={position}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nexport default Popconfirm;\n","import classNames from \"classnames\";\nimport { ChangeEvent } from \"react\";\nimport { IRadioItem } from \"./type\";\n\nexport default function RadioItem(props: IRadioItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tname,\n\t\tvalue,\n\t\tchecked,\n\t\tdisabled,\n\t\tchildren,\n\t\tonChange,\n\t} = props;\n\n\tconst handleChange = (e: ChangeEvent) => {\n\t\tonChange?.(value, e);\n\t};\n\n\treturn (\n\t\t<label className={classNames(\"i-radio-item\", { disabled })}>\n\t\t\t<input\n\t\t\t\ttype='radio'\n\t\t\t\tname={name}\n\t\t\t\tchecked={checked}\n\t\t\t\tclassName={classNames(\"i-radio-input\", `i-radio-${type}`)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t<span className='i-radio-text'>{children}</span>\n\t\t</label>\n\t);\n}\n","import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tstate.value = value;\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => (\n\t\t\t\t\t<RadioItem\n\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\tchecked={state.value === option.value}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</RadioItem>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n","import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n","import \"./index.css\";\n\nexport default function Divider() {\n\treturn <i className='i-step-divider' />;\n}\n","import { CheckRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Divider from \"./divider\";\nimport { IStepItem } from \"./type\";\n\nconst STATUS = [\"finished\", \"active\", \"pending\"];\n\nfunction defaultRenderIcon(i: number, status: string) {\n\treturn (\n\t\t<span className='i-step-item-index'>\n\t\t\t{status === \"finished\" ? (\n\t\t\t\t<CheckRound style={{ width: \"1em\", height: \"1.5em\" }} />\n\t\t\t) : (\n\t\t\t\ti + 1\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction Item(props: IStepItem) {\n\tconst {\n\t\tindex = 0,\n\t\tactive = 0,\n\t\trenderIcon = defaultRenderIcon,\n\t\ttitle,\n\t\tvertical,\n\t\tline = <Divider />,\n\t\tasList,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\tconst status = STATUS[index === active ? 1 : index < active ? 0 : 2];\n\n\tconst handleClick = () => {\n\t\tonClick?.(index);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-step-item-${status}`]: !asList,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{vertical ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-left'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='i-step-item-right'>\n\t\t\t\t\t\t<div className='i-step-item-title'>{title}</div>\n\t\t\t\t\t\t{children && (\n\t\t\t\t\t\t\t<div className='i-step-item-content'>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className='i-step-item-title'>\n\t\t\t\t\t\t{renderIcon?.(index, status)}\n\n\t\t\t\t\t\t<span>{title}</span>\n\n\t\t\t\t\t\t{line}\n\t\t\t\t\t</div>\n\t\t\t\t\t{children && (\n\t\t\t\t\t\t<div className='i-step-item-content'>{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Item;\n","import classNames from \"classnames\";\nimport { Children, ReactNode, useMemo } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IStep } from \"./type\";\n\nconst Step = (props: IStep) => {\n\tconst {\n\t\tactive = 0,\n\t\tvertical,\n\t\trenderIcon,\n\t\tline,\n\t\tstyle,\n\t\tasList,\n\t\tclassName,\n\t\tchildren,\n\t\tonClick,\n\t} = props;\n\n\tconst steps = useMemo(() => {\n\t\tconst nodes: ReactNode[] = [];\n\t\tlet index = 0;\n\n\t\tChildren.map(children, (el: any) => {\n\t\t\tif (!el || el.type !== Item) return;\n\n\t\t\tconst { props: elProps } = el;\n\n\t\t\tnodes.push({\n\t\t\t\t...el,\n\t\t\t\tprops: {\n\t\t\t\t\trenderIcon,\n\t\t\t\t\tline,\n\t\t\t\t\tonClick,\n\t\t\t\t\t...elProps,\n\t\t\t\t\tvertical,\n\t\t\t\t\tactive,\n\t\t\t\t\tasList,\n\t\t\t\t\tindex: index++,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\treturn nodes;\n\t}, [active, children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-step\",\n\t\t\t\t{ \"i-step-vertical\": vertical },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{steps}\n\t\t</div>\n\t);\n};\n\nStep.Item = Item;\n\nexport default Step;\n","import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport { ISwiperItem } from \"./type\";\n\nfunction Item(props: ISwiperItem) {\n\tconst {\n\t\tindex = 0,\n\t\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\tPromise.resolve().then(() => {\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});\n\t}, [state.active, bar]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || state.active === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore) return;\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = i, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": state.active === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={state.barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && state.overflow && state.more.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{state.more.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = i, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = state.active === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(state.more)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\tconst { key = i, content } = tab;\n\t\t\t\t\tconst isActive = state.active === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && state.cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n","import { KeyboardArrowDownRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useState } from \"react\";\nimport Checkbox from \"../checkbox\";\nimport Icon from \"../icon\";\nimport { ITree, ITreeHeader, PropsTreeItem } from \"./type\";\n\ninterface ITreeList extends Omit<ITree, \"nodeProps\"> {\n\tnodeProps: {\n\t\tkey: string;\n\t\ttitle: string;\n\t\tchildren: string;\n\t};\n}\n\nexport function TreeList(props: ITreeList) {\n\tconst {\n\t\tdata = [],\n\t\tdepth = 0,\n\t\tround,\n\t\tstyle,\n\t\tclassName,\n\t\tparent,\n\t\tnodeProps,\n\t\t...restProps\n\t} = props;\n\n\tconst contents = data.map((item, i) => {\n\t\tconst { type } = item;\n\t\tconst title = item[nodeProps.title];\n\t\tconst itemKey =\n\t\t\titem[nodeProps.key] ||\n\t\t\t(parent?.key !== undefined ? `${parent.key}-${i}` : `${i}`);\n\n\t\titem.key = itemKey;\n\t\titem.parent = parent;\n\n\t\tif (type === \"title\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className='i-tree-group-title'>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif (type && type !== \"item\") {\n\t\t\treturn (\n\t\t\t\t<div key={i} className={`i-tree-type-${type}`}>\n\t\t\t\t\t{title}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TreeItem\n\t\t\t\tkey={itemKey}\n\t\t\t\tindex={i}\n\t\t\t\titem={item}\n\t\t\t\tdepth={depth}\n\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t);\n\t});\n\n\tif (depth > 0) return <>{contents}</>;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree\", className, {\n\t\t\t\t\"i-tree-round\": round,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{contents}\n\t\t</div>\n\t);\n}\n\nconst Header = (props: ITreeHeader) => {\n\tconst { as: Tag = \"a\", href, selected, children, ...restProps } = props;\n\n\tconst className = classNames(\"i-tree-item-header\", {\n\t\t\"i-tree-item-selected\": selected,\n\t});\n\n\tif (typeof Tag === \"string\") {\n\t\treturn (\n\t\t\t<Tag href={href} className={className} {...restProps}>\n\t\t\t\t{children}\n\t\t\t</Tag>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tag to={href || \"\"} className={className} {...restProps}>\n\t\t\t{children}\n\t\t</Tag>\n\t);\n};\n\nexport const TreeItem = (props: PropsTreeItem) => {\n\tconst {\n\t\titem,\n\t\tdepth = 0,\n\t\tindex,\n\t\tselected,\n\t\tchecked = [],\n\t\tpartofs = {},\n\t\tcheckable,\n\t\tnodeProps,\n\t\trenderExtra,\n\t\tonItemClick,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\n\tconst { as, key = \"\", href, icon, title, expanded, disabled } = item;\n\tconst children = item[nodeProps.children];\n\n\tconst [expand, setExpand] = useState(expanded);\n\n\tconst handleExpand = (e: MouseEvent<HTMLElement>, fromToggle?: boolean) => {\n\t\tif (fromToggle) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (disabled || !children?.length) return;\n\n\t\tsetExpand((v) => !v);\n\t};\n\n\tconst handleItemClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\thandleExpand(e);\n\t\tonItemClick?.(item, e);\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tconst handleItemCheck = (checked) => onItemCheck?.(item, checked, []);\n\tconst itemChecked = checked.includes(key);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-tree-item\", {\n\t\t\t\t\"i-tree-expand\": expand,\n\t\t\t})}\n\t\t>\n\t\t\t<Header\n\t\t\t\tas={as}\n\t\t\t\thref={href}\n\t\t\t\tstyle={{ paddingLeft: `${depth * 1.5 + 0.5}em` }}\n\t\t\t\tselected={selected === key}\n\t\t\t\tonClick={handleItemClick}\n\t\t\t>\n\t\t\t\t{checkable && (\n\t\t\t\t\t<Checkbox.Item\n\t\t\t\t\t\tvalue={itemChecked}\n\t\t\t\t\t\tpartof={!itemChecked && partofs[key]}\n\t\t\t\t\t\tclassName='i-tree-checkbox'\n\t\t\t\t\t\tonChange={handleItemCheck}\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{icon && <span className='i-tree-item-icon'>{icon}</span>}\n\n\t\t\t\t<span className='i-tree-item-title'>{title}</span>\n\n\t\t\t\t{renderExtra?.(item)}\n\n\t\t\t\t{children && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={<KeyboardArrowDownRound />}\n\t\t\t\t\t\tclassName='i-tree-toggle'\n\t\t\t\t\t\tonClick={(e) => handleExpand(e, true)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Header>\n\n\t\t\t{children?.length && (\n\t\t\t\t<div className='i-tree-item-content'>\n\t\t\t\t\t<TreeList\n\t\t\t\t\t\tdata={children}\n\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\tcheckable={checkable}\n\t\t\t\t\t\tparent={item}\n\t\t\t\t\t\tpartofs={partofs}\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tnodeProps={nodeProps}\n\t\t\t\t\t\trenderExtra={renderExtra}\n\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\tonItemSelect={onItemSelect}\n\t\t\t\t\t\tonItemCheck={onItemCheck}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useReactive } from \"ahooks\";\nimport { useEffect, useImperativeHandle } from \"react\";\nimport \"./index.css\";\nimport { TreeList } from \"./item\";\nimport { ITree, ITreeItem } from \"./type\";\n\nconst defaultNodeProps = {\n\tkey: \"key\",\n\ttitle: \"title\",\n\tchildren: \"children\",\n};\n\nconst Tree = (props: ITree) => {\n\tconst {\n\t\tdata = [],\n\t\tref,\n\t\tselected,\n\t\tchecked = [],\n\t\tdisabledRelated,\n\t\tnodeProps,\n\t\tonItemSelect,\n\t\tonItemCheck,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tselected,\n\t\tchecked,\n\t\tpartofs: {} as Record<string, boolean>,\n\t\tnodeMaps: new Map(),\n\t});\n\tconst oNodeProps = Object.assign({}, defaultNodeProps, nodeProps);\n\n\tconst isChecked = (key?: string) => state.checked.includes(key || \"\");\n\n\tconst checkItem = (\n\t\titem: ITreeItem,\n\t\tchecked: boolean,\n\t\tdirection?: \"root\" | \"leaf\"\n\t) => {\n\t\tconst { key = \"\", parent, children } = item;\n\t\tconst shouldChanged = { [key]: checked };\n\t\tconst partofs = { [key]: false };\n\n\t\tif (disabledRelated) return [shouldChanged];\n\n\t\tif (checked) {\n\t\t\tif (parent && direction !== \"leaf\") {\n\t\t\t\tconst hasUnchecked = parent.children?.some(\n\t\t\t\t\t(o) => o.key !== key && !isChecked(o.key)\n\t\t\t\t);\n\n\t\t\t\tconst [changes, parts] = checkItem(parent, true, \"root\");\n\n\t\t\t\tif (!hasUnchecked) {\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t}\n\n\t\t\t\tObject.assign(partofs, hasUnchecked ? parts : {}, {\n\t\t\t\t\t[parent.key as string]: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (children?.length && direction !== \"root\") {\n\t\t\t\tchildren.map((o) => {\n\t\t\t\t\tif (isChecked(o.key)) return;\n\n\t\t\t\t\tconst [changes] = checkItem(o, true, \"leaf\");\n\n\t\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [shouldChanged, partofs];\n\t\t}\n\n\t\tif (parent && direction !== \"leaf\") {\n\t\t\tconst [changes, parts] = checkItem(parent, false, \"root\");\n\n\t\t\tObject.assign(shouldChanged, changes);\n\n\t\t\tconst hasChecked = parent.children?.some(\n\t\t\t\t(o) => isChecked(o.key) && o.key !== key\n\t\t\t);\n\n\t\t\tObject.assign(partofs, hasChecked ? {} : parts, {\n\t\t\t\t[parent.key as string]: hasChecked,\n\t\t\t\t[key]: false,\n\t\t\t});\n\t\t}\n\t\tif (children?.length && direction !== \"root\") {\n\t\t\tchildren.map((o) => {\n\t\t\t\tconst [changes] = checkItem(o, false, \"leaf\");\n\n\t\t\t\tif (!isChecked(o.key)) return;\n\n\t\t\t\tObject.assign(shouldChanged, changes);\n\t\t\t\tpartofs[o.key as string] = false;\n\t\t\t});\n\t\t}\n\n\t\treturn [shouldChanged, partofs];\n\t};\n\n\tconst handleCheck = (item: ITreeItem, checked: boolean) => {\n\t\tconst [shouldChanged, partofs] = checkItem(item, checked);\n\t\tconst changedKeys = Object.keys(shouldChanged);\n\n\t\tstate.checked = checked\n\t\t\t? Array.from(new Set([...state.checked, ...changedKeys]))\n\t\t\t: state.checked.filter((k) => !changedKeys.includes(k));\n\n\t\tObject.assign(state.partofs, partofs);\n\n\t\tonItemCheck?.(item, checked, state.checked);\n\t};\n\n\tconst handleSelect = (key: string, item: ITreeItem) => {\n\t\tif (!props.selectable) return;\n\n\t\tstate.selected = key;\n\t\tonItemSelect?.(key, item);\n\t};\n\n\tuseEffect(() => {\n\t\tif (selected === undefined) return;\n\n\t\tstate.selected = selected;\n\t}, [selected]);\n\n\tuseEffect(() => {\n\t\tstate.nodeMaps.clear();\n\n\t\tconst { key, children } = oNodeProps;\n\t\tconst recursive = (nodes) => {\n\t\t\tnodes.map((o) => {\n\t\t\t\tstate.nodeMaps.set(o[key], o);\n\n\t\t\t\to[children]?.length > 0 && recursive(o[children]);\n\t\t\t});\n\t\t};\n\n\t\trecursive(data);\n\t}, [data]);\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tgetChecked: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tstate.checked.map((k) => {\n\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\titems.push(item);\n\t\t\t\t});\n\t\t\t\treturn [state.checked, items];\n\t\t\t},\n\t\t\tgetSelected: () => {\n\t\t\t\tconst item = state.nodeMaps.get(state.selected);\n\t\t\t\treturn [state.selected, item];\n\t\t\t},\n\t\t\tgetPartofs: () => {\n\t\t\t\tconst items: ITreeItem[] = [];\n\t\t\t\tconst keys = Object.keys(state.partofs).filter((k) => {\n\t\t\t\t\tconst indeterminate = state.partofs[k];\n\n\t\t\t\t\tif (indeterminate) {\n\t\t\t\t\t\tconst item = state.nodeMaps.get(k);\n\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn indeterminate;\n\t\t\t\t});\n\n\t\t\t\treturn [keys, items];\n\t\t\t},\n\t\t};\n\t});\n\n\treturn (\n\t\t<TreeList\n\t\t\tdata={data}\n\t\t\tselected={state.selected}\n\t\t\tchecked={state.checked}\n\t\t\tpartofs={state.partofs}\n\t\t\tnodeProps={oNodeProps}\n\t\t\tonItemCheck={handleCheck}\n\t\t\tonItemSelect={handleSelect}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nexport default Tree;\n","import { TFileType } from \"@p/js/usePreview/type\";\nimport { formatBytes, getFileType } from \"@p/js/utils\";\nimport { ListAltRound } from \"@ricons/material\";\nimport { title } from \"radash\";\nimport { RefObject } from \"react\";\nimport SortableContainer from \"react-easy-sort\";\nimport Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport const ListContainer = (props) => {\n\tconst { sortable, onSortEnd, itemProps, ...restProps } = props;\n\tconst customProps = {\n\t\tclassName: \"i-upload-list\",\n\t\tonClick: (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t};\n\n\tif (!sortable) {\n\t\treturn <div {...customProps} {...restProps} />;\n\t}\n\treturn (\n\t\t<SortableContainer\n\t\t\tdraggedItemClassName='i-upload-item-dragged'\n\t\t\tonSortEnd={onSortEnd}\n\t\t\t{...customProps}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nconst FileListItem = (\n\tprops: IUploadItem & { ref?: RefObject<HTMLDivElement | null> }\n) => {\n\tconst { ref, mode, index, file, renderItem, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\n\tconst { id, name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\n\n\tif (renderItem) {\n\t\treturn renderItem(file, index);\n\t}\n\n\tconst CloseBtn = (\n\t\t<Helpericon\n\t\t\tactive\n\t\t\tclassName='i-upload-delete'\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\tonRemove(index);\n\t\t\t}}\n\t\t/>\n\t);\n\n\tswitch (mode) {\n\t\tcase \"card\":\n\t\t\tlet node = <></>;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase TFileType.IMAGE:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tlazyload\n\t\t\t\t\t\t\tsrc={url || src}\n\t\t\t\t\t\t\tfit='cover'\n\t\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase TFileType.VIDEO:\n\t\t\t\t\tnode = <video src={url || src} preload='none' />;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Icon icon={<ListAltRound />} />\n\t\t\t\t\t\t\t<span className='i-upload-file-name'>\n\t\t\t\t\t\t\t\t{title(name)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttitle={name}\n\t\t\t\t\tclassName='i-upload-item-card'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t{node}\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName='i-upload-item'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t<span>{name}</span>\n\n\t\t\t\t\t<i className='i-upload-size'>{formatBytes(size ?? 0)}</i>\n\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t}\n};\n\nexport default FileListItem;\n","import { arrayMove } from \"@/packages/js/utils\";\nimport usePreview from \"@p/js/usePreview\";\nimport { TPreviewItem } from \"@p/js/usePreview/type\";\nimport { PlusSharp } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n\tChangeEvent,\n\tCSSProperties,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { SortableItem } from \"react-easy-sort\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport \"./index.css\";\nimport FileListItem, { ListContainer } from \"./renderFile\";\nimport { IFile, IUpload } from \"./type\";\n\nconst Upload = (props: IUpload) => {\n\tconst {\n\t\tref,\n\t\tlabel,\n\t\tlabelInline,\n\t\tvalue,\n\t\tfiles = [],\n\t\tinitialFiles,\n\t\tplaceholder,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\tdefaultText = \"Upload\",\n\t\tmode = \"default\",\n\t\tcardSize = \"4em\",\n\t\tdisabled,\n\t\tsortable,\n\t\tlimit = props.multiple ? Infinity : 1,\n\t\tmultiple,\n\t\trenderItem,\n\t\tshouldUpload = () => true,\n\t\tuploader,\n\t\tonChange,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tfiles,\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst preview = usePreview();\n\n\tconst trigger = useMemo(() => {\n\t\tif (children) return children;\n\n\t\tswitch (mode) {\n\t\t\tcase \"card\":\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-upload-card-btn color-5'\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tflat\n\t\t\t\t\t\toutline\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlusSharp />} />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<Button className='i-upload-btn' disabled={disabled}>\n\t\t\t\t\t\t{defaultText}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t}\n\t}, [mode, children]);\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = Array.from(e.target.files || []) as IFile[];\n\t\tconst { files: before } = state;\n\t\tconst changed: IFile[] = [];\n\n\t\tfiles.map((f) => {\n\t\t\tconst { id, name, size, type } = f;\n\t\t\tconst same = before.find((pf) => {\n\t\t\t\tconst { name: n, size: s, type: t } = pf;\n\t\t\t\treturn n === name && s === size && t === type;\n\t\t\t});\n\t\t\tconst src = URL.createObjectURL(f);\n\n\t\t\tObject.assign(f, {\n\t\t\t\tid: id ?? uid(7),\n\t\t\t\tsrc: src ?? f.name,\n\t\t\t\turl: src ?? f.name,\n\t\t\t});\n\t\t\t!same && changed.push(f);\n\t\t});\n\n\t\tconst after = [...before, ...changed];\n\n\t\tObject.assign(state, {\n\t\t\tfiles: multiple ? after.slice(0, limit) : [after.at(-1)],\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonFilesChange?.(state.files, changed, e);\n\t\tonChange?.(state.files, e);\n\n\t\thandleUpload(changed);\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleRemove = (i: number) => {\n\t\tconst [...files] = state.files;\n\n\t\tconst changed = files.splice(i, 1);\n\t\tURL.revokeObjectURL(changed[0]?.src || \"\");\n\n\t\tstate.files = files;\n\t\tonFilesChange?.(files, changed);\n\t\tonChange?.(files);\n\n\t\tinputRef.current && (inputRef.current.value = \"\");\n\t};\n\n\tconst handleUpload = async (files: IFile[]) => {\n\t\tif (!uploader) return;\n\n\t\tconst shouldUploadFiles = files.filter(shouldUpload);\n\n\t\tconst result = Promise.all(shouldUploadFiles.map(uploader));\n\n\t\treturn onUpload?.(result);\n\t};\n\n\tconst handlePreview = (i: number) => {\n\t\tpreview({ items: state.files as TPreviewItem[], initial: i });\n\t};\n\n\tconst setFileList = (files?: IFile[] | File[]) => {\n\t\tif (!files) return;\n\n\t\tstate.files = files.map((f) => {\n\t\t\treturn { ...f, id: f.id ?? uid(7) };\n\t\t});\n\t};\n\n\tconst handleSortEnd = (before, after) => {\n\t\tconst [...files] = state.files;\n\n\t\tstate.files = arrayMove(files, before, after);\n\t\tonChange?.(state.files);\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\t}, [status, message]);\n\n\tuseEffect(() => {\n\t\tstate.files = value?.filter?.((file) => !!file.id) ?? [];\n\t}, [value]);\n\n\tuseEffect(() => {\n\t\tsetFileList(initialFiles);\n\t}, []);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tgetFileList: () => state.files,\n\n\t\t\tsetFileList,\n\t\t}),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<InputContainer\n\t\t\tas='div'\n\t\t\tlabel={label}\n\t\t\tlabelInline={labelInline}\n\t\t\tclassName={classNames(\"i-input-label-file\", className)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-upload-inner\", {\n\t\t\t\t\t[`i-upload-${mode}`]: mode !== \"default\",\n\t\t\t\t})}\n\t\t\t\tstyle={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n\t\t\t>\n\t\t\t\t<ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\n\t\t\t\t\t{state.files.map((file: IFile, i: number) => {\n\t\t\t\t\t\tconst node = (\n\t\t\t\t\t\t\t<FileListItem\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\tfile={file}\n\t\t\t\t\t\t\t\tmode={mode}\n\t\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\t\tonRemove={handleRemove}\n\t\t\t\t\t\t\t\tonPreview={handlePreview}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!sortable) return node;\n\n\t\t\t\t\t\treturn <SortableItem key={i}>{node}</SortableItem>;\n\t\t\t\t\t})}\n\t\t\t\t</ListContainer>\n\n\t\t\t\t{state.message && (\n\t\t\t\t\t<span className='i-upload-message'>{state.message}</span>\n\t\t\t\t)}\n\n\t\t\t\t{state.files.length < limit && (\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\ttype='file'\n\t\t\t\t\t\t\tclassName='i-input-file-hidden'\n\t\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{trigger}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</InputContainer>\n\t);\n};\n\nexport default Upload;\n"],"names":["TIMEOUT","listener","e","target","parent","closest","$box","$ripple","document","createElement","className","append","createRipple","rect","getBoundingClientRect","size","Math","max","width","height","style","cssText","pageX","left","pageY","top","insertAdjacentElement","offsetHeight","classList","add","setTimeout","remove","triggerRipple","Loading","props","icon","text","absolute","restProps","_jsxs","classNames","inset","children","_jsx","stroke","viewBox","xmlns","fontSize","cx","cy","r","fill","strokeWidth","strokeLinecap","strokeDasharray","strokeDashoffset","formatClass","outline","flat","loading","disabled","block","round","square","secondary","classnames","Button","as","As","ref","href","ripple","onClick","childNodes","key","attrs","stopPropagation","useEffect","documentElement","dataset","addEventListener","to","Toggle","active","activeClass","after","onToggle","state","useReactive","done","toggle","hasAfter","undefined","nextActive","Object","assign","Group","vertical","buttonProps","nodes","useMemo","Children","map","node","type","cloneElement","Icon","rotate","isValidElement","iconProps","transform","ToTop","SkipPreviousRound","Affix","position","right","bottom","offset","getContainer","body","hidden","setHidden","useState","hijackChildren","container","scrollTo","behavior","debounce","delay","scrollTop","removeEventListener","Badge","content","contentClass","dot","dotSize","rounded","Card","hideShadow","border","header","footer","shadow","TFileType","getPosition","$source","$popup","options","refWindow","gap","align","arrowX","arrowY","arrowPos","rectT","rectC","w","window","innerWidth","h","innerHeight","tl","tt","tr","tb","tw","th","ch","cw","rectPa","offsetParent","offsetLeft","offsetTop","y","x","computePosition","containerSize","targetSize","targetOffset","contentSize","xl","xr","R","yt","yb","T","B","getPointPosition","pw","ph","pl","pt","ow","oh","ol","ot","centerPoint","result","formatOption","option","includes","label","value","formatNumber","precision","thousand","toFixed","points","split","integer","replace","length","renderNode","div","root","createRoot","sto","render","unmount","clearTimeout","getSuffixByUrl","url","match","getFileType","suffix","startsWith","formatBytes","bytes","decimals","dm","i","floor","log","parseFloat","pow","clamp","min","CheckboxItem","name","status","message","partof","onChange","checked","Checkbox","optionInline","labelInline","required","formattedOptions","opt","group","findIndex","item","push","splice","handleChange","Item","Helpericon","CloseRound","uid","Collapse","items","multiple","headerClickable","renderToggle","MinusRound","PlusRound","onCollapse","collapses","nodeProps","title","handleToggle","Array","isArray","k","isActive","handleHeaderClick","Empty","InboxTwotone","getCellStyle","justify","col","row","colSpan","rowSpan","gridArea","insetInline","Cell","column","data","cellEllipsis","onCellClick","onCellDoubleClick","id","fixed","onDoubleClick","MouseMoveEvents","Set","MouseUpEvents","KeydownEvents","touchable","EVENTS","MOVE","UP","KEYDOWN","useMouseMove","delete","useMouseUp","useKeydown","useIntersectionObserver","configs","WM","WeakMap","IO","IntersectionObserver","entries","entry","callback","get","isIntersecting","observe","set","unobserve","disconnect","Resize","index","onWidthChange","resizing","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","disabledEsc","onVisibleChange","onClose","toggable","show","init","handleShow","handleHide","code","createPortal","alignItems","List","renderLabel","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","exec","c","execCommand","xssOptions","onIgnoreTagAttr","tag","substr","escapeAttrValue","fnMap","bold","FormatBoldRound","italic","FormatItalicRound","underline","FormatUnderlinedRound","strike","StrikethroughSRound","redo","RedoRound","undo","UndoRound","clear","FormatClearRound","aliasMap","simple","all","getControls","fns","controlBtnProps","Editor","placeholder","autosize","controls","onInput","editorRef","useImperativeHandle","setValue","html","safeHtml","xss","innerHTML","getSafeValue","contentEditable","onPaste","async","clipboardData","getData","onKeyDown","scrollBy","scrollHeight","Flex","Component","direction","wrap","gridColumns","justifyContent","flexDirection","flexWrap","Context","createContext","IFormInstance","cacheData","rules","constructor","this","field","PubSub","publish","validate","rule","validator","v","isValid","isAllValid","Promise","resolve","Form","form","initialValues","onEnter","repeat","keyCode","DefaultContent","footerLeft","okButtonProps","cancelButtonProps","onOk","showHeader","handleOk","renderFooter","propsOk","propsCancel","Modal","closable","hideBackdrop","disableEsc","customized","setShow","setActive","bounced","setBounced","useForm","formRef","Field","update","useContext","args","subscribe","then","unsubscribe","HookModal","mergedProps","config","close","Text","Tag","weight","decoration","gradient","wave","gradients","backgroundImage","backgroundClip","fontWeight","textDecoration","Circle","circleSize","lineWidth","pathLength","Number","count","decimal","duration","easing","n","setN","number","z","start","performance","now","diff","raf","requestAnimationFrame","loop","percent","cancelAnimationFrame","pass","animate","Time","seconds","zero","units","time","l","unshift","formatTime","HighLight","keyword","escape","caseSensitive","renderWord","word","source","findAll","searchWords","textToHighlight","autoEscape","chunk","end","highlight","Line","barClass","dragging","renderCursor","onTouchStart","Progress","draggable","onDraggingChange","pageXY","rectTL","rectWH","toFixedValue","handleMouseDown","touches","Video","hideControls","autoplay","muted","volume","useOriginControls","timeProgressProps","volumeProgressProps","onFullScreenChange","playing","volumeCache","isFullscreen","controlHidden","draggingProgress","videoRef","hiddenTO","timeUpdateListener","paused","currentTime","playChangeListener","fsChangeListener","parentElement","fullscreenElement","volumeChangeListener","handlePlay","play","pause","handleStop","handleFullscreen","el","exitFullscreen","requestFullscreen","showControls","clearHiddenTO","handleMouseMove","throttle","interval","stop","fullscreen","getVideo","currentValue","onMouseMove","onCanPlay","PauseRound","PlayArrowRound","StopRound","VolumeOffRound","padding","VolumeDownRound","FullscreenExitRound","FullscreenRound","renderFile","IMAGE","src","VIDEO","FeedOutlined","initial","DefaultRenderFile","onRotate","onZoom","scale","translate","box","files","file","isImage","handleSwitch","next","before","handleRotate","deg","handleMouseWheel","deltaY","throttleMouseMove","ox","oy","offsetX","offsetY","onWheel","AspectRatioRound","OpenInNewRound","download","FileDownloadOutlined","RotateRightRound","RotateLeftRound","KeyboardArrowLeftRound","KeyboardArrowRightRound","usePreview","modalProps","unMount","Image","initSize","lazyload","fallback","HideImageTwotone","fit","cover","coverClass","previewable","onLoad","onError","wh","preview","handleClick","complete","setAttribute","iSize","objectFit","err","InputContainer","tip","img","Input","initValue","prepend","hideVisible","HelperIcon","VisibilityRound","VisibilityOffRound","inputProps","clearable","showHelper","Textarea","autoSize","refTextarea","ta","firstChild","step","Infinity","hideControl","formatInputValue","replaceAll","handleOperate","param","getFormatNumber","Range","range","SyncAltRound","margin","AlignMap","center","GlobalConfig","ItemDefaultConfig","createContainer","handler","callout","queue","heights","tops","onShow","bind","onHide","timer","renderItems","MessageItem","alignSelf","error","success","warning","useModal","open","Page","page","setLoading","Pagination","defaultPage","total","sibling","prev","jumper","renderEllipsis","MoreHorizRound","renderPage","setPage","totalPage","ceil","handlePageChange","p","dotClass","hoverShowClose","Options","val","filter","filterPlaceholder","onSelect","onFilter","SearchRound","CheckRound","displayValue","maxDisplay","flatMap","rest","activeOptions","Select","hideClear","hideArrow","popupProps","inputValue","filterValue","filterOptions","fv","filterFn","changeValue","handleSelect","handleFilterChange","hasValue","readOnly","UnfoldMoreRound","ColorMethods","HEX","RGB","HSB","Footer","onTypeChange","Handle","color","handle","background","ColorPicker","disabledAlpha","usePanel","syncValue","handleTypeChange","method","handleValueChange","ColorsPanel","panelRender","panel","onChangeComplete","Dates","month","weeks","renderDate","date","disabledDate","onDateClick","today","dayjs","dates","lastDateOfLastMonth","endOf","$W","$D","lastMonthDates","whatever","lastDate","week","isSame","isSameMonth","isToday","handleDateClick","MONTHS","YearMonth","unitMonth","unitYear","renderYear","renderMonth","year","Panel","m","selectedYear","years","selectable","$years","handleOperateMonth","getMoreYears","isUp","_","handleChangeMonth","extend","customParseFormat","FORMATTYPES","FORMAT","Datepicker","format","dayJsValue","handleSetDate","CalendarMonthTwotone","Items","renderItem","unit","UnitMaps","hh","mm","s","ss","stepH","stepM","stepS","periods","onFallback","period","hour","minute","second","hours","minutes","hasH","hasM","hasS","handleSetTime","pattern","toLowerCase","updateValue","nums","TimePicker","safeValue","AccessTimeRound","defaultOk","defaultCancel","Popconfirm","InfoOutlined","extra","ok","cancel","popconfirmContent","finally","RadioItem","Radio","Resizable","other","minSize","maxSize","line","asPercent","onResizeComplete","Divider","STATUS","defaultRenderIcon","renderIcon","asList","Step","steps","elProps","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","deltaX","scrollWidth","nav","intersecting","isLine","navs","flex","TreeList","depth","contents","itemKey","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","ListContainer","sortable","onSortEnd","customProps","SortableContainer","draggedItemClassName","FileListItem","mode","onRemove","onPreview","CloseBtn","preload","ListAltRound","Upload","initialFiles","defaultText","cardSize","limit","shouldUpload","uploader","onFilesChange","onUpload","inputRef","PlusSharp","handleRemove","changed","URL","revokeObjectURL","handleUpload","shouldUploadFiles","handlePreview","setFileList","f","getFileList","array","fromIndex","toIndex","arrayMove","SortableItem","same","pf","createObjectURL","at"],"mappings":"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"}