react-public-components 1.2.3 → 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/dist/AudioPlayer/index.cjs +3 -3
- package/dist/AudioPlayer/index.js +2 -2
- package/dist/CodeSnippet/index.cjs +3 -2
- package/dist/CodeSnippet/index.css +157 -0
- package/dist/CodeSnippet/index.css.map +1 -1
- package/dist/CodeSnippet/index.d.ts +40 -4
- package/dist/CodeSnippet/index.js +2 -1
- package/dist/CodeSnippet/sandbox.d.ts +26 -0
- package/dist/CollapseBox/index.cjs +3 -3
- package/dist/CollapseBox/index.js +2 -2
- package/dist/ColorPicker/index.cjs +5 -5
- package/dist/ColorPicker/index.js +2 -2
- package/dist/ContextMenu/index.cjs +3 -3
- package/dist/ContextMenu/index.js +2 -2
- package/dist/CopyButton/index.cjs +3 -3
- package/dist/CopyButton/index.js +2 -2
- package/dist/CronPicker/index.cjs +4 -4
- package/dist/CronPicker/index.js +3 -3
- package/dist/DebounceSelect/index.cjs +3 -3
- package/dist/DebounceSelect/index.js +2 -2
- package/dist/DisabledBox/index.cjs +3 -3
- package/dist/DisabledBox/index.js +2 -2
- package/dist/DragSortList/index.cjs +3 -2
- package/dist/DragSortList/index.css +82 -13
- package/dist/DragSortList/index.css.map +1 -1
- package/dist/DragSortList/index.d.ts +8 -2
- package/dist/DragSortList/index.js +2 -1
- package/dist/FilePreviewer/index.cjs +4 -4
- package/dist/FilePreviewer/index.js +2 -2
- package/dist/Fullscreen/index.cjs +3 -3
- package/dist/Fullscreen/index.js +2 -2
- package/dist/GuidedTour/index.cjs +3 -3
- package/dist/GuidedTour/index.js +2 -2
- package/dist/ImageCropper/index.cjs +3 -3
- package/dist/ImageCropper/index.js +2 -2
- package/dist/InfiniteScrollList/index.cjs +3 -3
- package/dist/InfiniteScrollList/index.js +2 -2
- package/dist/JsonEditor/index.cjs +4 -4
- package/dist/JsonEditor/index.js +3 -3
- package/dist/KeyValEditor/index.cjs +3 -3
- package/dist/KeyValEditor/index.js +2 -2
- package/dist/PasswordStrength/index.cjs +4 -4
- package/dist/PasswordStrength/index.js +2 -2
- package/dist/PdfViewer/index.cjs +3 -3
- package/dist/PdfViewer/index.js +2 -2
- package/dist/QrCodeCard/index.cjs +3 -3
- package/dist/QrCodeCard/index.css +122 -32
- package/dist/QrCodeCard/index.css.map +1 -1
- package/dist/QrCodeCard/index.d.ts +10 -2
- package/dist/QrCodeCard/index.js +2 -2
- package/dist/SensitiveMask/index.cjs +5 -5
- package/dist/SensitiveMask/index.js +3 -3
- package/dist/Splitter/index.cjs +3 -3
- package/dist/Splitter/index.js +2 -2
- package/dist/TagInput/index.cjs +3 -3
- package/dist/TagInput/index.js +2 -2
- package/dist/TextEllipsis/index.cjs +4 -4
- package/dist/TextEllipsis/index.js +3 -3
- package/dist/TreeTransfer/index.cjs +3 -3
- package/dist/TreeTransfer/index.js +2 -2
- package/dist/VideoPlayer/index.cjs +3 -3
- package/dist/VideoPlayer/index.js +2 -2
- package/dist/{chunk-GV2RRQ2S.cjs → chunk-2EIAWXFA.cjs} +5 -5
- package/dist/{chunk-GV2RRQ2S.cjs.map → chunk-2EIAWXFA.cjs.map} +1 -1
- package/dist/{chunk-ISUXPTLV.js → chunk-2IDVNTKR.js} +93 -3
- package/dist/chunk-2IDVNTKR.js.map +1 -0
- package/dist/{chunk-6FVAQECF.js → chunk-2INP6NM4.js} +3 -3
- package/dist/{chunk-6FVAQECF.js.map → chunk-2INP6NM4.js.map} +1 -1
- package/dist/chunk-4KMVABTM.js +419 -0
- package/dist/chunk-4KMVABTM.js.map +1 -0
- package/dist/{chunk-VS2YVJOB.cjs → chunk-4TMBGQQE.cjs} +5 -5
- package/dist/{chunk-VS2YVJOB.cjs.map → chunk-4TMBGQQE.cjs.map} +1 -1
- package/dist/{chunk-PJB7ADK6.js → chunk-56VELHCH.js} +3 -3
- package/dist/{chunk-PJB7ADK6.js.map → chunk-56VELHCH.js.map} +1 -1
- package/dist/{chunk-4BDO5TJH.cjs → chunk-77ANKL4K.cjs} +8 -8
- package/dist/{chunk-4BDO5TJH.cjs.map → chunk-77ANKL4K.cjs.map} +1 -1
- package/dist/{chunk-OCN7L2ID.cjs → chunk-7ZBA4NHH.cjs} +4 -4
- package/dist/{chunk-OCN7L2ID.cjs.map → chunk-7ZBA4NHH.cjs.map} +1 -1
- package/dist/{chunk-MY4M7HVW.cjs → chunk-AHTRLNYK.cjs} +5 -5
- package/dist/{chunk-MY4M7HVW.cjs.map → chunk-AHTRLNYK.cjs.map} +1 -1
- package/dist/{chunk-WEOMKZC6.js → chunk-ANTFNDH4.js} +3 -3
- package/dist/{chunk-WEOMKZC6.js.map → chunk-ANTFNDH4.js.map} +1 -1
- package/dist/{chunk-EGZSSZBX.js → chunk-AXPVN2OO.js} +3 -3
- package/dist/{chunk-EGZSSZBX.js.map → chunk-AXPVN2OO.js.map} +1 -1
- package/dist/{chunk-LLWK5VKA.js → chunk-CURWX7OY.js} +3 -3
- package/dist/{chunk-LLWK5VKA.js.map → chunk-CURWX7OY.js.map} +1 -1
- package/dist/{chunk-WZRUBHS3.cjs → chunk-ED3ZG2VX.cjs} +5 -5
- package/dist/{chunk-WZRUBHS3.cjs.map → chunk-ED3ZG2VX.cjs.map} +1 -1
- package/dist/{chunk-BZXMWKD2.js → chunk-EDNBPLUS.js} +3 -3
- package/dist/{chunk-BZXMWKD2.js.map → chunk-EDNBPLUS.js.map} +1 -1
- package/dist/{chunk-MC3NERDH.js → chunk-EJYTTSW6.js} +3 -3
- package/dist/{chunk-MC3NERDH.js.map → chunk-EJYTTSW6.js.map} +1 -1
- package/dist/{chunk-3UNZXPOT.cjs → chunk-EKDJPOA3.cjs} +5 -5
- package/dist/{chunk-3UNZXPOT.cjs.map → chunk-EKDJPOA3.cjs.map} +1 -1
- package/dist/{chunk-XWXFENGT.js → chunk-EMT4NUI5.js} +3 -3
- package/dist/{chunk-XWXFENGT.js.map → chunk-EMT4NUI5.js.map} +1 -1
- package/dist/{chunk-HFPWBZID.js → chunk-ETFLLRTO.js} +3 -3
- package/dist/{chunk-HFPWBZID.js.map → chunk-ETFLLRTO.js.map} +1 -1
- package/dist/chunk-FZH5FL7X.cjs +167 -0
- package/dist/chunk-FZH5FL7X.cjs.map +1 -0
- package/dist/{chunk-6UKUAYN3.cjs → chunk-HKALWFWZ.cjs} +5 -5
- package/dist/{chunk-6UKUAYN3.cjs.map → chunk-HKALWFWZ.cjs.map} +1 -1
- package/dist/{chunk-IBOCJ2ZS.js → chunk-IF4XAUV3.js} +3 -3
- package/dist/{chunk-IBOCJ2ZS.js.map → chunk-IF4XAUV3.js.map} +1 -1
- package/dist/{chunk-MNY5P5EG.cjs → chunk-IPS7PC3M.cjs} +13 -13
- package/dist/{chunk-MNY5P5EG.cjs.map → chunk-IPS7PC3M.cjs.map} +1 -1
- package/dist/{chunk-V4O325BX.cjs → chunk-JHVPDKBM.cjs} +6 -6
- package/dist/{chunk-V4O325BX.cjs.map → chunk-JHVPDKBM.cjs.map} +1 -1
- package/dist/{chunk-6IXVUD2M.js → chunk-JNA5AQ2K.js} +3 -3
- package/dist/{chunk-6IXVUD2M.js.map → chunk-JNA5AQ2K.js.map} +1 -1
- package/dist/{chunk-NJIYP6SC.cjs → chunk-LFGBZXQH.cjs} +4 -4
- package/dist/{chunk-NJIYP6SC.cjs.map → chunk-LFGBZXQH.cjs.map} +1 -1
- package/dist/{chunk-ZLWY7QS2.cjs → chunk-M3GQ7RCV.cjs} +4 -4
- package/dist/{chunk-ZLWY7QS2.cjs.map → chunk-M3GQ7RCV.cjs.map} +1 -1
- package/dist/{chunk-AFR7V4A4.js → chunk-M4FZJALR.js} +4 -4
- package/dist/{chunk-AFR7V4A4.js.map → chunk-M4FZJALR.js.map} +1 -1
- package/dist/{chunk-CT66HLZ5.js → chunk-MQJBUHDB.js} +3 -3
- package/dist/{chunk-CT66HLZ5.js.map → chunk-MQJBUHDB.js.map} +1 -1
- package/dist/{chunk-V7IUSCQS.js → chunk-OLLVIQPL.js} +3 -3
- package/dist/{chunk-V7IUSCQS.js.map → chunk-OLLVIQPL.js.map} +1 -1
- package/dist/{chunk-2DIU347W.cjs → chunk-OONBZRPV.cjs} +4 -4
- package/dist/{chunk-2DIU347W.cjs.map → chunk-OONBZRPV.cjs.map} +1 -1
- package/dist/{chunk-56TD4LDC.js → chunk-P5CS7V4W.js} +3 -3
- package/dist/{chunk-56TD4LDC.js.map → chunk-P5CS7V4W.js.map} +1 -1
- package/dist/{chunk-HUXPCMNP.js → chunk-PTFKE67K.js} +3 -3
- package/dist/{chunk-HUXPCMNP.js.map → chunk-PTFKE67K.js.map} +1 -1
- package/dist/{chunk-PUTAVQJZ.js → chunk-PUMVD7CP.js} +3 -3
- package/dist/{chunk-PUTAVQJZ.js.map → chunk-PUMVD7CP.js.map} +1 -1
- package/dist/{chunk-KXZM322K.cjs → chunk-PYCSRJSF.cjs} +7 -7
- package/dist/{chunk-KXZM322K.cjs.map → chunk-PYCSRJSF.cjs.map} +1 -1
- package/dist/{chunk-PUJJHD22.js → chunk-Q7OVUH5K.js} +3 -3
- package/dist/{chunk-PUJJHD22.js.map → chunk-Q7OVUH5K.js.map} +1 -1
- package/dist/{chunk-2UCTE6YN.cjs → chunk-QP3RKA4J.cjs} +4 -4
- package/dist/{chunk-2UCTE6YN.cjs.map → chunk-QP3RKA4J.cjs.map} +1 -1
- package/dist/{chunk-OKCQZO5E.js → chunk-QRZ2GVVJ.js} +3 -3
- package/dist/{chunk-OKCQZO5E.js.map → chunk-QRZ2GVVJ.js.map} +1 -1
- package/dist/{chunk-MBOWSS4B.cjs → chunk-R4V3EJVP.cjs} +98 -2
- package/dist/chunk-R4V3EJVP.cjs.map +1 -0
- package/dist/{chunk-4OXVTRYV.cjs → chunk-RN5WU7KA.cjs} +7 -7
- package/dist/{chunk-4OXVTRYV.cjs.map → chunk-RN5WU7KA.cjs.map} +1 -1
- package/dist/{chunk-WWXBH57R.cjs → chunk-TNZ2OLGW.cjs} +4 -4
- package/dist/{chunk-WWXBH57R.cjs.map → chunk-TNZ2OLGW.cjs.map} +1 -1
- package/dist/chunk-TUDLE3RT.cjs +429 -0
- package/dist/chunk-TUDLE3RT.cjs.map +1 -0
- package/dist/{chunk-B7NN6SZD.cjs → chunk-TUEVILTA.cjs} +5 -5
- package/dist/{chunk-B7NN6SZD.cjs.map → chunk-TUEVILTA.cjs.map} +1 -1
- package/dist/{chunk-ZUW3XLZQ.cjs → chunk-U2EBNBGK.cjs} +4 -4
- package/dist/{chunk-ZUW3XLZQ.cjs.map → chunk-U2EBNBGK.cjs.map} +1 -1
- package/dist/{chunk-JAW7Q2YC.cjs → chunk-UAUP5TJK.cjs} +5 -5
- package/dist/{chunk-JAW7Q2YC.cjs.map → chunk-UAUP5TJK.cjs.map} +1 -1
- package/dist/{chunk-2MDYHFLH.cjs → chunk-UZB7GOEI.cjs} +4 -4
- package/dist/{chunk-2MDYHFLH.cjs.map → chunk-UZB7GOEI.cjs.map} +1 -1
- package/dist/{chunk-ZNFW6L3E.cjs → chunk-VJOO2DG3.cjs} +8 -8
- package/dist/{chunk-ZNFW6L3E.cjs.map → chunk-VJOO2DG3.cjs.map} +1 -1
- package/dist/{chunk-JECYRODB.js → chunk-W5JA3YTT.js} +3 -3
- package/dist/{chunk-JECYRODB.js.map → chunk-W5JA3YTT.js.map} +1 -1
- package/dist/{chunk-QZZGBUW4.js → chunk-WKF4C6TJ.js} +3 -3
- package/dist/{chunk-QZZGBUW4.js.map → chunk-WKF4C6TJ.js.map} +1 -1
- package/dist/{chunk-64LBDDZU.js → chunk-XLOGMDAQ.js} +3 -3
- package/dist/{chunk-64LBDDZU.js.map → chunk-XLOGMDAQ.js.map} +1 -1
- package/dist/chunk-XUAHWX6B.js +153 -0
- package/dist/chunk-XUAHWX6B.js.map +1 -0
- package/dist/chunk-Y54KVULF.js +161 -0
- package/dist/chunk-Y54KVULF.js.map +1 -0
- package/dist/{chunk-NUTVJGVT.cjs → chunk-YP4XTMK3.cjs} +4 -4
- package/dist/{chunk-NUTVJGVT.cjs.map → chunk-YP4XTMK3.cjs.map} +1 -1
- package/dist/{chunk-MGUNFP6P.js → chunk-ZCBT56AG.js} +3 -3
- package/dist/{chunk-MGUNFP6P.js.map → chunk-ZCBT56AG.js.map} +1 -1
- package/dist/chunk-ZWKUHYTV.cjs +155 -0
- package/dist/chunk-ZWKUHYTV.cjs.map +1 -0
- package/dist/index.cjs +74 -58
- package/dist/index.css +361 -45
- package/dist/index.css.map +1 -1
- package/dist/index.js +27 -27
- package/dist/src/icons.d.ts +18 -0
- package/dist/src/index.d.ts +3 -1
- package/package.json +1 -1
- package/dist/chunk-5VSEUDVY.js +0 -45
- package/dist/chunk-5VSEUDVY.js.map +0 -1
- package/dist/chunk-EOGYWPX7.cjs +0 -47
- package/dist/chunk-EOGYWPX7.cjs.map +0 -1
- package/dist/chunk-EQ7S5SYM.js +0 -67
- package/dist/chunk-EQ7S5SYM.js.map +0 -1
- package/dist/chunk-FYFL4PFD.cjs +0 -69
- package/dist/chunk-FYFL4PFD.cjs.map +0 -1
- package/dist/chunk-ISUXPTLV.js.map +0 -1
- package/dist/chunk-JEDW76LI.cjs +0 -107
- package/dist/chunk-JEDW76LI.cjs.map +0 -1
- package/dist/chunk-MBOWSS4B.cjs.map +0 -1
- package/dist/chunk-XOMV26WS.js +0 -105
- package/dist/chunk-XOMV26WS.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../ContextMenu/index.tsx"],"names":[],"mappings":"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","file":"chunk-LLWK5VKA.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport { RightOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface ContextMenuItem {\n\t/** 菜单项唯一标识 */\n\tkey: string;\n\t/** 菜单项展示文本或节点 */\n\tlabel?: ReactNode;\n\t/** 菜单项前置图标 */\n\ticon?: ReactNode;\n\t/** 是否为分割线 */\n\ttype?: 'divider';\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 是否为警示/危险操作(红色显示) */\n\tdanger?: boolean;\n\t/** 快捷键提示(如 '⌘ C' / 'Ctrl+C') */\n\tshortcut?: string;\n\t/** 二级子菜单项列表 */\n\tchildren?: ContextMenuItem[];\n\t/** 点击菜单项回调 */\n\tonClick?: (item: ContextMenuItem, e: React.MouseEvent) => void;\n}\n\nexport interface ContextMenuProps {\n\t/** 菜单项列表配置 */\n\titems: ContextMenuItem[];\n\t/** 被右键激活的目标子组件/容器 */\n\tchildren: ReactNode;\n\t/** 是否禁用右键上下文菜单 */\n\tdisabled?: boolean;\n\t/** 菜单显隐状态改变回调 */\n\tonOpenChange?: (open: boolean) => void;\n\t/** 自定义菜单类名 */\n\tmenuClassName?: string;\n\t/** 自定义菜单样式 */\n\tmenuStyle?: CSSProperties;\n\t/** 自定义外层包裹类名 */\n\tclassName?: string;\n\t/** 自定义外层包裹样式 */\n\tstyle?: CSSProperties;\n}\n\ninterface Position {\n\tx: number;\n\ty: number;\n}\n\nconst ContextMenu: React.FC<ContextMenuProps> = ({\n\titems,\n\tchildren,\n\tdisabled = false,\n\tonOpenChange,\n\tmenuClassName = '',\n\tmenuStyle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [visible, setVisible] = useState<boolean>(false);\n\tconst [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n\tconst menuRef = useRef<HTMLDivElement>(null);\n\n\tconst handleContextMenu = (e: React.MouseEvent) => {\n\t\tif (disabled) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst mouseX = e.clientX;\n\t\tconst mouseY = e.clientY;\n\n\t\t// 初始设置位置\n\t\tsetPosition({ x: mouseX, y: mouseY });\n\t\tsetVisible(true);\n\t\tonOpenChange?.(true);\n\t};\n\n\t// 菜单渲染后自适应调整边界,防止溢出视口\n\tuseEffect(() => {\n\t\tif (!visible || !menuRef.current) return;\n\t\tconst menuEl = menuRef.current;\n\t\tconst rect = menuEl.getBoundingClientRect();\n\n\t\tlet adjustedX = position.x;\n\t\tlet adjustedY = position.y;\n\n\t\t// 水平防溢出\n\t\tif (position.x + rect.width > window.innerWidth) {\n\t\t\tadjustedX = window.innerWidth - rect.width - 8;\n\t\t}\n\n\t\t// 垂直防溢出\n\t\tif (position.y + rect.height > window.innerHeight) {\n\t\t\tadjustedY = window.innerHeight - rect.height - 8;\n\t\t}\n\n\t\tif (adjustedX !== position.x || adjustedY !== position.y) {\n\t\t\tsetPosition({ x: Math.max(8, adjustedX), y: Math.max(8, adjustedY) });\n\t\t}\n\t}, [visible]);\n\n\t// 点击外部、按 ESC、页面滚动时关闭菜单\n\tuseEffect(() => {\n\t\tif (!visible) return;\n\n\t\tconst handleClose = (e: MouseEvent | KeyboardEvent) => {\n\t\t\tif (e instanceof KeyboardEvent && e.key !== 'Escape') return;\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tconst handleScroll = () => {\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClose);\n\t\tdocument.addEventListener('keydown', handleClose);\n\t\twindow.addEventListener('scroll', handleScroll, true);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClose);\n\t\t\tdocument.removeEventListener('keydown', handleClose);\n\t\t\twindow.removeEventListener('scroll', handleScroll, true);\n\t\t};\n\t}, [visible, onOpenChange]);\n\n\t// 渲染菜单项(递归支持二级子菜单)\n\tconst renderMenuItem = (item: ContextMenuItem) => {\n\t\tif (item.type === 'divider') {\n\t\t\treturn <div key={item.key} className=\"rpc_context_menu_divider\" />;\n\t\t}\n\n\t\tconst hasSub = item.children && item.children.length > 0;\n\n\t\tconst handleItemClick = (e: React.MouseEvent) => {\n\t\t\tif (item.disabled || hasSub) return;\n\t\t\te.stopPropagation();\n\t\t\titem.onClick?.(item, e);\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tconst itemClassNames = [\n\t\t\t'rpc_context_menu_item',\n\t\t\titem.danger ? 'rpc_context_menu_item_danger' : '',\n\t\t\titem.disabled ? 'rpc_context_menu_item_disabled' : '',\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\treturn (\n\t\t\t<div key={item.key} className={itemClassNames} onClick={handleItemClick}>\n\t\t\t\t{item.icon && <span className=\"rpc_context_menu_item_icon\">{item.icon}</span>}\n\t\t\t\t<span className=\"rpc_context_menu_item_label\">{item.label}</span>\n\t\t\t\t{item.shortcut && <span className=\"rpc_context_menu_item_shortcut\">{item.shortcut}</span>}\n\t\t\t\t{hasSub && <RightOutlined className=\"rpc_context_menu_item_arrow\" />}\n\n\t\t\t\t{/* 二级子菜单 */}\n\t\t\t\t{hasSub && (\n\t\t\t\t\t<div className=\"rpc_context_menu_submenu\">\n\t\t\t\t\t\t{item.children!.map((sub) => renderMenuItem(sub))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\tconst menuContent =\n\t\tvisible && typeof document !== 'undefined'\n\t\t\t? ReactDOM.createPortal(\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\tclassName={`rpc_context_menu_panel ${menuClassName}`}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${position.x}px`,\n\t\t\t\t\t\t\ttop: `${position.y}px`,\n\t\t\t\t\t\t\t...menuStyle,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{items.map((item) => renderMenuItem(item))}\n\t\t\t\t\t</div>,\n\t\t\t\t\tdocument.body,\n\t\t\t\t)\n\t\t\t: null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_context_menu ${className}`}\n\t\t\tstyle={style}\n\t\t\tonContextMenu={handleContextMenu}\n\t\t>\n\t\t\t{children}\n\t\t\t{menuContent}\n\t\t</div>\n\t);\n};\n\nexport default ContextMenu;\n"]}
|
|
1
|
+
{"version":3,"sources":["../ContextMenu/index.tsx"],"names":[],"mappings":"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","file":"chunk-CURWX7OY.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport { RightOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface ContextMenuItem {\n\t/** 菜单项唯一标识 */\n\tkey: string;\n\t/** 菜单项展示文本或节点 */\n\tlabel?: ReactNode;\n\t/** 菜单项前置图标 */\n\ticon?: ReactNode;\n\t/** 是否为分割线 */\n\ttype?: 'divider';\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 是否为警示/危险操作(红色显示) */\n\tdanger?: boolean;\n\t/** 快捷键提示(如 '⌘ C' / 'Ctrl+C') */\n\tshortcut?: string;\n\t/** 二级子菜单项列表 */\n\tchildren?: ContextMenuItem[];\n\t/** 点击菜单项回调 */\n\tonClick?: (item: ContextMenuItem, e: React.MouseEvent) => void;\n}\n\nexport interface ContextMenuProps {\n\t/** 菜单项列表配置 */\n\titems: ContextMenuItem[];\n\t/** 被右键激活的目标子组件/容器 */\n\tchildren: ReactNode;\n\t/** 是否禁用右键上下文菜单 */\n\tdisabled?: boolean;\n\t/** 菜单显隐状态改变回调 */\n\tonOpenChange?: (open: boolean) => void;\n\t/** 自定义菜单类名 */\n\tmenuClassName?: string;\n\t/** 自定义菜单样式 */\n\tmenuStyle?: CSSProperties;\n\t/** 自定义外层包裹类名 */\n\tclassName?: string;\n\t/** 自定义外层包裹样式 */\n\tstyle?: CSSProperties;\n}\n\ninterface Position {\n\tx: number;\n\ty: number;\n}\n\nconst ContextMenu: React.FC<ContextMenuProps> = ({\n\titems,\n\tchildren,\n\tdisabled = false,\n\tonOpenChange,\n\tmenuClassName = '',\n\tmenuStyle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [visible, setVisible] = useState<boolean>(false);\n\tconst [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n\tconst menuRef = useRef<HTMLDivElement>(null);\n\n\tconst handleContextMenu = (e: React.MouseEvent) => {\n\t\tif (disabled) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst mouseX = e.clientX;\n\t\tconst mouseY = e.clientY;\n\n\t\t// 初始设置位置\n\t\tsetPosition({ x: mouseX, y: mouseY });\n\t\tsetVisible(true);\n\t\tonOpenChange?.(true);\n\t};\n\n\t// 菜单渲染后自适应调整边界,防止溢出视口\n\tuseEffect(() => {\n\t\tif (!visible || !menuRef.current) return;\n\t\tconst menuEl = menuRef.current;\n\t\tconst rect = menuEl.getBoundingClientRect();\n\n\t\tlet adjustedX = position.x;\n\t\tlet adjustedY = position.y;\n\n\t\t// 水平防溢出\n\t\tif (position.x + rect.width > window.innerWidth) {\n\t\t\tadjustedX = window.innerWidth - rect.width - 8;\n\t\t}\n\n\t\t// 垂直防溢出\n\t\tif (position.y + rect.height > window.innerHeight) {\n\t\t\tadjustedY = window.innerHeight - rect.height - 8;\n\t\t}\n\n\t\tif (adjustedX !== position.x || adjustedY !== position.y) {\n\t\t\tsetPosition({ x: Math.max(8, adjustedX), y: Math.max(8, adjustedY) });\n\t\t}\n\t}, [visible]);\n\n\t// 点击外部、按 ESC、页面滚动时关闭菜单\n\tuseEffect(() => {\n\t\tif (!visible) return;\n\n\t\tconst handleClose = (e: MouseEvent | KeyboardEvent) => {\n\t\t\tif (e instanceof KeyboardEvent && e.key !== 'Escape') return;\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tconst handleScroll = () => {\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClose);\n\t\tdocument.addEventListener('keydown', handleClose);\n\t\twindow.addEventListener('scroll', handleScroll, true);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClose);\n\t\t\tdocument.removeEventListener('keydown', handleClose);\n\t\t\twindow.removeEventListener('scroll', handleScroll, true);\n\t\t};\n\t}, [visible, onOpenChange]);\n\n\t// 渲染菜单项(递归支持二级子菜单)\n\tconst renderMenuItem = (item: ContextMenuItem) => {\n\t\tif (item.type === 'divider') {\n\t\t\treturn <div key={item.key} className=\"rpc_context_menu_divider\" />;\n\t\t}\n\n\t\tconst hasSub = item.children && item.children.length > 0;\n\n\t\tconst handleItemClick = (e: React.MouseEvent) => {\n\t\t\tif (item.disabled || hasSub) return;\n\t\t\te.stopPropagation();\n\t\t\titem.onClick?.(item, e);\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tconst itemClassNames = [\n\t\t\t'rpc_context_menu_item',\n\t\t\titem.danger ? 'rpc_context_menu_item_danger' : '',\n\t\t\titem.disabled ? 'rpc_context_menu_item_disabled' : '',\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\treturn (\n\t\t\t<div key={item.key} className={itemClassNames} onClick={handleItemClick}>\n\t\t\t\t{item.icon && <span className=\"rpc_context_menu_item_icon\">{item.icon}</span>}\n\t\t\t\t<span className=\"rpc_context_menu_item_label\">{item.label}</span>\n\t\t\t\t{item.shortcut && <span className=\"rpc_context_menu_item_shortcut\">{item.shortcut}</span>}\n\t\t\t\t{hasSub && <RightOutlined className=\"rpc_context_menu_item_arrow\" />}\n\n\t\t\t\t{/* 二级子菜单 */}\n\t\t\t\t{hasSub && (\n\t\t\t\t\t<div className=\"rpc_context_menu_submenu\">\n\t\t\t\t\t\t{item.children!.map((sub) => renderMenuItem(sub))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\tconst menuContent =\n\t\tvisible && typeof document !== 'undefined'\n\t\t\t? ReactDOM.createPortal(\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\tclassName={`rpc_context_menu_panel ${menuClassName}`}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${position.x}px`,\n\t\t\t\t\t\t\ttop: `${position.y}px`,\n\t\t\t\t\t\t\t...menuStyle,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{items.map((item) => renderMenuItem(item))}\n\t\t\t\t\t</div>,\n\t\t\t\t\tdocument.body,\n\t\t\t\t)\n\t\t\t: null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_context_menu ${className}`}\n\t\t\tstyle={style}\n\t\t\tonContextMenu={handleContextMenu}\n\t\t>\n\t\t\t{children}\n\t\t\t{menuContent}\n\t\t</div>\n\t);\n};\n\nexport default ContextMenu;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
@@ -154,7 +154,7 @@ var VideoPlayer = ({
|
|
|
154
154
|
),
|
|
155
155
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_video_player_bar_row", children: [
|
|
156
156
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_video_player_left_btns", children: [
|
|
157
|
-
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "rpc_video_player_btn", onClick: togglePlay, children: isPlaying ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
157
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "rpc_video_player_btn", onClick: togglePlay, children: isPlaying ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.PauseCircleOutlined, {}) : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.PlayCircleOutlined, {}) }),
|
|
158
158
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
159
159
|
"button",
|
|
160
160
|
{
|
|
@@ -212,7 +212,7 @@ var VideoPlayer = ({
|
|
|
212
212
|
className: "rpc_video_player_btn",
|
|
213
213
|
onClick: toggleFullscreen,
|
|
214
214
|
title: "\u5168\u5C4F\u5207\u6362",
|
|
215
|
-
children: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
215
|
+
children: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.FullscreenExitOutlined, {}) : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.FullscreenOutlined, {})
|
|
216
216
|
}
|
|
217
217
|
)
|
|
218
218
|
] })
|
|
@@ -227,5 +227,5 @@ var VideoPlayer = ({
|
|
|
227
227
|
var VideoPlayer_default = VideoPlayer;
|
|
228
228
|
|
|
229
229
|
exports.VideoPlayer_default = VideoPlayer_default;
|
|
230
|
-
//# sourceMappingURL=chunk-
|
|
231
|
-
//# sourceMappingURL=chunk-
|
|
230
|
+
//# sourceMappingURL=chunk-ED3ZG2VX.cjs.map
|
|
231
|
+
//# sourceMappingURL=chunk-ED3ZG2VX.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../VideoPlayer/index.tsx"],"names":["useRef","useState","jsxs","jsx","PauseCircleOutlined","PlayCircleOutlined","FullscreenExitOutlined","FullscreenOutlined"],"mappings":"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","file":"chunk-WZRUBHS3.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport {\n\tPlayCircleOutlined,\n\tPauseCircleOutlined,\n\tFullscreenOutlined,\n\tFullscreenExitOutlined,\n\tSoundOutlined,\n} from '../src/icons';\nimport './index.less';\n\nexport interface VideoPlayerProps {\n\t/** 视频播放地址 */\n\tsrc: string;\n\t/** 视频封面图 */\n\tposter?: string;\n\t/** 是否自动播放,默认为 false */\n\tautoPlay?: boolean;\n\t/** 是否循环播放,默认为 false */\n\tloop?: boolean;\n\t/** 是否默认静音,默认为 false */\n\tmuted?: boolean;\n\t/** 宽度,默认为 640 */\n\twidth?: number | string;\n\t/** 高度,默认为 360 */\n\theight?: number | string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction formatVideoTime(seconds: number): string {\n\tif (isNaN(seconds) || seconds < 0) return '00:00';\n\tconst m = Math.floor(seconds / 60);\n\tconst s = Math.floor(seconds % 60);\n\treturn `${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`;\n}\n\nconst speedList = [0.75, 1.0, 1.25, 1.5, 2.0];\n\nconst VideoPlayer: React.FC<VideoPlayerProps> = ({\n\tsrc,\n\tposter,\n\tautoPlay = false,\n\tloop = false,\n\tmuted = false,\n\twidth = 640,\n\theight = 360,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst progressRef = useRef<HTMLDivElement>(null);\n\n\tconst [isPlaying, setIsPlaying] = useState<boolean>(false);\n\tconst [currentTime, setCurrentTime] = useState<number>(0);\n\tconst [duration, setDuration] = useState<number>(0);\n\tconst [speedIndex, setSpeedIndex] = useState<number>(1); // 1.0x\n\tconst [isControlsVisible, setIsControlsVisible] = useState<boolean>(true);\n\tconst [isFullscreen, setIsFullscreen] = useState<boolean>(false);\n\n\tconst hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tconst currentSpeed = speedList[speedIndex] || 1.0;\n\n\tconst togglePlay = () => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tif (isPlaying) {\n\t\t\tvideo.pause();\n\t\t\tsetIsPlaying(false);\n\t\t} else {\n\t\t\tvideo.play();\n\t\t\tsetIsPlaying(true);\n\t\t}\n\t};\n\n\tconst seekBy = (seconds: number) => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tvideo.currentTime = Math.max(0, Math.min(duration, video.currentTime + seconds));\n\t};\n\n\tconst handleTimeUpdate = () => {\n\t\tif (videoRef.current) {\n\t\t\tsetCurrentTime(videoRef.current.currentTime);\n\t\t}\n\t};\n\n\tconst handleLoadedMetadata = () => {\n\t\tif (videoRef.current) {\n\t\t\tsetDuration(videoRef.current.duration);\n\t\t}\n\t};\n\n\tconst handleProgressClick = (e: React.MouseEvent<HTMLDivElement>) => {\n\t\tif (!progressRef.current || !videoRef.current || !duration) return;\n\t\tconst rect = progressRef.current.getBoundingClientRect();\n\t\tconst percent = Math.min(1, Math.max(0, (e.clientX - rect.left) / rect.width));\n\t\tconst target = percent * duration;\n\t\tvideoRef.current.currentTime = target;\n\t\tsetCurrentTime(target);\n\t};\n\n\tconst handleSpeedChange = () => {\n\t\tconst next = (speedIndex + 1) % speedList.length;\n\t\tsetSpeedIndex(next);\n\t\tif (videoRef.current) {\n\t\t\tvideoRef.current.playbackRate = speedList[next];\n\t\t}\n\t};\n\n\tconst toggleFullscreen = () => {\n\t\tconst container = containerRef.current;\n\t\tif (!container) return;\n\n\t\tif (!document.fullscreenElement) {\n\t\t\tcontainer.requestFullscreen?.();\n\t\t\tsetIsFullscreen(true);\n\t\t} else {\n\t\t\tdocument.exitFullscreen?.();\n\t\t\tsetIsFullscreen(false);\n\t\t}\n\t};\n\n\tconst togglePiP = async () => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tif (document.pictureInPictureElement) {\n\t\t\tawait document.exitPictureInPicture();\n\t\t} else if (document.pictureInPictureEnabled) {\n\t\t\tawait video.requestPictureInPicture();\n\t\t}\n\t};\n\n\tconst showControls = () => {\n\t\tsetIsControlsVisible(true);\n\t\tif (hideTimerRef.current) clearTimeout(hideTimerRef.current);\n\t\thideTimerRef.current = setTimeout(() => {\n\t\t\tif (isPlaying) {\n\t\t\t\tsetIsControlsVisible(false);\n\t\t\t}\n\t\t}, 3000);\n\t};\n\n\tconst progressPercent = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tonMouseMove={showControls}\n\t\t\tonMouseEnter={showControls}\n\t\t\tonMouseLeave={() => isPlaying && setIsControlsVisible(false)}\n\t\t\tclassName={`rpc_video_player ${className}`}\n\t\t\tstyle={{ width, height, ...style }}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tsrc={src}\n\t\t\t\tposter={poster}\n\t\t\t\tautoPlay={autoPlay}\n\t\t\t\tloop={loop}\n\t\t\t\tmuted={muted}\n\t\t\t\tonClick={togglePlay}\n\t\t\t\tonTimeUpdate={handleTimeUpdate}\n\t\t\t\tonLoadedMetadata={handleLoadedMetadata}\n\t\t\t\tonEnded={() => setIsPlaying(false)}\n\t\t\t\tclassName=\"rpc_video_player_video\"\n\t\t\t/>\n\n\t\t\t{/* 中央大播放按钮(暂停时展示) */}\n\t\t\t{!isPlaying && (\n\t\t\t\t<div className=\"rpc_video_player_big_play_btn\" onClick={togglePlay}>\n\t\t\t\t\t▶\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 底部控制条 */}\n\t\t\t<div\n\t\t\t\tclassName={`rpc_video_player_controls ${\n\t\t\t\t\t!isControlsVisible && isPlaying ? 'rpc_video_player_controls_hidden' : ''\n\t\t\t\t}`}\n\t\t\t>\n\t\t\t\t{/* 进度条 */}\n\t\t\t\t<div\n\t\t\t\t\tref={progressRef}\n\t\t\t\t\tclassName=\"rpc_video_player_progress_wrap\"\n\t\t\t\t\tonClick={handleProgressClick}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"rpc_video_player_progress_fill\"\n\t\t\t\t\t\tstyle={{ width: `${progressPercent}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"rpc_video_player_bar_row\">\n\t\t\t\t\t<div className=\"rpc_video_player_left_btns\">\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_video_player_btn\" onClick={togglePlay}>\n\t\t\t\t\t\t\t{isPlaying ? <PauseCircleOutlined /> : <PlayCircleOutlined />}\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={() => seekBy(-10)}\n\t\t\t\t\t\t\ttitle=\"快退 10 秒\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t⏪ 10s\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={() => seekBy(10)}\n\t\t\t\t\t\t\ttitle=\"快进 10 秒\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t10s ⏩\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<span className=\"rpc_video_player_time\">\n\t\t\t\t\t\t\t{formatVideoTime(currentTime)} / {formatVideoTime(duration)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"rpc_video_player_right_btns\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn rpc_video_player_speed_btn\"\n\t\t\t\t\t\t\tonClick={handleSpeedChange}\n\t\t\t\t\t\t\ttitle=\"播放倍速\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentSpeed}x\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={togglePiP}\n\t\t\t\t\t\t\ttitle=\"画中画模式\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t🪟\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\n\t\t\t\t\t\t\ttitle=\"全屏切换\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{isFullscreen ? <FullscreenExitOutlined /> : <FullscreenOutlined />}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default VideoPlayer;\n"]}
|
|
1
|
+
{"version":3,"sources":["../VideoPlayer/index.tsx"],"names":["useRef","useState","jsxs","jsx","PauseCircleOutlined","PlayCircleOutlined","FullscreenExitOutlined","FullscreenOutlined"],"mappings":"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","file":"chunk-ED3ZG2VX.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport {\n\tPlayCircleOutlined,\n\tPauseCircleOutlined,\n\tFullscreenOutlined,\n\tFullscreenExitOutlined,\n\tSoundOutlined,\n} from '../src/icons';\nimport './index.less';\n\nexport interface VideoPlayerProps {\n\t/** 视频播放地址 */\n\tsrc: string;\n\t/** 视频封面图 */\n\tposter?: string;\n\t/** 是否自动播放,默认为 false */\n\tautoPlay?: boolean;\n\t/** 是否循环播放,默认为 false */\n\tloop?: boolean;\n\t/** 是否默认静音,默认为 false */\n\tmuted?: boolean;\n\t/** 宽度,默认为 640 */\n\twidth?: number | string;\n\t/** 高度,默认为 360 */\n\theight?: number | string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction formatVideoTime(seconds: number): string {\n\tif (isNaN(seconds) || seconds < 0) return '00:00';\n\tconst m = Math.floor(seconds / 60);\n\tconst s = Math.floor(seconds % 60);\n\treturn `${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`;\n}\n\nconst speedList = [0.75, 1.0, 1.25, 1.5, 2.0];\n\nconst VideoPlayer: React.FC<VideoPlayerProps> = ({\n\tsrc,\n\tposter,\n\tautoPlay = false,\n\tloop = false,\n\tmuted = false,\n\twidth = 640,\n\theight = 360,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst progressRef = useRef<HTMLDivElement>(null);\n\n\tconst [isPlaying, setIsPlaying] = useState<boolean>(false);\n\tconst [currentTime, setCurrentTime] = useState<number>(0);\n\tconst [duration, setDuration] = useState<number>(0);\n\tconst [speedIndex, setSpeedIndex] = useState<number>(1); // 1.0x\n\tconst [isControlsVisible, setIsControlsVisible] = useState<boolean>(true);\n\tconst [isFullscreen, setIsFullscreen] = useState<boolean>(false);\n\n\tconst hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tconst currentSpeed = speedList[speedIndex] || 1.0;\n\n\tconst togglePlay = () => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tif (isPlaying) {\n\t\t\tvideo.pause();\n\t\t\tsetIsPlaying(false);\n\t\t} else {\n\t\t\tvideo.play();\n\t\t\tsetIsPlaying(true);\n\t\t}\n\t};\n\n\tconst seekBy = (seconds: number) => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tvideo.currentTime = Math.max(0, Math.min(duration, video.currentTime + seconds));\n\t};\n\n\tconst handleTimeUpdate = () => {\n\t\tif (videoRef.current) {\n\t\t\tsetCurrentTime(videoRef.current.currentTime);\n\t\t}\n\t};\n\n\tconst handleLoadedMetadata = () => {\n\t\tif (videoRef.current) {\n\t\t\tsetDuration(videoRef.current.duration);\n\t\t}\n\t};\n\n\tconst handleProgressClick = (e: React.MouseEvent<HTMLDivElement>) => {\n\t\tif (!progressRef.current || !videoRef.current || !duration) return;\n\t\tconst rect = progressRef.current.getBoundingClientRect();\n\t\tconst percent = Math.min(1, Math.max(0, (e.clientX - rect.left) / rect.width));\n\t\tconst target = percent * duration;\n\t\tvideoRef.current.currentTime = target;\n\t\tsetCurrentTime(target);\n\t};\n\n\tconst handleSpeedChange = () => {\n\t\tconst next = (speedIndex + 1) % speedList.length;\n\t\tsetSpeedIndex(next);\n\t\tif (videoRef.current) {\n\t\t\tvideoRef.current.playbackRate = speedList[next];\n\t\t}\n\t};\n\n\tconst toggleFullscreen = () => {\n\t\tconst container = containerRef.current;\n\t\tif (!container) return;\n\n\t\tif (!document.fullscreenElement) {\n\t\t\tcontainer.requestFullscreen?.();\n\t\t\tsetIsFullscreen(true);\n\t\t} else {\n\t\t\tdocument.exitFullscreen?.();\n\t\t\tsetIsFullscreen(false);\n\t\t}\n\t};\n\n\tconst togglePiP = async () => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tif (document.pictureInPictureElement) {\n\t\t\tawait document.exitPictureInPicture();\n\t\t} else if (document.pictureInPictureEnabled) {\n\t\t\tawait video.requestPictureInPicture();\n\t\t}\n\t};\n\n\tconst showControls = () => {\n\t\tsetIsControlsVisible(true);\n\t\tif (hideTimerRef.current) clearTimeout(hideTimerRef.current);\n\t\thideTimerRef.current = setTimeout(() => {\n\t\t\tif (isPlaying) {\n\t\t\t\tsetIsControlsVisible(false);\n\t\t\t}\n\t\t}, 3000);\n\t};\n\n\tconst progressPercent = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tonMouseMove={showControls}\n\t\t\tonMouseEnter={showControls}\n\t\t\tonMouseLeave={() => isPlaying && setIsControlsVisible(false)}\n\t\t\tclassName={`rpc_video_player ${className}`}\n\t\t\tstyle={{ width, height, ...style }}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tsrc={src}\n\t\t\t\tposter={poster}\n\t\t\t\tautoPlay={autoPlay}\n\t\t\t\tloop={loop}\n\t\t\t\tmuted={muted}\n\t\t\t\tonClick={togglePlay}\n\t\t\t\tonTimeUpdate={handleTimeUpdate}\n\t\t\t\tonLoadedMetadata={handleLoadedMetadata}\n\t\t\t\tonEnded={() => setIsPlaying(false)}\n\t\t\t\tclassName=\"rpc_video_player_video\"\n\t\t\t/>\n\n\t\t\t{/* 中央大播放按钮(暂停时展示) */}\n\t\t\t{!isPlaying && (\n\t\t\t\t<div className=\"rpc_video_player_big_play_btn\" onClick={togglePlay}>\n\t\t\t\t\t▶\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 底部控制条 */}\n\t\t\t<div\n\t\t\t\tclassName={`rpc_video_player_controls ${\n\t\t\t\t\t!isControlsVisible && isPlaying ? 'rpc_video_player_controls_hidden' : ''\n\t\t\t\t}`}\n\t\t\t>\n\t\t\t\t{/* 进度条 */}\n\t\t\t\t<div\n\t\t\t\t\tref={progressRef}\n\t\t\t\t\tclassName=\"rpc_video_player_progress_wrap\"\n\t\t\t\t\tonClick={handleProgressClick}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"rpc_video_player_progress_fill\"\n\t\t\t\t\t\tstyle={{ width: `${progressPercent}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"rpc_video_player_bar_row\">\n\t\t\t\t\t<div className=\"rpc_video_player_left_btns\">\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_video_player_btn\" onClick={togglePlay}>\n\t\t\t\t\t\t\t{isPlaying ? <PauseCircleOutlined /> : <PlayCircleOutlined />}\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={() => seekBy(-10)}\n\t\t\t\t\t\t\ttitle=\"快退 10 秒\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t⏪ 10s\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={() => seekBy(10)}\n\t\t\t\t\t\t\ttitle=\"快进 10 秒\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t10s ⏩\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<span className=\"rpc_video_player_time\">\n\t\t\t\t\t\t\t{formatVideoTime(currentTime)} / {formatVideoTime(duration)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"rpc_video_player_right_btns\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn rpc_video_player_speed_btn\"\n\t\t\t\t\t\t\tonClick={handleSpeedChange}\n\t\t\t\t\t\t\ttitle=\"播放倍速\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentSpeed}x\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={togglePiP}\n\t\t\t\t\t\t\ttitle=\"画中画模式\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t🪟\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\n\t\t\t\t\t\t\ttitle=\"全屏切换\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{isFullscreen ? <FullscreenExitOutlined /> : <FullscreenOutlined />}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default VideoPlayer;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CloseCircleFilled, DownOutlined } from './chunk-
|
|
1
|
+
import { CloseCircleFilled, DownOutlined } from './chunk-2IDVNTKR.js';
|
|
2
2
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
3
3
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -918,5 +918,5 @@ var ColorPicker = (props) => {
|
|
|
918
918
|
var ColorPicker_default = ColorPicker;
|
|
919
919
|
|
|
920
920
|
export { Color, ColorPicker_default, generateColor };
|
|
921
|
-
//# sourceMappingURL=chunk-
|
|
922
|
-
//# sourceMappingURL=chunk-
|
|
921
|
+
//# sourceMappingURL=chunk-EDNBPLUS.js.map
|
|
922
|
+
//# sourceMappingURL=chunk-EDNBPLUS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../ColorPicker/Color.ts","../ColorPicker/index.tsx"],"names":["_a","_b"],"mappings":";;;;;AAyBO,IAAM,kBAAA,GAAqB,CAAC,WAAA,KAA6C;AAC/E,EAAA,IAAI,KAAA,GAAQ,YAAY,IAAA,EAAK;AAC7B,EAAA,IAAI,KAAA,CAAM,WAAA,EAAY,CAAE,UAAA,CAAW,iBAAiB,CAAA,EAAG;AACtD,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,oCAAoC,CAAA;AAC9D,IAAA,IAAI,KAAA,EAAO;AACV,MAAA,KAAA,GAAQ,MAAM,CAAC,CAAA;AAAA,IAChB;AAAA,EACD;AAIA,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,mBAAmB,CAAA;AAC7C,EAAA,MAAM,QAA6B,EAAC;AAEpC,EAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAA,KAAU;AAC9B,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,yBAAyB,CAAA;AACzD,IAAA,IAAI,OAAA,GAAU,KAAA,KAAU,CAAA,GAAI,CAAA,GAAI,GAAA;AAChC,IAAA,IAAI,QAAA,GAAW,IAAA;AAEf,IAAA,IAAI,YAAA,EAAc;AACjB,MAAA,OAAA,GAAU,UAAA,CAAW,YAAA,CAAa,CAAC,CAAC,CAAA;AACpC,MAAA,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,uBAAA,EAAyB,EAAE,EAAE,IAAA,EAAK;AAAA,IAC3D;AAEA,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACV,KAAA,EAAO,cAAc,QAAQ,CAAA;AAAA,MAC7B;AAAA,KACA,CAAA;AAAA,EACF,CAAC,CAAA;AAED,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO;AAAA,MACN,EAAE,KAAA,EAAO,aAAA,CAAc,iBAAiB,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACtD,EAAE,KAAA,EAAO,aAAA,CAAc,kBAAkB,CAAA,EAAG,SAAS,GAAA;AAAI,KAC1D;AAAA,EACD;AAEA,EAAA,OAAO,KAAA;AACR,CAAA;AAEO,IAAM,iBAAA,GAAoB,CAAC,KAAA,KAAuC;AACxE,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAO,CAAA;AAC9D,EAAA,OAAO,0BAA0B,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,GAAG,CAAA,CAAE,KAAA,CAAM,WAAA,EAAa,IAAI,CAAA,CAAE,OAAO,GAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AACxG,CAAA;AAEO,IAAM,kBAAA,GAAqB,CAAC,KAAA,KAAuC;AACzE,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAO,CAAA;AAC9D,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,GAAG,CAAA,CAAE,KAAA,CAAM,WAAA,EAAa,IAAI,CAAA,CAAE,OAAO,CAAA,CAAA,CAAG,CAAA,CAAE,KAAK,IAAI,CAAA;AAC7E,CAAA;AAEO,IAAM,KAAA,GAAN,MAAM,MAAA,CAAM;AAAA;AAAA,EAMlB,YAAY,UAAA,EAAyB;AALrC,IAAA,IAAA,CAAA,CAAA,GAAY,CAAA;AACZ;AAAA,IAAA,IAAA,CAAA,CAAA,GAAY,CAAA;AACZ;AAAA,IAAA,IAAA,CAAA,CAAA,GAAY,CAAA;AACZ;AAAA,IAAA,IAAA,CAAA,CAAA,GAAY,CAAA;AA/Eb,IAAA,IAAA,EAAA,EAAA,EAAA;AAkFE,IAAA,IAAI,CAAC,UAAA,EAAY;AAChB,MAAA,IAAA,CAAK,CAAA,GAAI,GAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,GAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,CAAA;AACT,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,sBAAsB,MAAA,EAAO;AAChC,MAAA,IAAA,CAAK,IAAI,UAAA,CAAW,CAAA;AACpB,MAAA,IAAA,CAAK,IAAI,UAAA,CAAW,CAAA;AACpB,MAAA,IAAA,CAAK,IAAI,UAAA,CAAW,CAAA;AACpB,MAAA,IAAA,CAAK,IAAI,UAAA,CAAW,CAAA;AACpB,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AACnC,MAAA,MAAM,MAAA,GAAS,MAAA,CAAM,WAAA,CAAY,UAAU,CAAA;AAC3C,MAAA,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA;AAChB,MAAA,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA;AAChB,MAAA,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA;AAChB,MAAA,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA;AAChB,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AACnC,MAAA,IAAI,GAAA,IAAO,UAAA,IAAc,GAAA,IAAO,UAAA,IAAc,OAAO,UAAA,EAAY;AAChE,QAAA,MAAM,GAAA,GAAM,MAAA,CAAM,QAAA,CAAS,UAAA,CAAW,CAAA,EAAG,UAAA,CAAW,CAAA,EAAG,UAAA,CAAW,CAAA,EAAA,CAAG,EAAA,GAAA,UAAA,CAAW,CAAA,KAAX,IAAA,GAAA,EAAA,GAAgB,CAAC,CAAA;AACtF,QAAA,IAAA,CAAK,IAAI,GAAA,CAAI,CAAA;AACb,QAAA,IAAA,CAAK,IAAI,GAAA,CAAI,CAAA;AACb,QAAA,IAAA,CAAK,IAAI,GAAA,CAAI,CAAA;AACb,QAAA,IAAA,CAAK,IAAI,GAAA,CAAI,CAAA;AAAA,MACd,WAAW,GAAA,IAAO,UAAA,IAAc,GAAA,IAAO,UAAA,IAAc,OAAO,UAAA,EAAY;AACvE,QAAA,IAAA,CAAK,CAAA,GAAI,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAChD,QAAA,IAAA,CAAK,CAAA,GAAI,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAChD,QAAA,IAAA,CAAK,CAAA,GAAI,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAChD,QAAA,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAG,EAAA,GAAA,UAAA,CAAW,CAAA,KAAX,IAAA,GAAA,EAAA,GAAgB,CAAC,CAAC,CAAA;AAAA,MACpD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO,QAAA,CAAS,CAAA,EAAW,CAAA,EAAW,CAAA,EAAW,IAAY,CAAA,EAAa;AACzE,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAClB,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAClB,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAElB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,OAAO,KAAK,CAAA;AACxC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,OAAO,KAAK,CAAA;AACxC,IAAA,MAAM,QAAQ,GAAA,GAAM,GAAA;AAEpB,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,IAAI,UAAU,CAAA,EAAG;AAChB,MAAA,IAAI,QAAQ,KAAA,EAAO;AAClB,QAAA,CAAA,GAAA,CAAM,KAAA,GAAQ,SAAS,KAAA,GAAS,CAAA;AAAA,MACjC,CAAA,MAAA,IAAW,QAAQ,KAAA,EAAO;AACzB,QAAA,CAAA,GAAA,CAAK,KAAA,GAAQ,SAAS,KAAA,GAAQ,CAAA;AAAA,MAC/B,CAAA,MAAO;AACN,QAAA,CAAA,GAAA,CAAK,KAAA,GAAQ,SAAS,KAAA,GAAQ,CAAA;AAAA,MAC/B;AACA,MAAA,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,EAAE,CAAA;AACrB,MAAA,IAAI,CAAA,GAAI,GAAG,CAAA,IAAK,GAAA;AAAA,IACjB;AAEA,IAAA,MAAM,CAAA,GAAI,QAAQ,CAAA,GAAI,CAAA,GAAI,KAAK,KAAA,CAAO,KAAA,GAAQ,MAAO,GAAG,CAAA;AACxD,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,GAAG,CAAA;AAE9B,IAAA,OAAO,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,EACxB;AAAA,EAEA,OAAO,QAAA,CAAS,CAAA,EAAW,CAAA,EAAW,CAAA,EAAW,IAAY,CAAA,EAAa;AACzE,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAClB,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAElB,IAAA,MAAM,IAAI,KAAA,GAAQ,KAAA;AAClB,IAAA,MAAM,CAAA,GAAI,KAAK,CAAA,GAAI,IAAA,CAAK,IAAM,CAAA,GAAI,EAAA,GAAM,IAAK,CAAC,CAAA,CAAA;AAC9C,IAAA,MAAM,IAAI,KAAA,GAAQ,CAAA;AAElB,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,IAAI,MAAA,GAAS,CAAA;AAEb,IAAA,IAAI,CAAA,IAAK,CAAA,IAAK,CAAA,GAAI,EAAA,EAAI;AACrB,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,EAAA,IAAM,CAAA,GAAI,GAAA,EAAK;AAC9B,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,GAAA,IAAO,CAAA,GAAI,GAAA,EAAK;AAC/B,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,GAAA,IAAO,CAAA,GAAI,GAAA,EAAK;AAC/B,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,GAAA,IAAO,CAAA,GAAI,GAAA,EAAK;AAC/B,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,GAAA,IAAO,CAAA,IAAK,GAAA,EAAK;AAChC,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV;AAEA,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAA,CAAO,MAAA,GAAS,KAAK,GAAG,CAAA;AACvC,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAA,CAAO,MAAA,GAAS,KAAK,GAAG,CAAA;AACvC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAA,CAAO,MAAA,GAAS,KAAK,GAAG,CAAA;AAE1C,IAAA,OAAO,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,MAAM,CAAA,EAAE;AAAA,EAC3B;AAAA,EAEA,OAAO,YAAY,GAAA,EAAuB;AACzC,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,IAAA,EAAK,CAAE,WAAA,EAAY;AAGvC,IAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AAC5B,MAAA,IAAI,GAAA,GAAM,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA;AACzB,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACrB,QAAA,GAAA,GAAM,GAAA,CACJ,KAAA,CAAM,EAAE,CAAA,CACR,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA,CAChB,IAAA,CAAK,EAAE,CAAA;AAAA,MACV;AACA,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACrB,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,OAAO,MAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MACjC;AACA,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACrB,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,CAAA,GAAI,SAAS,GAAA,CAAI,KAAA,CAAM,GAAG,CAAC,CAAA,EAAG,EAAE,CAAA,GAAI,GAAA;AAC1C,QAAA,OAAO,MAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MACjC;AAAA,IACD;AAGA,IAAA,MAAM,WAAW,OAAA,CAAQ,KAAA;AAAA,MACxB;AAAA,KACD;AACA,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,SAAS,CAAC,CAAA,KAAM,SAAY,UAAA,CAAW,QAAA,CAAS,CAAC,CAAC,CAAA,GAAI,CAAA;AAChE,MAAA,OAAO,MAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,IACjC;AAGA,IAAA,MAAM,WAAW,OAAA,CAAQ,KAAA;AAAA,MACxB;AAAA,KACD;AACA,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,SAAS,CAAC,CAAA,KAAM,SAAY,UAAA,CAAW,QAAA,CAAS,CAAC,CAAC,CAAA,GAAI,CAAA;AAChE,MAAA,OAAO,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE;AAAA,IACrB;AAGA,IAAA,OAAO,EAAE,GAAG,GAAA,EAAK,CAAA,EAAG,IAAI,CAAA,EAAG,GAAA,EAAK,GAAG,CAAA,EAAE;AAAA,EACtC;AAAA,EAEA,KAAA,GAAkB;AACjB,IAAA,OAAO,MAAA,CAAM,SAAS,IAAA,CAAK,CAAA,EAAG,KAAK,CAAA,EAAG,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA;AAAA,EACrD;AAAA,EAEA,WAAA,GAAsB;AACrB,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE,GAAI,KAAK,KAAA,EAAM;AAClC,IAAA,IAAI,IAAI,CAAA,EAAG;AACV,MAAA,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,IACtD;AACA,IAAA,OAAO,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,EAC5B;AAAA,EAEA,KAAA,GAAkB;AACjB,IAAA,OAAO;AAAA,MACN,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MACpB,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MACpB,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MACpB,GAAG,MAAA,CAAO,IAAA,CAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC;AAAA,KAC5B;AAAA,EACD;AAAA,EAEA,WAAA,GAAsB;AACrB,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE,GAAI,KAAK,KAAA,EAAM;AAClC,IAAA,IAAI,IAAI,CAAA,EAAG;AACV,MAAA,OAAO,QAAQ,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,GAAA,EAAM,CAAC,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,IACrC;AACA,IAAA,OAAO,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,MAAM,CAAC,CAAA,EAAA,CAAA;AAAA,EAC7B;AAAA,EAEA,KAAA,GAAgB;AACf,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE,GAAI,KAAK,KAAA,EAAM;AAC/B,IAAA,MAAM,OAAO,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC3C,IAAA,MAAM,OAAO,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC3C,IAAA,MAAM,OAAO,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC3C,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,IAAI,GAAG,IAAI,CAAA,CAAA;AAAA,EAC7B;AAAA,EAEA,WAAA,GAAsB;AACrB,IAAA,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAA;AAAA,EACxB;AAAA,EAEA,WAAA,GAAsB;AACrB,IAAA,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG;AACf,MAAA,OAAO,KAAK,WAAA,EAAY;AAAA,IACzB;AACA,IAAA,OAAO,KAAK,WAAA,EAAY;AAAA,EACzB;AACD;AAEO,IAAM,aAAA,GAAgB,CAAC,KAAA,KAA6B;AAC1D,EAAA,IAAI,iBAAiB,KAAA,EAAO;AAC3B,IAAA,OAAO,KAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAI,MAAM,KAAK,CAAA;AACvB;AC7OA,IAAM,WAAA,GAAc,CAAC,KAAA,KAA4B;AApEjD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAqEC,EAAA,MAAM;AAAA,IACL,UAAA,GAAa,KAAA;AAAA,IACb,KAAA,GAAQ,IAAA;AAAA,IACR,QAAA;AAAA,IACA,YAAA,GAAe,SAAA;AAAA,IACf,aAAA,GAAgB,KAAA;AAAA,IAChB,QAAA,GAAW,KAAA;AAAA,IACX,aAAA,GAAgB,KAAA;AAAA,IAChB,cAAA,GAAiB,KAAA;AAAA,IACjB,eAAA,GAAkB,KAAA;AAAA,IAClB,MAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,IAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA,GAAY,YAAA;AAAA,IACZ,WAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,OAAA,GAAU,OAAA;AAAA,IACV,KAAA;AAAA,IACA,QAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ,KAAA;AAAA,IACA,GAAG;AAAA,GACJ,GAAI,KAAA;AAGJ,EAAA,MAAM,WAAA,GAA2B,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAChD,IAAA,GACA,IAAA,KAAS,UAAA,GACR,CAAC,UAAU,CAAA,GACX,CAAC,QAAQ,CAAA;AACb,EAAA,MAAM,CAAC,YAAY,aAAa,CAAA,GAAI,UAAoB,EAAA,GAAA,WAAA,CAAY,CAAC,CAAA,KAAb,IAAA,GAAA,EAAA,GAAkB,QAAQ,CAAA;AAGlF,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC/D,EAAA,MAAM,MAAA,GAAS,IAAA,KAAS,MAAA,GAAY,IAAA,GAAO,YAAA;AAG3C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAA8B,MAAM;AAC7E,IAAA,IAAI,OAAO,YAAA,KAAiB,QAAA,IAAY,YAAA,CAAa,QAAA,CAAS,GAAG,CAAA,EAAG;AACnE,MAAA,OAAO,mBAAmB,YAAY,CAAA;AAAA,IACvC;AACA,IAAA,OAAO;AAAA,MACN,EAAE,KAAA,EAAO,aAAA,CAAc,mBAAmB,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACxD,EAAE,KAAA,EAAO,aAAA,CAAc,oBAAoB,CAAA,EAAG,SAAS,GAAA;AAAI,KAC5D;AAAA,EACD,CAAC,CAAA;AACD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAiB,CAAC,CAAA;AAGhE,EAAA,MAAM,CAAC,eAAe,gBAAgB,CAAA,GAAI,SAAgB,MAAM,aAAA,CAAc,YAAY,CAAC,CAAA;AAC3F,EAAA,MAAM,YAAA,GACL,UAAA,KAAe,UAAA,GAAA,CACX,EAAA,GAAA,CAAA,EAAA,GAAA,aAAA,CAAc,eAAe,CAAA,KAA7B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgC,KAAA,KAAhC,IAAA,GAAA,EAAA,GAAyC,aAAA,GAC1C,KAAA,KAAU,MAAA,GACT,aAAA,CAAc,KAAK,CAAA,GACnB,aAAA;AAGL,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAsB,aAAa,CAAA;AAC/E,EAAA,MAAM,aAAA,GAAgB,MAAA,KAAW,MAAA,GAAY,MAAA,GAAS,cAAA;AAEtD,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,cAAA,GAAiB,OAAuB,IAAI,CAAA;AAClD,EAAA,MAAM,eAAA,GAAkB,OAAuB,IAAI,CAAA;AAEnD,EAAA,MAAM,aAAA,GAAgB,OAAgB,KAAK,CAAA;AAE3C,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACxB,CAAC,QAAA,KAAsB;AACtB,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,IAAI,SAAS,MAAA,EAAW;AACvB,QAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,MACzB;AACA,MAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,QAAA,CAAA;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,IAAA,EAAM,YAAY;AAAA,GAC9B;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IACnB,CAAC,SAAA,EAAkB,UAAA,GAAa,KAAA,KAAU;AACzC,MAAA,IAAI,eAAe,UAAA,EAAY;AAC9B,QAAA,MAAM,SAAA,GAAY,CAAC,GAAG,aAAa,CAAA;AACnC,QAAA,SAAA,CAAU,eAAe,CAAA,GAAI;AAAA,UAC5B,GAAG,UAAU,eAAe,CAAA;AAAA,UAC5B,KAAA,EAAO;AAAA,SACR;AACA,QAAA,gBAAA,CAAiB,SAAS,CAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,kBAAkB,SAAS,CAAA;AAC1C,QAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,SAAA,EAAW,MAAA,CAAA;AACtB,QAAA,IAAI,UAAA,EAAY;AACf,UAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,SAAA,CAAA;AAAA,QACpB;AACA,QAAA;AAAA,MACD;AAEA,MAAA,IAAI,UAAU,MAAA,EAAW;AACxB,QAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,MAC3B;AACA,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,SAAA,EAAW,UAAU,WAAA,EAAY,CAAA;AAC5C,MAAA,IAAI,UAAA,EAAY;AACf,QAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,SAAA,CAAA;AAAA,MACpB;AAAA,IACD,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,aAAA,EAAe,eAAA,EAAiB,KAAA,EAAO,UAAU,gBAAgB;AAAA,GAC/E;AAEA,EAAA,MAAM,eAAA,GAAkB,OAAc,YAAY,CAAA;AAClD,EAAA,eAAA,CAAgB,OAAA,GAAU,YAAA;AAE1B,EAAA,MAAM,cAAA,GAAiB,OAAO,WAAW,CAAA;AACzC,EAAA,cAAA,CAAe,OAAA,GAAU,WAAA;AAGzB,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,IAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAkB;AAC7C,MAAA,IAAI,YAAA,CAAa,WAAW,CAAC,YAAA,CAAa,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AAC7E,QAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,MACvB;AAAA,IACD,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,IAAA,OAAO,MAAM;AACZ,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,kBAAkB,CAAA;AAAA,IAC7D,CAAA;AAAA,EACD,CAAA,EAAG,CAAC,MAAA,EAAQ,gBAAgB,CAAC,CAAA;AAG7B,EAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,CAAC,CAAA,KAAoC;AAC1E,IAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACzB,IAAA,MAAM,IAAA,GAAO,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAsB;AACtD,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,GAAG,CAAC,CAAA;AAEjE,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAC3C,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAA,CAAO,IAAI,CAAA,GAAI,IAAA,CAAK,UAAU,GAAG,CAAA;AAEhD,IAAA,MAAM,OAAO,eAAA,CAAgB,OAAA;AAC7B,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,CAAA,KAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA;AAE5C,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM;AAAA,MAC1B,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,CAAA;AAAA,MACA,CAAA;AAAA,MACA,CAAA,EAAG;AAAA,KACH,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,QAAQ,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,sBAAA,GAAyB,CAAC,CAAA,KAAuB;AACtD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,IAAA,iBAAA,CAAkB,CAAC,CAAA;AAEnB,IAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA0B;AAClD,MAAA,IAAI,cAAc,OAAA,EAAS;AAC1B,QAAA,iBAAA,CAAkB,SAAS,CAAA;AAAA,MAC5B;AAAA,IACD,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,IAAI,cAAc,OAAA,EAAS;AAC1B,QAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,QAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,eAAA,CAAgB,OAAA,CAAA;AAAA,MACpC;AACA,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,CAAC,CAAA,KAAoC;AACtE,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,CAAQ,qBAAA,EAAsB;AACxD,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAE3C,IAAA,MAAM,OAAO,eAAA,CAAgB,OAAA;AAC7B,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,CAAA,KAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA;AAE5C,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM;AAAA,MAC1B,CAAA,EAAG,CAAA,KAAM,GAAA,GAAM,CAAA,GAAI,CAAA;AAAA,MACnB,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,CAAA,EAAG;AAAA,KACH,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,QAAQ,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAuB;AAClD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,aAAA,CAAc,CAAC,CAAA;AAEf,IAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA0B;AAClD,MAAA,aAAA,CAAc,SAAS,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,eAAA,CAAgB,OAAA,CAAA;AACnC,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,CAAA,KAAoC;AACxE,IAAA,IAAI,CAAC,eAAe,OAAA,EAAS;AAC7B,IAAA,MAAM,IAAA,GAAO,cAAA,CAAe,OAAA,CAAQ,qBAAA,EAAsB;AAC1D,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,MAAM,IAAI,MAAA,CAAA,CAAQ,CAAA,GAAI,KAAK,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA;AAE5C,IAAA,MAAM,OAAO,eAAA,CAAgB,OAAA;AAE7B,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM;AAAA,MAC1B,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,GAAG,IAAA,CAAK,CAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,QAAQ,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,oBAAA,GAAuB,CAAC,CAAA,KAAuB;AACpD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,eAAA,CAAgB,CAAC,CAAA;AAEjB,IAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA0B;AAClD,MAAA,eAAA,CAAgB,SAAS,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,eAAA,CAAgB,OAAA,CAAA;AACnC,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,sBAAA,GAAyB,WAAA;AAAA,IAC9B,CAAC,OAAe,CAAA,KAAoC;AACnD,MAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC9B,MAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,OAAA,CAAQ,qBAAA,EAAsB;AAC3D,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,MAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAEjD,MAAA,MAAM,SAAA,GAAY,CAAC,GAAG,aAAa,CAAA;AACnC,MAAA,SAAA,CAAU,KAAK,CAAA,GAAI;AAAA,QAClB,GAAG,UAAU,KAAK,CAAA;AAAA,QAClB;AAAA,OACD;AACA,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAC1B,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,SAAA,CAAU,KAAK,CAAA,CAAE,KAAA,EAAO,kBAAkB,SAAS,CAAA,CAAA;AAAA,IAC/D,CAAA;AAAA,IACA,CAAC,eAAe,QAAQ;AAAA,GACzB;AAEA,EAAA,MAAM,2BAAA,GAA8B,CAAC,KAAA,EAAe,CAAA,KAAuB;AAC1E,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,kBAAA,CAAmB,KAAK,CAAA;AAExB,IAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA0B;AAClD,MAAA,sBAAA,CAAuB,OAAO,SAAS,CAAA;AAAA,IACxC,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,uBAAA,GAA0B,CAAC,CAAA,KAAuB;AACvD,IAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC9B,IAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,OAAA,CAAQ,qBAAA,EAAsB;AAC3D,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAEjD,IAAA,MAAM,YAAA,GAAe,cAAc,SAAS,CAAA;AAC5C,IAAA,MAAM,SAAA,GAAY,CAAC,GAAG,aAAA,EAAe,EAAE,KAAA,EAAO,YAAA,EAAc,SAAS,CAAA;AACrE,IAAA,gBAAA,CAAiB,SAAS,CAAA;AAC1B,IAAA,kBAAA,CAAmB,SAAA,CAAU,SAAS,CAAC,CAAA;AACvC,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,YAAA,EAAc,kBAAkB,SAAS,CAAA,CAAA;AAAA,EACrD,CAAA;AAGA,EAAA,MAAM,wBAAA,GAA2B,CAAC,SAAA,KAA2B;AAC5D,IAAA,IAAI,WAAW,MAAA,EAAW;AACzB,MAAA,iBAAA,CAAkB,SAAS,CAAA;AAAA,IAC5B;AACA,IAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAiB,SAAA,CAAA;AAAA,EAClB,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAuB;AAChD,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,MAAM,OAAA,GAAU,IAAI,KAAA,CAAM,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,CAAA,EAAG,CAAA;AACtD,IAAA,WAAA,CAAY,SAAS,IAAI,CAAA;AACzB,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,EAAA;AAAA,EACD,CAAA;AAGA,EAAA,MAAM,sBAAsB,MAAM;AACjC,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM,EAAE,GAAG,YAAA,CAAa,CAAA,EAAG,CAAA,EAAG,GAAA,EAAK,GAAG,GAAA,EAAK,CAAA,EAAG,CAAA,EAAG,EAAE,WAAA,EAAY;AAEpF,IAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EAEZ,QAAA,EAAA;AAAA,MAAA,CAAA,WAAA,CAAY,MAAA,GAAS,KAAM,UAAA,IAAc,CAAC,6BAC3C,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACb,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,MAAA,GAAS,CAAA,mBACrB,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0CAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,SAAA,EAAW,CAAA,sCAAA,EACV,UAAA,KAAe,QAAA,GAAW,WAAW,EACtC,CAAA,CAAA;AAAA,cACA,OAAA,EAAS,MAAM,aAAA,CAAc,QAAQ,CAAA;AAAA,cACrC,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,SAAA,EAAW,CAAA,sCAAA,EACV,UAAA,KAAe,UAAA,GAAa,WAAW,EACxC,CAAA,CAAA;AAAA,cACA,OAAA,EAAS,MAAM,aAAA,CAAc,UAAU,CAAA;AAAA,cACvC,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACD,CAAA,uBAEC,KAAA,EAAA,EAAI,CAAA;AAAA,QAGL,UAAA,IAAc,CAAC,QAAA,oBACf,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,2CAAA;AAAA,YACV,OAAA,EAAS,gBAAA;AAAA,YACT,KAAA,EAAM,0BAAA;AAAA,YAEN,QAAA,kBAAA,GAAA,CAAC,SAAI,OAAA,EAAQ,WAAA,EAAY,OAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,IAAA,EAAK,MAAA,EACpD,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACA,EAAA,EAAG,GAAA;AAAA,gBACH,EAAA,EAAG,GAAA;AAAA,gBACH,EAAA,EAAG,IAAA;AAAA,gBACH,EAAA,EAAG,IAAA;AAAA,gBACH,MAAA,EAAO,SAAA;AAAA,gBACP,WAAA,EAAY,KAAA;AAAA,gBACZ,aAAA,EAAc;AAAA;AAAA,aACf,EACD;AAAA;AAAA;AACD,OAAA,EAEF,CAAA;AAAA,MAIA,eAAe,UAAA,oBACf,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,GAAA,EAAK,eAAA;AAAA,UACL,SAAA,EAAU,2CAAA;AAAA,UACV,OAAA,EAAS,uBAAA;AAAA,UAET,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAU,uCAAA;AAAA,gBACV,KAAA,EAAO,EAAE,UAAA,EAAY,iBAAA,CAAkB,aAAa,CAAA;AAAE;AAAA,aACvD;AAAA,YACC,aAAA,CAAc,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,qBACzB,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEA,SAAA,EAAW,CAAA,+CAAA,EACV,eAAA,KAAoB,GAAA,GAAM,WAAW,EACtC,CAAA,CAAA;AAAA,gBACA,KAAA,EAAO;AAAA,kBACN,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,CAAA;AAAA,kBACrB,eAAA,EAAiB,IAAA,CAAK,KAAA,CAAM,WAAA;AAAY,iBACzC;AAAA,gBACA,WAAA,EAAa,CAAC,CAAA,KAAM,2BAAA,CAA4B,KAAK,CAAC;AAAA,eAAA;AAAA,cARjD;AAAA,aAUN;AAAA;AAAA;AAAA,OACF;AAAA,sBAID,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,GAAA,EAAK,UAAA;AAAA,UACL,SAAA,EAAU,mCAAA;AAAA,UACV,KAAA,EAAO,EAAE,eAAA,EAAiB,QAAA,EAAS;AAAA,UACnC,WAAA,EAAa,sBAAA;AAAA,UAEb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yCAAA,EAA0C,CAAA;AAAA,4BACzD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,4BACzD,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAU,mCAAA;AAAA,gBACV,KAAA,EAAO;AAAA,kBACN,IAAA,EAAM,CAAA,EAAG,YAAA,CAAa,CAAC,CAAA,CAAA,CAAA;AAAA,kBACvB,GAAA,EAAK,CAAA,EAAG,GAAA,GAAM,YAAA,CAAa,CAAC,CAAA,CAAA,CAAA;AAAA,kBAC5B,eAAA,EAAiB,aAAa,WAAA;AAAY;AAC3C;AAAA;AACD;AAAA;AAAA,OACD;AAAA,sBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACd,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,GAAA,EAAK,YAAA;AAAA,cACL,SAAA,EAAU,uEAAA;AAAA,cACV,WAAA,EAAa,kBAAA;AAAA,cAEb,QAAA,kBAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,SAAA,EAAU,0CAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACN,IAAA,EAAM,CAAA,EAAI,YAAA,CAAa,CAAA,GAAI,MAAO,GAAG,CAAA,CAAA,CAAA;AAAA,oBACrC,eAAA,EAAiB;AAAA;AAClB;AAAA;AACD;AAAA,WACD;AAAA,UAEC,CAAC,aAAA,oBACD,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,GAAA,EAAK,cAAA;AAAA,cACL,SAAA,EAAU,yEAAA;AAAA,cACV,WAAA,EAAa,oBAAA;AAAA,cAEb,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAU,oCAAA;AAAA,oBACV,KAAA,EAAO;AAAA,sBACN,UAAA,EAAY,CAAA,uCAAA,EAA0C,IAAI,KAAA,CAAM;AAAA,wBAC/D,GAAG,YAAA,CAAa,CAAA;AAAA,wBAChB,GAAG,YAAA,CAAa,CAAA;AAAA,wBAChB,GAAG,YAAA,CAAa,CAAA;AAAA,wBAChB,CAAA,EAAG;AAAA,uBACH,CAAA,CAAE,WAAA,EAAa,CAAA,CAAA;AAAA;AACjB;AAAA,iBACD;AAAA,gCACA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAU,0CAAA;AAAA,oBACV,KAAA,EAAO;AAAA,sBACN,IAAA,EAAM,CAAA,EAAG,YAAA,CAAa,CAAA,GAAI,GAAG,CAAA,CAAA,CAAA;AAAA,sBAC7B,eAAA,EAAiB,aAAa,WAAA;AAAY;AAC3C;AAAA;AACD;AAAA;AAAA;AACD,SAAA,EAEF,CAAA;AAAA,wBAGA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACd,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,KAAA,EACC,UAAA,KAAe,UAAA,GACZ,EAAE,UAAA,EAAY,iBAAA,CAAkB,aAAa,CAAA,EAAE,GAC/C,EAAE,eAAA,EAAiB,YAAA,CAAa,aAAY;AAAE;AAAA,SAEnD,EACD;AAAA,OAAA,EACD,CAAA;AAAA,MAGC,CAAC,cAAA,oBACD,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kCAAA,EACd,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,yCAAA;AAAA,YACV,KAAA,EAAO,aAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,wBAAA,CAAyB,CAAA,CAAE,OAAO,KAAoB,CAAA;AAAA,YAEvE,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,KAAA,EAAM,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,8BACvB,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,KAAA,EAAM,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,8BACvB,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,KAAA,EAAM,QAAA,EAAA,KAAA,EAAG;AAAA;AAAA;AAAA,SACxB;AAAA,QAEC,kBAAkB,KAAA,oBAClB,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,KAAA,EAAO,aAAa,KAAA,EAAM;AAAA,YAC1B,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,MAAM,GAAA,GAAM,EAAE,MAAA,CAAO,KAAA;AACrB,cAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AAChC,cAAA,IAAA,CAAK,IAAI,YAAA,CAAa,CAAA;AACtB,cAAA,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,YACvB;AAAA;AAAA,SACD;AAAA,QAGA,kBAAkB,KAAA,oBAClB,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,KAAA,EAAO,CAAA,EAAG,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,EAAA,EAAK,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,EAAA,EAAK,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,CAAA;AAAA,YACtF,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,MAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,CAAA,CAAE,IAAA,EAAK,EAAG,EAAE,CAAC,CAAA;AACzE,cAAA,IAAI,KAAA,CAAM,MAAA,IAAU,CAAA,IAAK,CAAC,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG;AACtD,gBAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM;AAAA,kBACtB,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,GAAG,YAAA,CAAa;AAAA,iBAChB,CAAA;AACD,gBAAA,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,cACvB;AAAA,YACD;AAAA;AAAA,SACD;AAAA,QAGA,kBAAkB,KAAA,oBAClB,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,KAAA,EAAO,GAAG,YAAA,CAAa,CAAC,SAAM,YAAA,CAAa,CAAC,CAAA,GAAA,EAAM,YAAA,CAAa,CAAC,CAAA,CAAA,CAAA;AAAA,YAChE,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,MAAM,QAAQ,CAAA,CAAE,MAAA,CAAO,MACrB,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CACnB,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,QAAA,CAAS,EAAE,IAAA,EAAK,EAAG,EAAE,CAAC,CAAA;AACnC,cAAA,IAAI,KAAA,CAAM,MAAA,IAAU,CAAA,IAAK,CAAC,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG;AACtD,gBAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM;AAAA,kBACtB,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,GAAG,YAAA,CAAa;AAAA,iBAChB,CAAA;AACD,gBAAA,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,cACvB;AAAA,YACD;AAAA;AAAA,SACD;AAAA,QAGA,CAAC,aAAA,oBACD,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,OAAO,CAAA,EAAG,IAAA,CAAK,MAAM,YAAA,CAAa,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,YAC1C,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,MAAM,GAAA,GAAM,SAAS,CAAA,CAAE,MAAA,CAAO,MAAM,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA,EAAG,EAAE,CAAA;AACxD,cAAA,IAAI,CAAC,KAAA,CAAM,GAAG,CAAA,EAAG;AAChB,gBAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,GAAA,GAAM,GAAG,CAAC,CAAA;AAC/C,gBAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM;AAAA,kBACtB,GAAG,YAAA,CAAa,CAAA;AAAA,kBAChB,GAAG,YAAA,CAAa,CAAA;AAAA,kBAChB,GAAG,YAAA,CAAa,CAAA;AAAA,kBAChB,CAAA,EAAG;AAAA,iBACH,CAAA;AACD,gBAAA,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,cACvB;AAAA,YACD;AAAA;AAAA;AACD,OAAA,EAEF;AAAA,KAAA,EAEF,CAAA;AAAA,EAEF,CAAA;AAGA,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,QAAA,CAAkC,EAAE,CAAA;AAEpF,EAAA,MAAM,oBAAA,GAAuB,CAAC,GAAA,KAAgB;AAC7C,IAAA,mBAAA,CAAoB,CAAC,IAAA,MAAU;AAAA,MAC9B,GAAG,IAAA;AAAA,MACH,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG;AAAA,KACjB,CAAE,CAAA;AAAA,EACH,CAAA;AAGA,EAAA,MAAM,oBAAA,GAAuB,CAAC,YAAA,GAAe,KAAA,KAAU;AACtD,IAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,IAAA;AAC7C,IAAA,uBACC,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAA,EAAW,CAAA,kCAAA,EACV,YAAA,GAAe,8CAAA,GAAiD,EACjE,CAAA,CAAA;AAAA,QAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,GAAA,KAAQ;AAppBlC,UAAA,IAAAA,GAAAA,EAAAC,GAAAA;AAqpBK,UAAA,MAAM,WAAA,GAAA,CAAcD,MAAA,gBAAA,CAAiB,GAAG,MAApB,IAAA,GAAAA,GAAAA,GAAyB,OAAO,WAAA,KAAgB,KAAA;AACpE,UAAA,4BACE,KAAA,EAAA,EAA4B,KAAA,EAAO,EAAE,YAAA,EAAc,GAAE,EACpD,QAAA,EAAA;AAAA,YAAA,MAAA,CAAO,KAAA,oBACP,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAU,wCAAA;AAAA,gBACV,OAAA,EAAS,MAAM,oBAAA,CAAqB,GAAG,CAAA;AAAA,gBAEvC,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,YAAA;AAAA,oBAAA;AAAA,sBACA,KAAA,EAAO;AAAA,wBACN,QAAA,EAAU,EAAA;AAAA,wBACV,KAAA,EAAO,SAAA;AAAA,wBACP,UAAA,EAAY,qBAAA;AAAA,wBACZ,SAAA,EAAW,cAAc,gBAAA,GAAmB;AAAA;AAC7C;AAAA,mBACD;AAAA,kBACC,MAAA,CAAO;AAAA;AAAA;AAAA,aACT;AAAA,YAEA,CAAC,WAAA,oBACD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,QAAA,KAAa;AACnC,cAAA,MAAM,WAAA,GAAc,cAAc,CAAC,CAAA;AACnC,cAAA,uBACC,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEA,SAAA,EAAU,uCAAA;AAAA,kBACV,OAAA,EAAS,MAAM,WAAA,CAAY,WAAA,EAAa,IAAI,CAAA;AAAA,kBAC5C,KAAA,EAAO,YAAY,WAAA,EAAY;AAAA,kBAE/B,QAAA,kBAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACA,SAAA,EAAU,6CAAA;AAAA,sBACV,KAAA,EAAO,EAAE,eAAA,EAAiB,WAAA,CAAY,aAAY;AAAE;AAAA;AACrD,iBAAA;AAAA,gBARK;AAAA,eASN;AAAA,YAEF,CAAC,CAAA,EACF;AAAA,WAAA,EAAA,EAAA,CAnCQC,GAAAA,GAAA,MAAA,CAAO,GAAA,KAAP,IAAA,GAAAA,MAAc,GAqCxB,CAAA;AAAA,QAEF,CAAC;AAAA;AAAA,KACF;AAAA,EAEF,CAAA;AAGA,EAAA,MAAM,YAAA,wBACJ,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,IAAA,mBAAA,EAAoB;AAAA,IACpB,qBAAqB,IAAI;AAAA,GAAA,EAC3B,CAAA;AAGD,EAAA,MAAM,UAAA,GAAa,WAAA,GAChB,WAAA,CAAY,YAAA,EAAc;AAAA,IAC1B,UAAA,EAAY;AAAA,MACX,MAAA,EAAQ,mBAAA;AAAA,MACR,OAAA,EAAS,MAAM,oBAAA,CAAqB,KAAK;AAAA;AAC1C,GACA,CAAA,GACA,YAAA;AAGH,EAAA,MAAM,cAAA,GACL,UAAA,KAAe,UAAA,GACZ,EAAE,UAAA,EAAY,iBAAA,CAAkB,aAAa,CAAA,EAAE,GAC/C,EAAE,eAAA,EAAiB,YAAA,CAAa,aAAY,EAAE;AAElD,EAAA,MAAM,aAAa,MAAM;AACxB,IAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,IAAA,IAAI,OAAO,aAAa,UAAA,EAAY;AACnC,MAAA,OAAO,QAAA,CAAS,UAAA,KAAe,UAAA,GAAa,aAAA,GAAgB,YAAY,CAAA;AAAA,IACzE;AACA,IAAA,MAAM,cACL,UAAA,KAAe,UAAA,GAAa,mBAAmB,aAAa,CAAA,GAAI,aAAa,WAAA,EAAY;AAC1F,IAAA,uBAAO,GAAA,CAAC,UAAK,KAAA,EAAO,EAAE,UAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAU,EAAI,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,EACtE,CAAA;AAEA,EAAA,MAAM,sBAAsB,MAAM;AACjC,IAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,IAAA,IAAI,OAAO,aAAa,UAAA,EAAY;AACnC,MAAA,OAAO,SAAS,YAAY,CAAA;AAAA,IAC7B;AACA,IAAA,OAAO,QAAA;AAAA,EACR,CAAA;AAGA,EAAA,MAAM,YAAA,GAAe;AAAA,IACpB,SAAS,MAAM;AACd,MAAA,IAAI,YAAY,OAAA,EAAS;AACxB,QAAA,gBAAA,CAAiB,CAAC,MAAM,CAAA;AAAA,MACzB;AAAA,IACD,CAAA;AAAA,IACA,cAAc,MAAM;AACnB,MAAA,IAAI,YAAY,OAAA,EAAS;AACxB,QAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,MACtB;AAAA,IACD,CAAA;AAAA,IACA,cAAc,MAAM;AACnB,MAAA,IAAI,YAAY,OAAA,EAAS;AACxB,QAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,MACvB;AAAA,IACD;AAAA,GACD;AAEA,EAAA,MAAM,YAAY,OAAO,KAAA,KAAU,YAAY,KAAA,GAAA,CAAS,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,kBAAP,IAAA,GAAA,EAAA,GAAwB,IAAA;AAEhF,EAAA,IAAI,eAAA,IAAmB,CAAC,MAAA,EAAQ;AAC/B,IAAA,uBACC,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,GAAA,EAAK,YAAA;AAAA,QACL,SAAA,EAAW,CAAA,iEAAA,EAAoE,IAAI,CAAA,CAAA,EAClF,QAAA,GAAW,uCAAuC,EACnD,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,QACrB,KAAA;AAAA,QACC,GAAG,YAAA;AAAA,QACH,GAAG,SAAA;AAAA,QAEH,QAAA,EAAA,QAAA,GACA,mBAAA,EAAoB,mBAEpB,IAAA,CAAA,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uCAAA,EACd,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,uCAAA,EAAwC,KAAA,EAAO,cAAA,EAAgB,CAAA,EAC/E,CAAA;AAAA,UACC,UAAA;AAAW,SAAA,EACb;AAAA;AAAA,KAEF;AAAA,EAEF;AAEA,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,SAAS,cAAA,EAAe;AAAA,MACtD,GAAG,YAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAW,CAAA,iEAAA,EAAoE,IAAI,CAAA,CAAA,EAClF,QAAA,GAAW,uCAAuC,EACnD,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,YACrB,KAAA;AAAA,YACC,GAAG,SAAA;AAAA,YAEH,QAAA,EAAA;AAAA,cAAA,QAAA,GACA,mBAAA,qBAEA,IAAA,CAAA,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uCAAA,EACd,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,uCAAA,EAAwC,KAAA,EAAO,cAAA,EAAgB,CAAA,EAC/E,CAAA;AAAA,gBACC,UAAA;AAAW,eAAA,EACb,CAAA;AAAA,cAEA,UAAA,IAAc,CAAC,QAAA,oBACf,GAAA;AAAA,gBAAC,iBAAA;AAAA,gBAAA;AAAA,kBACA,SAAA,EAAU,sCAAA;AAAA,kBACV,OAAA,EAAS;AAAA;AAAA;AACV;AAAA;AAAA,SAEF;AAAA,QAGC,MAAA,oBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAW,uEAAuE,SAAS,CAAA,CAAA;AAAA,YAC3F,KAAA,EAAO;AAAA,cACN,GAAA,EAAK,SAAA,CAAU,UAAA,CAAW,QAAQ,IAAI,kBAAA,GAAqB,MAAA;AAAA,cAC3D,MAAA,EAAQ,SAAA,CAAU,UAAA,CAAW,KAAK,IAAI,kBAAA,GAAqB,MAAA;AAAA,cAC3D,MAAM,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,IAAK,SAAA,KAAc,WAAW,CAAA,GAAI,MAAA;AAAA,cACjE,KAAA,EAAO,SAAA,CAAU,QAAA,CAAS,OAAO,IAAI,CAAA,GAAI;AAAA,aAC1C;AAAA,YACA,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,YAEjC,QAAA,EAAA;AAAA,cAAA,SAAA,oBAAa,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,cAC9D;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,GAEF;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-BZXMWKD2.js","sourcesContent":["export interface HsbColor {\n\th: number; // 0 ~ 360\n\ts: number; // 0 ~ 100\n\tb: number; // 0 ~ 100\n\ta: number; // 0 ~ 1\n}\n\nexport interface RgbColor {\n\tr: number; // 0 ~ 255\n\tg: number; // 0 ~ 255\n\tb: number; // 0 ~ 255\n\ta: number; // 0 ~ 1\n}\n\nexport interface ColorGradientStop {\n\tcolor: Color;\n\tpercent: number; // 0 ~ 100\n}\n\nexport type ColorInput =\n\t| string\n\t| Color\n\t| { r: number; g: number; b: number; a?: number }\n\t| { h: number; s: number; b: number; a?: number };\n\nexport const parseGradientStops = (gradientStr: string): ColorGradientStop[] => {\n\tlet clean = gradientStr.trim();\n\tif (clean.toLowerCase().startsWith('linear-gradient')) {\n\t\tconst match = clean.match(/linear-gradient\\([^,]+,\\s*(.+)\\)$/i);\n\t\tif (match) {\n\t\t\tclean = match[1];\n\t\t}\n\t}\n\n\t// 匹配颜色 + 百分比,例如 \"rgb(16,142,233) 0%, rgb(135,208,104) 100%\"\n\t// 或 \"#1677ff 0%, #36cfc9 100%\"\n\tconst parts = clean.split(/,\\s*(?=[a-zA-Z#])/);\n\tconst stops: ColorGradientStop[] = [];\n\n\tparts.forEach((part, index) => {\n\t\tconst percentMatch = part.match(/\\s+(\\d+(?:\\.\\d+)?)%\\s*$/);\n\t\tlet percent = index === 0 ? 0 : 100;\n\t\tlet colorStr = part;\n\n\t\tif (percentMatch) {\n\t\t\tpercent = parseFloat(percentMatch[1]);\n\t\t\tcolorStr = part.replace(/\\s+\\d+(?:\\.\\d+)?%\\s*$/, '').trim();\n\t\t}\n\n\t\tstops.push({\n\t\t\tcolor: generateColor(colorStr),\n\t\t\tpercent,\n\t\t});\n\t});\n\n\tif (stops.length === 0) {\n\t\treturn [\n\t\t\t{ color: generateColor('rgb(16,142,233)'), percent: 0 },\n\t\t\t{ color: generateColor('rgb(135,208,104)'), percent: 100 },\n\t\t];\n\t}\n\n\treturn stops;\n};\n\nexport const formatGradientCss = (stops: ColorGradientStop[]): string => {\n\tconst sorted = [...stops].sort((a, b) => a.percent - b.percent);\n\treturn `linear-gradient(90deg, ${sorted.map((s) => `${s.color.toCssString()} ${s.percent}%`).join(', ')})`;\n};\n\nexport const formatGradientText = (stops: ColorGradientStop[]): string => {\n\tconst sorted = [...stops].sort((a, b) => a.percent - b.percent);\n\treturn sorted.map((s) => `${s.color.toCssString()} ${s.percent}%`).join(', ');\n};\n\nexport class Color {\n\th: number = 0; // 0 ~ 360\n\ts: number = 0; // 0 ~ 100\n\tb: number = 0; // 0 ~ 100\n\ta: number = 1; // 0 ~ 1\n\n\tconstructor(colorInput?: ColorInput) {\n\t\tif (!colorInput) {\n\t\t\tthis.h = 215;\n\t\t\tthis.s = 91;\n\t\t\tthis.b = 100;\n\t\t\tthis.a = 1;\n\t\t\treturn;\n\t\t}\n\n\t\tif (colorInput instanceof Color) {\n\t\t\tthis.h = colorInput.h;\n\t\t\tthis.s = colorInput.s;\n\t\t\tthis.b = colorInput.b;\n\t\t\tthis.a = colorInput.a;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof colorInput === 'string') {\n\t\t\tconst parsed = Color.parseString(colorInput);\n\t\t\tthis.h = parsed.h;\n\t\t\tthis.s = parsed.s;\n\t\t\tthis.b = parsed.b;\n\t\t\tthis.a = parsed.a;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof colorInput === 'object') {\n\t\t\tif ('r' in colorInput && 'g' in colorInput && 'b' in colorInput) {\n\t\t\t\tconst hsb = Color.rgbToHsb(colorInput.r, colorInput.g, colorInput.b, colorInput.a ?? 1);\n\t\t\t\tthis.h = hsb.h;\n\t\t\t\tthis.s = hsb.s;\n\t\t\t\tthis.b = hsb.b;\n\t\t\t\tthis.a = hsb.a;\n\t\t\t} else if ('h' in colorInput && 's' in colorInput && 'b' in colorInput) {\n\t\t\t\tthis.h = Math.min(360, Math.max(0, colorInput.h));\n\t\t\t\tthis.s = Math.min(100, Math.max(0, colorInput.s));\n\t\t\t\tthis.b = Math.min(100, Math.max(0, colorInput.b));\n\t\t\t\tthis.a = Math.min(1, Math.max(0, colorInput.a ?? 1));\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic rgbToHsb(r: number, g: number, b: number, a: number = 1): HsbColor {\n\t\tconst rNorm = r / 255;\n\t\tconst gNorm = g / 255;\n\t\tconst bNorm = b / 255;\n\n\t\tconst max = Math.max(rNorm, gNorm, bNorm);\n\t\tconst min = Math.min(rNorm, gNorm, bNorm);\n\t\tconst delta = max - min;\n\n\t\tlet h = 0;\n\t\tif (delta !== 0) {\n\t\t\tif (max === rNorm) {\n\t\t\t\th = ((gNorm - bNorm) / delta) % 6;\n\t\t\t} else if (max === gNorm) {\n\t\t\t\th = (bNorm - rNorm) / delta + 2;\n\t\t\t} else {\n\t\t\t\th = (rNorm - gNorm) / delta + 4;\n\t\t\t}\n\t\t\th = Math.round(h * 60);\n\t\t\tif (h < 0) h += 360;\n\t\t}\n\n\t\tconst s = max === 0 ? 0 : Math.round((delta / max) * 100);\n\t\tconst v = Math.round(max * 100);\n\n\t\treturn { h, s, b: v, a };\n\t}\n\n\tstatic hsbToRgb(h: number, s: number, b: number, a: number = 1): RgbColor {\n\t\tconst sNorm = s / 100;\n\t\tconst vNorm = b / 100;\n\n\t\tconst c = vNorm * sNorm;\n\t\tconst x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n\t\tconst m = vNorm - c;\n\n\t\tlet rPrime = 0;\n\t\tlet gPrime = 0;\n\t\tlet bPrime = 0;\n\n\t\tif (h >= 0 && h < 60) {\n\t\t\trPrime = c;\n\t\t\tgPrime = x;\n\t\t\tbPrime = 0;\n\t\t} else if (h >= 60 && h < 120) {\n\t\t\trPrime = x;\n\t\t\tgPrime = c;\n\t\t\tbPrime = 0;\n\t\t} else if (h >= 120 && h < 180) {\n\t\t\trPrime = 0;\n\t\t\tgPrime = c;\n\t\t\tbPrime = x;\n\t\t} else if (h >= 180 && h < 240) {\n\t\t\trPrime = 0;\n\t\t\tgPrime = x;\n\t\t\tbPrime = c;\n\t\t} else if (h >= 240 && h < 300) {\n\t\t\trPrime = x;\n\t\t\tgPrime = 0;\n\t\t\tbPrime = c;\n\t\t} else if (h >= 300 && h <= 360) {\n\t\t\trPrime = c;\n\t\t\tgPrime = 0;\n\t\t\tbPrime = x;\n\t\t}\n\n\t\tconst r = Math.round((rPrime + m) * 255);\n\t\tconst g = Math.round((gPrime + m) * 255);\n\t\tconst bRes = Math.round((bPrime + m) * 255);\n\n\t\treturn { r, g, b: bRes, a };\n\t}\n\n\tstatic parseString(str: string): HsbColor {\n\t\tconst trimmed = str.trim().toLowerCase();\n\n\t\t// 解析 hex,例如 #1677ff, #fff, #1677ff80\n\t\tif (trimmed.startsWith('#')) {\n\t\t\tlet hex = trimmed.slice(1);\n\t\t\tif (hex.length === 3) {\n\t\t\t\thex = hex\n\t\t\t\t\t.split('')\n\t\t\t\t\t.map((c) => c + c)\n\t\t\t\t\t.join('');\n\t\t\t}\n\t\t\tif (hex.length === 6) {\n\t\t\t\tconst r = parseInt(hex.slice(0, 2), 16);\n\t\t\t\tconst g = parseInt(hex.slice(2, 4), 16);\n\t\t\t\tconst b = parseInt(hex.slice(4, 6), 16);\n\t\t\t\treturn Color.rgbToHsb(r, g, b, 1);\n\t\t\t}\n\t\t\tif (hex.length === 8) {\n\t\t\t\tconst r = parseInt(hex.slice(0, 2), 16);\n\t\t\t\tconst g = parseInt(hex.slice(2, 4), 16);\n\t\t\t\tconst b = parseInt(hex.slice(4, 6), 16);\n\t\t\t\tconst a = parseInt(hex.slice(6, 8), 16) / 255;\n\t\t\t\treturn Color.rgbToHsb(r, g, b, a);\n\t\t\t}\n\t\t}\n\n\t\t// 解析 rgb / rgba\n\t\tconst rgbMatch = trimmed.match(\n\t\t\t/^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/,\n\t\t);\n\t\tif (rgbMatch) {\n\t\t\tconst r = parseInt(rgbMatch[1], 10);\n\t\t\tconst g = parseInt(rgbMatch[2], 10);\n\t\t\tconst b = parseInt(rgbMatch[3], 10);\n\t\t\tconst a = rgbMatch[4] !== undefined ? parseFloat(rgbMatch[4]) : 1;\n\t\t\treturn Color.rgbToHsb(r, g, b, a);\n\t\t}\n\n\t\t// 解析 hsb / hsba / hsl / hsla\n\t\tconst hsbMatch = trimmed.match(\n\t\t\t/^hsba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%?\\s*,\\s*(\\d+)%?(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/,\n\t\t);\n\t\tif (hsbMatch) {\n\t\t\tconst h = parseInt(hsbMatch[1], 10);\n\t\t\tconst s = parseInt(hsbMatch[2], 10);\n\t\t\tconst b = parseInt(hsbMatch[3], 10);\n\t\t\tconst a = hsbMatch[4] !== undefined ? parseFloat(hsbMatch[4]) : 1;\n\t\t\treturn { h, s, b, a };\n\t\t}\n\n\t\t// 默认 fallback (蓝)\n\t\treturn { h: 215, s: 91, b: 100, a: 1 };\n\t}\n\n\ttoRgb(): RgbColor {\n\t\treturn Color.hsbToRgb(this.h, this.s, this.b, this.a);\n\t}\n\n\ttoRgbString(): string {\n\t\tconst { r, g, b, a } = this.toRgb();\n\t\tif (a < 1) {\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${Number(a.toFixed(2))})`;\n\t\t}\n\t\treturn `rgb(${r}, ${g}, ${b})`;\n\t}\n\n\ttoHsb(): HsbColor {\n\t\treturn {\n\t\t\th: Math.round(this.h),\n\t\t\ts: Math.round(this.s),\n\t\t\tb: Math.round(this.b),\n\t\t\ta: Number(this.a.toFixed(2)),\n\t\t};\n\t}\n\n\ttoHsbString(): string {\n\t\tconst { h, s, b, a } = this.toHsb();\n\t\tif (a < 1) {\n\t\t\treturn `hsba(${h}, ${s}%, ${b}%, ${a})`;\n\t\t}\n\t\treturn `hsb(${h}, ${s}%, ${b}%)`;\n\t}\n\n\ttoHex(): string {\n\t\tconst { r, g, b } = this.toRgb();\n\t\tconst rHex = r.toString(16).padStart(2, '0');\n\t\tconst gHex = g.toString(16).padStart(2, '0');\n\t\tconst bHex = b.toString(16).padStart(2, '0');\n\t\treturn `${rHex}${gHex}${bHex}`;\n\t}\n\n\ttoHexString(): string {\n\t\treturn `#${this.toHex()}`;\n\t}\n\n\ttoCssString(): string {\n\t\tif (this.a < 1) {\n\t\t\treturn this.toRgbString();\n\t\t}\n\t\treturn this.toHexString();\n\t}\n}\n\nexport const generateColor = (color: ColorInput): Color => {\n\tif (color instanceof Color) {\n\t\treturn color;\n\t}\n\treturn new Color(color);\n};\n","import {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\ttype ReactNode,\n\ttype HTMLAttributes,\n\ttype FC,\n\ttype Key,\n\ttype MouseEvent as ReactMouseEvent,\n} from 'react';\nimport {\n\tColor,\n\tgenerateColor,\n\ttype ColorInput,\n\ttype HsbColor,\n\ttype RgbColor,\n\ttype ColorGradientStop,\n\tparseGradientStops,\n\tformatGradientCss,\n\tformatGradientText,\n} from './Color';\nimport { CloseCircleFilled, DownOutlined } from '../src/icons';\nimport './index.less';\n\nexport { Color, generateColor };\nexport type { HsbColor, RgbColor, ColorInput, ColorGradientStop };\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsb';\nexport type ColorMode = 'single' | 'gradient';\n\nexport interface ColorPresetItem {\n\tlabel: ReactNode;\n\tcolors: (string | Color)[];\n\tdefaultOpen?: boolean;\n\tkey?: Key;\n}\n\nexport interface ColorPickerProps extends Omit<\n\tHTMLAttributes<HTMLDivElement>,\n\t'onChange' | 'value' | 'defaultValue' | 'children'\n> {\n\tallowClear?: boolean;\n\tarrow?: boolean | { pointAtCenter?: boolean };\n\tchildren?: ReactNode | ((color: Color) => ReactNode);\n\tdefaultValue?: ColorInput;\n\tdefaultFormat?: ColorFormat;\n\tdisabled?: boolean;\n\tdisabledAlpha?: boolean;\n\tdisabledFormat?: boolean;\n\tdestroyOnHidden?: boolean;\n\tformat?: ColorFormat;\n\tmode?: ColorMode | ColorMode[];\n\topen?: boolean;\n\tpresets?: ColorPresetItem[];\n\tplacement?: 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';\n\tpanelRender?: (panel: ReactNode, extra: { components: { Picker: FC; Presets: FC } }) => ReactNode;\n\tshowText?: boolean | ((color: Color | ColorGradientStop[]) => ReactNode);\n\tsize?: 'large' | 'middle' | 'small';\n\ttrigger?: 'hover' | 'click';\n\tvalue?: ColorInput;\n\tonChange?: (value: Color, css: string) => void;\n\tonChangeComplete?: (value: Color) => void;\n\tonFormatChange?: (format: ColorFormat) => void;\n\tonOpenChange?: (open: boolean) => void;\n\tonClear?: () => void;\n}\n\nconst ColorPicker = (props: ColorPickerProps) => {\n\tconst {\n\t\tallowClear = false,\n\t\tarrow = true,\n\t\tchildren,\n\t\tdefaultValue = '#1677ff',\n\t\tdefaultFormat = 'hex',\n\t\tdisabled = false,\n\t\tdisabledAlpha = false,\n\t\tdisabledFormat = false,\n\t\tdestroyOnHidden = false,\n\t\tformat,\n\t\tmode = 'single',\n\t\topen,\n\t\tpresets,\n\t\tplacement = 'bottomLeft',\n\t\tpanelRender,\n\t\tshowText,\n\t\tsize = 'middle',\n\t\ttrigger = 'click',\n\t\tvalue,\n\t\tonChange,\n\t\tonChangeComplete,\n\t\tonFormatChange,\n\t\tonOpenChange,\n\t\tonClear,\n\t\tclassName = '',\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\t// Mode 管理 (single / gradient)\n\tconst modeOptions: ColorMode[] = Array.isArray(mode)\n\t\t? mode\n\t\t: mode === 'gradient'\n\t\t\t? ['gradient']\n\t\t\t: ['single'];\n\tconst [activeMode, setActiveMode] = useState<ColorMode>(modeOptions[0] ?? 'single');\n\n\t// 受控 / 非受控 Open\n\tconst [internalOpen, setInternalOpen] = useState<boolean>(false);\n\tconst isOpen = open !== undefined ? open : internalOpen;\n\n\t// 渐变 Stops 状态\n\tconst [gradientStops, setGradientStops] = useState<ColorGradientStop[]>(() => {\n\t\tif (typeof defaultValue === 'string' && defaultValue.includes('%')) {\n\t\t\treturn parseGradientStops(defaultValue);\n\t\t}\n\t\treturn [\n\t\t\t{ color: generateColor('rgb(16, 142, 233)'), percent: 0 },\n\t\t\t{ color: generateColor('rgb(135, 208, 104)'), percent: 100 },\n\t\t];\n\t});\n\tconst [activeStopIndex, setActiveStopIndex] = useState<number>(0);\n\n\t// 受控 / 非受控 Value\n\tconst [internalColor, setInternalColor] = useState<Color>(() => generateColor(defaultValue));\n\tconst currentColor =\n\t\tactiveMode === 'gradient'\n\t\t\t? (gradientStops[activeStopIndex]?.color ?? internalColor)\n\t\t\t: value !== undefined\n\t\t\t\t? generateColor(value)\n\t\t\t\t: internalColor;\n\n\t// 受控 / 非受控 Format\n\tconst [internalFormat, setInternalFormat] = useState<ColorFormat>(defaultFormat);\n\tconst currentFormat = format !== undefined ? format : internalFormat;\n\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst paletteRef = useRef<HTMLDivElement>(null);\n\tconst hueSliderRef = useRef<HTMLDivElement>(null);\n\tconst alphaSliderRef = useRef<HTMLDivElement>(null);\n\tconst gradientRailRef = useRef<HTMLDivElement>(null);\n\n\tconst isDraggingRef = useRef<boolean>(false);\n\n\tconst handleOpenChange = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tif (disabled) return;\n\t\t\tif (open === undefined) {\n\t\t\t\tsetInternalOpen(nextOpen);\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t},\n\t\t[disabled, open, onOpenChange],\n\t);\n\n\tconst updateColor = useCallback(\n\t\t(nextColor: Color, isComplete = false) => {\n\t\t\tif (activeMode === 'gradient') {\n\t\t\t\tconst nextStops = [...gradientStops];\n\t\t\t\tnextStops[activeStopIndex] = {\n\t\t\t\t\t...nextStops[activeStopIndex],\n\t\t\t\t\tcolor: nextColor,\n\t\t\t\t};\n\t\t\t\tsetGradientStops(nextStops);\n\t\t\t\tconst cssStr = formatGradientCss(nextStops);\n\t\t\t\tonChange?.(nextColor, cssStr);\n\t\t\t\tif (isComplete) {\n\t\t\t\t\tonChangeComplete?.(nextColor);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value === undefined) {\n\t\t\t\tsetInternalColor(nextColor);\n\t\t\t}\n\t\t\tonChange?.(nextColor, nextColor.toCssString());\n\t\t\tif (isComplete) {\n\t\t\t\tonChangeComplete?.(nextColor);\n\t\t\t}\n\t\t},\n\t\t[activeMode, gradientStops, activeStopIndex, value, onChange, onChangeComplete],\n\t);\n\n\tconst currentColorRef = useRef<Color>(currentColor);\n\tcurrentColorRef.current = currentColor;\n\n\tconst updateColorRef = useRef(updateColor);\n\tupdateColorRef.current = updateColor;\n\n\t// 点击外部关闭\n\tuseEffect(() => {\n\t\tif (!isOpen) return;\n\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n\t\t\t\thandleOpenChange(false);\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClickOutside);\n\t\t};\n\t}, [isOpen, handleOpenChange]);\n\n\t// SV 画板拖拽逻辑\n\tconst handlePaletteDrag = useCallback((e: MouseEvent | ReactMouseEvent) => {\n\t\tif (!paletteRef.current) return;\n\t\tconst rect = paletteRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst y = Math.max(0, Math.min(rect.height, e.clientY - rect.top));\n\n\t\tconst s = Math.round((x / rect.width) * 100);\n\t\tconst b = Math.round((1 - y / rect.height) * 100);\n\n\t\tconst curr = currentColorRef.current;\n\t\tconst targetAlpha = curr.a === 0 ? 1 : curr.a;\n\n\t\tconst newColor = new Color({\n\t\t\th: curr.h,\n\t\t\ts,\n\t\t\tb,\n\t\t\ta: targetAlpha,\n\t\t});\n\t\tupdateColorRef.current(newColor);\n\t}, []);\n\n\tconst handlePaletteMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\tisDraggingRef.current = true;\n\t\thandlePaletteDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\tif (isDraggingRef.current) {\n\t\t\t\thandlePaletteDrag(moveEvent);\n\t\t\t}\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tif (isDraggingRef.current) {\n\t\t\t\tisDraggingRef.current = false;\n\t\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\t}\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// Hue 拖拽逻辑\n\tconst handleHueDrag = useCallback((e: MouseEvent | ReactMouseEvent) => {\n\t\tif (!hueSliderRef.current) return;\n\t\tconst rect = hueSliderRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst h = Math.round((x / rect.width) * 360);\n\n\t\tconst curr = currentColorRef.current;\n\t\tconst targetAlpha = curr.a === 0 ? 1 : curr.a;\n\n\t\tconst newColor = new Color({\n\t\t\th: h === 360 ? 0 : h,\n\t\t\ts: curr.s,\n\t\t\tb: curr.b,\n\t\t\ta: targetAlpha,\n\t\t});\n\t\tupdateColorRef.current(newColor);\n\t}, []);\n\n\tconst handleHueMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\thandleHueDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleHueDrag(moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// Alpha 拖拽逻辑\n\tconst handleAlphaDrag = useCallback((e: MouseEvent | ReactMouseEvent) => {\n\t\tif (!alphaSliderRef.current) return;\n\t\tconst rect = alphaSliderRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst a = Number((x / rect.width).toFixed(2));\n\n\t\tconst curr = currentColorRef.current;\n\n\t\tconst newColor = new Color({\n\t\t\th: curr.h,\n\t\t\ts: curr.s,\n\t\t\tb: curr.b,\n\t\t\ta,\n\t\t});\n\t\tupdateColorRef.current(newColor);\n\t}, []);\n\n\tconst handleAlphaMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\thandleAlphaDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleAlphaDrag(moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// 渐变 Stop 拖拽逻辑\n\tconst handleGradientStopDrag = useCallback(\n\t\t(index: number, e: MouseEvent | ReactMouseEvent) => {\n\t\t\tif (!gradientRailRef.current) return;\n\t\t\tconst rect = gradientRailRef.current.getBoundingClientRect();\n\t\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\t\tconst percent = Math.round((x / rect.width) * 100);\n\n\t\t\tconst nextStops = [...gradientStops];\n\t\t\tnextStops[index] = {\n\t\t\t\t...nextStops[index],\n\t\t\t\tpercent,\n\t\t\t};\n\t\t\tsetGradientStops(nextStops);\n\t\t\tonChange?.(nextStops[index].color, formatGradientCss(nextStops));\n\t\t},\n\t\t[gradientStops, onChange],\n\t);\n\n\tconst handleGradientStopMouseDown = (index: number, e: ReactMouseEvent) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tsetActiveStopIndex(index);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleGradientStopDrag(index, moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// 渐变轨空白处点击新增 Stop\n\tconst handleGradientRailClick = (e: ReactMouseEvent) => {\n\t\tif (!gradientRailRef.current) return;\n\t\tconst rect = gradientRailRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst percent = Math.round((x / rect.width) * 100);\n\n\t\tconst newStopColor = generateColor('#1677ff');\n\t\tconst nextStops = [...gradientStops, { color: newStopColor, percent }];\n\t\tsetGradientStops(nextStops);\n\t\tsetActiveStopIndex(nextStops.length - 1);\n\t\tonChange?.(newStopColor, formatGradientCss(nextStops));\n\t};\n\n\t// Format 变化\n\tconst handleFormatSelectChange = (newFormat: ColorFormat) => {\n\t\tif (format === undefined) {\n\t\t\tsetInternalFormat(newFormat);\n\t\t}\n\t\tonFormatChange?.(newFormat);\n\t};\n\n\t// 清除颜色\n\tconst handleClearClick = (e: ReactMouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst cleared = new Color({ h: 0, s: 0, b: 100, a: 0 });\n\t\tupdateColor(cleared, true);\n\t\tonClear?.();\n\t};\n\n\t// 纯 Picker 内容\n\tconst renderPickerContent = () => {\n\t\tconst hueColor = new Color({ h: currentColor.h, s: 100, b: 100, a: 1 }).toHexString();\n\n\t\treturn (\n\t\t\t<div className=\"react-public-color-picker-panel-body\">\n\t\t\t\t{/* 顶部 Header:模式切换与右上角清除按钮 */}\n\t\t\t\t{(modeOptions.length > 1 || (allowClear && !disabled)) && (\n\t\t\t\t\t<div className=\"react-public-color-picker-panel-header\">\n\t\t\t\t\t\t{modeOptions.length > 1 ? (\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-mode-segmented\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-mode-option ${\n\t\t\t\t\t\t\t\t\t\tactiveMode === 'single' ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => setActiveMode('single')}\n\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</div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-mode-option ${\n\t\t\t\t\t\t\t\t\t\tactiveMode === 'gradient' ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => setActiveMode('gradient')}\n\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</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div />\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{allowClear && !disabled && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-panel-clear-btn\"\n\t\t\t\t\t\t\t\tonClick={handleClearClick}\n\t\t\t\t\t\t\t\ttitle=\"清除颜色\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\">\n\t\t\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\t\t\tx1=\"4\"\n\t\t\t\t\t\t\t\t\t\ty1=\"4\"\n\t\t\t\t\t\t\t\t\t\tx2=\"20\"\n\t\t\t\t\t\t\t\t\t\ty2=\"20\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"#ff4d4f\"\n\t\t\t\t\t\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\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\n\t\t\t\t{/* 渐变 Slider Rail */}\n\t\t\t\t{activeMode === 'gradient' && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={gradientRailRef}\n\t\t\t\t\t\tclassName=\"react-public-color-picker-gradient-slider\"\n\t\t\t\t\t\tonClick={handleGradientRailClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-gradient-bg\"\n\t\t\t\t\t\t\tstyle={{ background: formatGradientCss(gradientStops) }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{gradientStops.map((stop, idx) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-gradient-stop-handle ${\n\t\t\t\t\t\t\t\t\tactiveStopIndex === idx ? 'active' : ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tleft: `${stop.percent}%`,\n\t\t\t\t\t\t\t\t\tbackgroundColor: stop.color.toCssString(),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonMouseDown={(e) => handleGradientStopMouseDown(idx, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* SV 调色画布 */}\n\t\t\t\t<div\n\t\t\t\t\tref={paletteRef}\n\t\t\t\t\tclassName=\"react-public-color-picker-palette\"\n\t\t\t\t\tstyle={{ backgroundColor: hueColor }}\n\t\t\t\t\tonMouseDown={handlePaletteMouseDown}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"react-public-color-picker-saturation-bg\" />\n\t\t\t\t\t<div className=\"react-public-color-picker-brightness-bg\" />\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"react-public-color-picker-handler\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${currentColor.s}%`,\n\t\t\t\t\t\t\ttop: `${100 - currentColor.b}%`,\n\t\t\t\t\t\t\tbackgroundColor: currentColor.toCssString(),\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{/* Hue & Alpha 滑块与右侧色块 */}\n\t\t\t\t<div className=\"react-public-color-picker-slider-container\">\n\t\t\t\t\t<div className=\"react-public-color-picker-slider-group\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={hueSliderRef}\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider react-public-color-picker-hue-slider\"\n\t\t\t\t\t\t\tonMouseDown={handleHueMouseDown}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider-handler\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tleft: `${(currentColor.h / 360) * 100}%`,\n\t\t\t\t\t\t\t\t\tbackgroundColor: hueColor,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{!disabledAlpha && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tref={alphaSliderRef}\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider react-public-color-picker-alpha-slider\"\n\t\t\t\t\t\t\t\tonMouseDown={handleAlphaMouseDown}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-alpha-bg\"\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tbackground: `linear-gradient(to right, transparent, ${new Color({\n\t\t\t\t\t\t\t\t\t\t\th: currentColor.h,\n\t\t\t\t\t\t\t\t\t\t\ts: currentColor.s,\n\t\t\t\t\t\t\t\t\t\t\tb: currentColor.b,\n\t\t\t\t\t\t\t\t\t\t\ta: 1,\n\t\t\t\t\t\t\t\t\t\t}).toHexString()})`,\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\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider-handler\"\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tleft: `${currentColor.a * 100}%`,\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: currentColor.toCssString(),\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</div>\n\n\t\t\t\t\t{/* 右侧边栏预览色块 */}\n\t\t\t\t\t<div className=\"react-public-color-picker-side-block\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-color-inner\"\n\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\tactiveMode === 'gradient'\n\t\t\t\t\t\t\t\t\t? { background: formatGradientCss(gradientStops) }\n\t\t\t\t\t\t\t\t\t: { backgroundColor: currentColor.toCssString() }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Format 格式输入行 */}\n\t\t\t\t{!disabledFormat && (\n\t\t\t\t\t<div className=\"react-public-color-picker-inputs\">\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-format-select\"\n\t\t\t\t\t\t\tvalue={currentFormat}\n\t\t\t\t\t\t\tonChange={(e) => handleFormatSelectChange(e.target.value as ColorFormat)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option value=\"hex\">HEX</option>\n\t\t\t\t\t\t\t<option value=\"rgb\">RGB</option>\n\t\t\t\t\t\t\t<option value=\"hsb\">HSB</option>\n\t\t\t\t\t\t</select>\n\n\t\t\t\t\t\t{currentFormat === 'hex' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={currentColor.toHex()}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst val = e.target.value;\n\t\t\t\t\t\t\t\t\tconst newC = new Color(`#${val}`);\n\t\t\t\t\t\t\t\t\tnewC.a = currentColor.a;\n\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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\n\t\t\t\t\t\t{currentFormat === 'rgb' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={`${currentColor.toRgb().r}, ${currentColor.toRgb().g}, ${currentColor.toRgb().b}`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst parts = e.target.value.split(',').map((v) => parseInt(v.trim(), 10));\n\t\t\t\t\t\t\t\t\tif (parts.length >= 3 && !parts.some((n) => isNaN(n))) {\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\tr: parts[0],\n\t\t\t\t\t\t\t\t\t\t\tg: parts[1],\n\t\t\t\t\t\t\t\t\t\t\tb: parts[2],\n\t\t\t\t\t\t\t\t\t\t\ta: currentColor.a,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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)}\n\n\t\t\t\t\t\t{currentFormat === 'hsb' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={`${currentColor.h}°, ${currentColor.s}%, ${currentColor.b}%`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst parts = e.target.value\n\t\t\t\t\t\t\t\t\t\t.replace(/[%°]/g, '')\n\t\t\t\t\t\t\t\t\t\t.split(',')\n\t\t\t\t\t\t\t\t\t\t.map((v) => parseInt(v.trim(), 10));\n\t\t\t\t\t\t\t\t\tif (parts.length >= 3 && !parts.some((n) => isNaN(n))) {\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\th: parts[0],\n\t\t\t\t\t\t\t\t\t\t\ts: parts[1],\n\t\t\t\t\t\t\t\t\t\t\tb: parts[2],\n\t\t\t\t\t\t\t\t\t\t\ta: currentColor.a,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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)}\n\n\t\t\t\t\t\t{!disabledAlpha && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-alpha-input\"\n\t\t\t\t\t\t\t\tvalue={`${Math.round(currentColor.a * 100)}%`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst val = parseInt(e.target.value.replace('%', ''), 10);\n\t\t\t\t\t\t\t\t\tif (!isNaN(val)) {\n\t\t\t\t\t\t\t\t\t\tconst newA = Math.max(0, Math.min(1, val / 100));\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\th: currentColor.h,\n\t\t\t\t\t\t\t\t\t\t\ts: currentColor.s,\n\t\t\t\t\t\t\t\t\t\t\tb: currentColor.b,\n\t\t\t\t\t\t\t\t\t\t\ta: newA,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\t// Presets 折叠状态\n\tconst [collapsedPresets, setCollapsedPresets] = useState<Record<number, boolean>>({});\n\n\tconst togglePresetCollapse = (idx: number) => {\n\t\tsetCollapsedPresets((prev) => ({\n\t\t\t...prev,\n\t\t\t[idx]: !prev[idx],\n\t\t}));\n\t};\n\n\t// 纯 Presets 内容\n\tconst renderPresetsContent = (isStandalone = false) => {\n\t\tif (!presets || presets.length === 0) return null;\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={`react-public-color-picker-presets ${\n\t\t\t\t\tisStandalone ? 'react-public-color-picker-presets-standalone' : ''\n\t\t\t\t}`}\n\t\t\t>\n\t\t\t\t{presets.map((preset, idx) => {\n\t\t\t\t\tconst isCollapsed = collapsedPresets[idx] ?? preset.defaultOpen === false;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={preset.key ?? idx} style={{ marginBottom: 8 }}>\n\t\t\t\t\t\t\t{preset.label && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-title\"\n\t\t\t\t\t\t\t\t\tonClick={() => togglePresetCollapse(idx)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<DownOutlined\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 10,\n\t\t\t\t\t\t\t\t\t\t\tcolor: '#8c8c8c',\n\t\t\t\t\t\t\t\t\t\t\ttransition: 'transform 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\ttransform: isCollapsed ? 'rotate(-90deg)' : 'rotate(0deg)',\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\t{preset.label}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!isCollapsed && (\n\t\t\t\t\t\t\t\t<div className=\"react-public-color-picker-preset-colors\">\n\t\t\t\t\t\t\t\t\t{preset.colors.map((c, colorIdx) => {\n\t\t\t\t\t\t\t\t\t\tconst presetColor = generateColor(c);\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey={colorIdx}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-item\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => updateColor(presetColor, true)}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={presetColor.toCssString()}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-item-inner\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: presetColor.toCssString() }}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</div>\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</div>\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})}\n\t\t\t</div>\n\t\t);\n\t};\n\n\t// 完整的 Popover Panel\n\tconst defaultPanel = (\n\t\t<div>\n\t\t\t{renderPickerContent()}\n\t\t\t{renderPresetsContent(true)}\n\t\t</div>\n\t);\n\n\tconst finalPanel = panelRender\n\t\t? panelRender(defaultPanel, {\n\t\t\t\tcomponents: {\n\t\t\t\t\tPicker: renderPickerContent,\n\t\t\t\t\tPresets: () => renderPresetsContent(false),\n\t\t\t\t},\n\t\t\t})\n\t\t: defaultPanel;\n\n\t// 触发器背景与文本计算\n\tconst triggerBgStyle =\n\t\tactiveMode === 'gradient'\n\t\t\t? { background: formatGradientCss(gradientStops) }\n\t\t\t: { backgroundColor: currentColor.toCssString() };\n\n\tconst renderText = () => {\n\t\tif (!showText) return null;\n\t\tif (typeof showText === 'function') {\n\t\t\treturn showText(activeMode === 'gradient' ? gradientStops : currentColor);\n\t\t}\n\t\tconst textContent =\n\t\t\tactiveMode === 'gradient' ? formatGradientText(gradientStops) : currentColor.toCssString();\n\t\treturn <span style={{ fontSize: 13, color: '#595959' }}>{textContent}</span>;\n\t};\n\n\tconst renderCustomTrigger = () => {\n\t\tif (!children) return null;\n\t\tif (typeof children === 'function') {\n\t\t\treturn children(currentColor);\n\t\t}\n\t\treturn children;\n\t};\n\n\t// 事件监听 (hover / click)\n\tconst triggerProps = {\n\t\tonClick: () => {\n\t\t\tif (trigger === 'click') {\n\t\t\t\thandleOpenChange(!isOpen);\n\t\t\t}\n\t\t},\n\t\tonMouseEnter: () => {\n\t\t\tif (trigger === 'hover') {\n\t\t\t\thandleOpenChange(true);\n\t\t\t}\n\t\t},\n\t\tonMouseLeave: () => {\n\t\t\tif (trigger === 'hover') {\n\t\t\t\thandleOpenChange(false);\n\t\t\t}\n\t\t},\n\t};\n\n\tconst showArrow = typeof arrow === 'boolean' ? arrow : (arrow?.pointAtCenter ?? true);\n\n\tif (destroyOnHidden && !isOpen) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={`react-public-color-picker-trigger react-public-color-picker-size-${size} ${\n\t\t\t\t\tdisabled ? 'react-public-color-picker-disabled' : ''\n\t\t\t\t} ${className}`.trim()}\n\t\t\t\tstyle={style}\n\t\t\t\t{...triggerProps}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children ? (\n\t\t\t\t\trenderCustomTrigger()\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"react-public-color-picker-color-block\">\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-color-inner\" style={triggerBgStyle} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{renderText()}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tstyle={{ position: 'relative', display: 'inline-block' }}\n\t\t\t{...triggerProps}\n\t\t>\n\t\t\t{/* 触发器 */}\n\t\t\t<div\n\t\t\t\tclassName={`react-public-color-picker-trigger react-public-color-picker-size-${size} ${\n\t\t\t\t\tdisabled ? 'react-public-color-picker-disabled' : ''\n\t\t\t\t} ${className}`.trim()}\n\t\t\t\tstyle={style}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children ? (\n\t\t\t\t\trenderCustomTrigger()\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"react-public-color-picker-color-block\">\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-color-inner\" style={triggerBgStyle} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{renderText()}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{allowClear && !disabled && (\n\t\t\t\t\t<CloseCircleFilled\n\t\t\t\t\t\tclassName=\"react-public-color-picker-clear-icon\"\n\t\t\t\t\t\tonClick={handleClearClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 弹出面板 */}\n\t\t\t{isOpen && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`react-public-color-picker-popover react-public-color-picker-popover-${placement}`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttop: placement.startsWith('bottom') ? 'calc(100% + 8px)' : undefined,\n\t\t\t\t\t\tbottom: placement.startsWith('top') ? 'calc(100% + 8px)' : undefined,\n\t\t\t\t\t\tleft: placement.endsWith('Left') || placement === 'bottom' ? 0 : undefined,\n\t\t\t\t\t\tright: placement.endsWith('Right') ? 0 : undefined,\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{showArrow && <div className=\"react-public-color-picker-arrow\" />}\n\t\t\t\t\t{finalPanel}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default ColorPicker;\n"]}
|
|
1
|
+
{"version":3,"sources":["../ColorPicker/Color.ts","../ColorPicker/index.tsx"],"names":["_a","_b"],"mappings":";;;;;AAyBO,IAAM,kBAAA,GAAqB,CAAC,WAAA,KAA6C;AAC/E,EAAA,IAAI,KAAA,GAAQ,YAAY,IAAA,EAAK;AAC7B,EAAA,IAAI,KAAA,CAAM,WAAA,EAAY,CAAE,UAAA,CAAW,iBAAiB,CAAA,EAAG;AACtD,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,oCAAoC,CAAA;AAC9D,IAAA,IAAI,KAAA,EAAO;AACV,MAAA,KAAA,GAAQ,MAAM,CAAC,CAAA;AAAA,IAChB;AAAA,EACD;AAIA,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,mBAAmB,CAAA;AAC7C,EAAA,MAAM,QAA6B,EAAC;AAEpC,EAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAA,KAAU;AAC9B,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,yBAAyB,CAAA;AACzD,IAAA,IAAI,OAAA,GAAU,KAAA,KAAU,CAAA,GAAI,CAAA,GAAI,GAAA;AAChC,IAAA,IAAI,QAAA,GAAW,IAAA;AAEf,IAAA,IAAI,YAAA,EAAc;AACjB,MAAA,OAAA,GAAU,UAAA,CAAW,YAAA,CAAa,CAAC,CAAC,CAAA;AACpC,MAAA,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,uBAAA,EAAyB,EAAE,EAAE,IAAA,EAAK;AAAA,IAC3D;AAEA,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACV,KAAA,EAAO,cAAc,QAAQ,CAAA;AAAA,MAC7B;AAAA,KACA,CAAA;AAAA,EACF,CAAC,CAAA;AAED,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO;AAAA,MACN,EAAE,KAAA,EAAO,aAAA,CAAc,iBAAiB,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACtD,EAAE,KAAA,EAAO,aAAA,CAAc,kBAAkB,CAAA,EAAG,SAAS,GAAA;AAAI,KAC1D;AAAA,EACD;AAEA,EAAA,OAAO,KAAA;AACR,CAAA;AAEO,IAAM,iBAAA,GAAoB,CAAC,KAAA,KAAuC;AACxE,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAO,CAAA;AAC9D,EAAA,OAAO,0BAA0B,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,GAAG,CAAA,CAAE,KAAA,CAAM,WAAA,EAAa,IAAI,CAAA,CAAE,OAAO,GAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AACxG,CAAA;AAEO,IAAM,kBAAA,GAAqB,CAAC,KAAA,KAAuC;AACzE,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAO,CAAA;AAC9D,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,GAAG,CAAA,CAAE,KAAA,CAAM,WAAA,EAAa,IAAI,CAAA,CAAE,OAAO,CAAA,CAAA,CAAG,CAAA,CAAE,KAAK,IAAI,CAAA;AAC7E,CAAA;AAEO,IAAM,KAAA,GAAN,MAAM,MAAA,CAAM;AAAA;AAAA,EAMlB,YAAY,UAAA,EAAyB;AALrC,IAAA,IAAA,CAAA,CAAA,GAAY,CAAA;AACZ;AAAA,IAAA,IAAA,CAAA,CAAA,GAAY,CAAA;AACZ;AAAA,IAAA,IAAA,CAAA,CAAA,GAAY,CAAA;AACZ;AAAA,IAAA,IAAA,CAAA,CAAA,GAAY,CAAA;AA/Eb,IAAA,IAAA,EAAA,EAAA,EAAA;AAkFE,IAAA,IAAI,CAAC,UAAA,EAAY;AAChB,MAAA,IAAA,CAAK,CAAA,GAAI,GAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,GAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,CAAA;AACT,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,sBAAsB,MAAA,EAAO;AAChC,MAAA,IAAA,CAAK,IAAI,UAAA,CAAW,CAAA;AACpB,MAAA,IAAA,CAAK,IAAI,UAAA,CAAW,CAAA;AACpB,MAAA,IAAA,CAAK,IAAI,UAAA,CAAW,CAAA;AACpB,MAAA,IAAA,CAAK,IAAI,UAAA,CAAW,CAAA;AACpB,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AACnC,MAAA,MAAM,MAAA,GAAS,MAAA,CAAM,WAAA,CAAY,UAAU,CAAA;AAC3C,MAAA,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA;AAChB,MAAA,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA;AAChB,MAAA,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA;AAChB,MAAA,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA;AAChB,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AACnC,MAAA,IAAI,GAAA,IAAO,UAAA,IAAc,GAAA,IAAO,UAAA,IAAc,OAAO,UAAA,EAAY;AAChE,QAAA,MAAM,GAAA,GAAM,MAAA,CAAM,QAAA,CAAS,UAAA,CAAW,CAAA,EAAG,UAAA,CAAW,CAAA,EAAG,UAAA,CAAW,CAAA,EAAA,CAAG,EAAA,GAAA,UAAA,CAAW,CAAA,KAAX,IAAA,GAAA,EAAA,GAAgB,CAAC,CAAA;AACtF,QAAA,IAAA,CAAK,IAAI,GAAA,CAAI,CAAA;AACb,QAAA,IAAA,CAAK,IAAI,GAAA,CAAI,CAAA;AACb,QAAA,IAAA,CAAK,IAAI,GAAA,CAAI,CAAA;AACb,QAAA,IAAA,CAAK,IAAI,GAAA,CAAI,CAAA;AAAA,MACd,WAAW,GAAA,IAAO,UAAA,IAAc,GAAA,IAAO,UAAA,IAAc,OAAO,UAAA,EAAY;AACvE,QAAA,IAAA,CAAK,CAAA,GAAI,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAChD,QAAA,IAAA,CAAK,CAAA,GAAI,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAChD,QAAA,IAAA,CAAK,CAAA,GAAI,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAChD,QAAA,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAG,EAAA,GAAA,UAAA,CAAW,CAAA,KAAX,IAAA,GAAA,EAAA,GAAgB,CAAC,CAAC,CAAA;AAAA,MACpD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO,QAAA,CAAS,CAAA,EAAW,CAAA,EAAW,CAAA,EAAW,IAAY,CAAA,EAAa;AACzE,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAClB,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAClB,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAElB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,OAAO,KAAK,CAAA;AACxC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,OAAO,KAAK,CAAA;AACxC,IAAA,MAAM,QAAQ,GAAA,GAAM,GAAA;AAEpB,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,IAAI,UAAU,CAAA,EAAG;AAChB,MAAA,IAAI,QAAQ,KAAA,EAAO;AAClB,QAAA,CAAA,GAAA,CAAM,KAAA,GAAQ,SAAS,KAAA,GAAS,CAAA;AAAA,MACjC,CAAA,MAAA,IAAW,QAAQ,KAAA,EAAO;AACzB,QAAA,CAAA,GAAA,CAAK,KAAA,GAAQ,SAAS,KAAA,GAAQ,CAAA;AAAA,MAC/B,CAAA,MAAO;AACN,QAAA,CAAA,GAAA,CAAK,KAAA,GAAQ,SAAS,KAAA,GAAQ,CAAA;AAAA,MAC/B;AACA,MAAA,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,EAAE,CAAA;AACrB,MAAA,IAAI,CAAA,GAAI,GAAG,CAAA,IAAK,GAAA;AAAA,IACjB;AAEA,IAAA,MAAM,CAAA,GAAI,QAAQ,CAAA,GAAI,CAAA,GAAI,KAAK,KAAA,CAAO,KAAA,GAAQ,MAAO,GAAG,CAAA;AACxD,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,GAAG,CAAA;AAE9B,IAAA,OAAO,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,EACxB;AAAA,EAEA,OAAO,QAAA,CAAS,CAAA,EAAW,CAAA,EAAW,CAAA,EAAW,IAAY,CAAA,EAAa;AACzE,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAClB,IAAA,MAAM,QAAQ,CAAA,GAAI,GAAA;AAElB,IAAA,MAAM,IAAI,KAAA,GAAQ,KAAA;AAClB,IAAA,MAAM,CAAA,GAAI,KAAK,CAAA,GAAI,IAAA,CAAK,IAAM,CAAA,GAAI,EAAA,GAAM,IAAK,CAAC,CAAA,CAAA;AAC9C,IAAA,MAAM,IAAI,KAAA,GAAQ,CAAA;AAElB,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,IAAI,MAAA,GAAS,CAAA;AAEb,IAAA,IAAI,CAAA,IAAK,CAAA,IAAK,CAAA,GAAI,EAAA,EAAI;AACrB,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,EAAA,IAAM,CAAA,GAAI,GAAA,EAAK;AAC9B,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,GAAA,IAAO,CAAA,GAAI,GAAA,EAAK;AAC/B,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,GAAA,IAAO,CAAA,GAAI,GAAA,EAAK;AAC/B,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,GAAA,IAAO,CAAA,GAAI,GAAA,EAAK;AAC/B,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAA,IAAK,GAAA,IAAO,CAAA,IAAK,GAAA,EAAK;AAChC,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACV;AAEA,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAA,CAAO,MAAA,GAAS,KAAK,GAAG,CAAA;AACvC,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAA,CAAO,MAAA,GAAS,KAAK,GAAG,CAAA;AACvC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAA,CAAO,MAAA,GAAS,KAAK,GAAG,CAAA;AAE1C,IAAA,OAAO,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,MAAM,CAAA,EAAE;AAAA,EAC3B;AAAA,EAEA,OAAO,YAAY,GAAA,EAAuB;AACzC,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,IAAA,EAAK,CAAE,WAAA,EAAY;AAGvC,IAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AAC5B,MAAA,IAAI,GAAA,GAAM,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA;AACzB,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACrB,QAAA,GAAA,GAAM,GAAA,CACJ,KAAA,CAAM,EAAE,CAAA,CACR,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA,CAChB,IAAA,CAAK,EAAE,CAAA;AAAA,MACV;AACA,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACrB,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,OAAO,MAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MACjC;AACA,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACrB,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACtC,QAAA,MAAM,CAAA,GAAI,SAAS,GAAA,CAAI,KAAA,CAAM,GAAG,CAAC,CAAA,EAAG,EAAE,CAAA,GAAI,GAAA;AAC1C,QAAA,OAAO,MAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MACjC;AAAA,IACD;AAGA,IAAA,MAAM,WAAW,OAAA,CAAQ,KAAA;AAAA,MACxB;AAAA,KACD;AACA,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,SAAS,CAAC,CAAA,KAAM,SAAY,UAAA,CAAW,QAAA,CAAS,CAAC,CAAC,CAAA,GAAI,CAAA;AAChE,MAAA,OAAO,MAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,IACjC;AAGA,IAAA,MAAM,WAAW,OAAA,CAAQ,KAAA;AAAA,MACxB;AAAA,KACD;AACA,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,CAAC,GAAG,EAAE,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,SAAS,CAAC,CAAA,KAAM,SAAY,UAAA,CAAW,QAAA,CAAS,CAAC,CAAC,CAAA,GAAI,CAAA;AAChE,MAAA,OAAO,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE;AAAA,IACrB;AAGA,IAAA,OAAO,EAAE,GAAG,GAAA,EAAK,CAAA,EAAG,IAAI,CAAA,EAAG,GAAA,EAAK,GAAG,CAAA,EAAE;AAAA,EACtC;AAAA,EAEA,KAAA,GAAkB;AACjB,IAAA,OAAO,MAAA,CAAM,SAAS,IAAA,CAAK,CAAA,EAAG,KAAK,CAAA,EAAG,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA;AAAA,EACrD;AAAA,EAEA,WAAA,GAAsB;AACrB,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE,GAAI,KAAK,KAAA,EAAM;AAClC,IAAA,IAAI,IAAI,CAAA,EAAG;AACV,MAAA,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,IACtD;AACA,IAAA,OAAO,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,EAC5B;AAAA,EAEA,KAAA,GAAkB;AACjB,IAAA,OAAO;AAAA,MACN,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MACpB,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MACpB,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MACpB,GAAG,MAAA,CAAO,IAAA,CAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC;AAAA,KAC5B;AAAA,EACD;AAAA,EAEA,WAAA,GAAsB;AACrB,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE,GAAI,KAAK,KAAA,EAAM;AAClC,IAAA,IAAI,IAAI,CAAA,EAAG;AACV,MAAA,OAAO,QAAQ,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,GAAA,EAAM,CAAC,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,IACrC;AACA,IAAA,OAAO,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,MAAM,CAAC,CAAA,EAAA,CAAA;AAAA,EAC7B;AAAA,EAEA,KAAA,GAAgB;AACf,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE,GAAI,KAAK,KAAA,EAAM;AAC/B,IAAA,MAAM,OAAO,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC3C,IAAA,MAAM,OAAO,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC3C,IAAA,MAAM,OAAO,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC3C,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,IAAI,GAAG,IAAI,CAAA,CAAA;AAAA,EAC7B;AAAA,EAEA,WAAA,GAAsB;AACrB,IAAA,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAA;AAAA,EACxB;AAAA,EAEA,WAAA,GAAsB;AACrB,IAAA,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG;AACf,MAAA,OAAO,KAAK,WAAA,EAAY;AAAA,IACzB;AACA,IAAA,OAAO,KAAK,WAAA,EAAY;AAAA,EACzB;AACD;AAEO,IAAM,aAAA,GAAgB,CAAC,KAAA,KAA6B;AAC1D,EAAA,IAAI,iBAAiB,KAAA,EAAO;AAC3B,IAAA,OAAO,KAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAI,MAAM,KAAK,CAAA;AACvB;AC7OA,IAAM,WAAA,GAAc,CAAC,KAAA,KAA4B;AApEjD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAqEC,EAAA,MAAM;AAAA,IACL,UAAA,GAAa,KAAA;AAAA,IACb,KAAA,GAAQ,IAAA;AAAA,IACR,QAAA;AAAA,IACA,YAAA,GAAe,SAAA;AAAA,IACf,aAAA,GAAgB,KAAA;AAAA,IAChB,QAAA,GAAW,KAAA;AAAA,IACX,aAAA,GAAgB,KAAA;AAAA,IAChB,cAAA,GAAiB,KAAA;AAAA,IACjB,eAAA,GAAkB,KAAA;AAAA,IAClB,MAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,IAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA,GAAY,YAAA;AAAA,IACZ,WAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,OAAA,GAAU,OAAA;AAAA,IACV,KAAA;AAAA,IACA,QAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ,KAAA;AAAA,IACA,GAAG;AAAA,GACJ,GAAI,KAAA;AAGJ,EAAA,MAAM,WAAA,GAA2B,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAChD,IAAA,GACA,IAAA,KAAS,UAAA,GACR,CAAC,UAAU,CAAA,GACX,CAAC,QAAQ,CAAA;AACb,EAAA,MAAM,CAAC,YAAY,aAAa,CAAA,GAAI,UAAoB,EAAA,GAAA,WAAA,CAAY,CAAC,CAAA,KAAb,IAAA,GAAA,EAAA,GAAkB,QAAQ,CAAA;AAGlF,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC/D,EAAA,MAAM,MAAA,GAAS,IAAA,KAAS,MAAA,GAAY,IAAA,GAAO,YAAA;AAG3C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAA8B,MAAM;AAC7E,IAAA,IAAI,OAAO,YAAA,KAAiB,QAAA,IAAY,YAAA,CAAa,QAAA,CAAS,GAAG,CAAA,EAAG;AACnE,MAAA,OAAO,mBAAmB,YAAY,CAAA;AAAA,IACvC;AACA,IAAA,OAAO;AAAA,MACN,EAAE,KAAA,EAAO,aAAA,CAAc,mBAAmB,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACxD,EAAE,KAAA,EAAO,aAAA,CAAc,oBAAoB,CAAA,EAAG,SAAS,GAAA;AAAI,KAC5D;AAAA,EACD,CAAC,CAAA;AACD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAiB,CAAC,CAAA;AAGhE,EAAA,MAAM,CAAC,eAAe,gBAAgB,CAAA,GAAI,SAAgB,MAAM,aAAA,CAAc,YAAY,CAAC,CAAA;AAC3F,EAAA,MAAM,YAAA,GACL,UAAA,KAAe,UAAA,GAAA,CACX,EAAA,GAAA,CAAA,EAAA,GAAA,aAAA,CAAc,eAAe,CAAA,KAA7B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgC,KAAA,KAAhC,IAAA,GAAA,EAAA,GAAyC,aAAA,GAC1C,KAAA,KAAU,MAAA,GACT,aAAA,CAAc,KAAK,CAAA,GACnB,aAAA;AAGL,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAsB,aAAa,CAAA;AAC/E,EAAA,MAAM,aAAA,GAAgB,MAAA,KAAW,MAAA,GAAY,MAAA,GAAS,cAAA;AAEtD,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,cAAA,GAAiB,OAAuB,IAAI,CAAA;AAClD,EAAA,MAAM,eAAA,GAAkB,OAAuB,IAAI,CAAA;AAEnD,EAAA,MAAM,aAAA,GAAgB,OAAgB,KAAK,CAAA;AAE3C,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACxB,CAAC,QAAA,KAAsB;AACtB,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,IAAI,SAAS,MAAA,EAAW;AACvB,QAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,MACzB;AACA,MAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,QAAA,CAAA;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,IAAA,EAAM,YAAY;AAAA,GAC9B;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IACnB,CAAC,SAAA,EAAkB,UAAA,GAAa,KAAA,KAAU;AACzC,MAAA,IAAI,eAAe,UAAA,EAAY;AAC9B,QAAA,MAAM,SAAA,GAAY,CAAC,GAAG,aAAa,CAAA;AACnC,QAAA,SAAA,CAAU,eAAe,CAAA,GAAI;AAAA,UAC5B,GAAG,UAAU,eAAe,CAAA;AAAA,UAC5B,KAAA,EAAO;AAAA,SACR;AACA,QAAA,gBAAA,CAAiB,SAAS,CAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,kBAAkB,SAAS,CAAA;AAC1C,QAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,SAAA,EAAW,MAAA,CAAA;AACtB,QAAA,IAAI,UAAA,EAAY;AACf,UAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,SAAA,CAAA;AAAA,QACpB;AACA,QAAA;AAAA,MACD;AAEA,MAAA,IAAI,UAAU,MAAA,EAAW;AACxB,QAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,MAC3B;AACA,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,SAAA,EAAW,UAAU,WAAA,EAAY,CAAA;AAC5C,MAAA,IAAI,UAAA,EAAY;AACf,QAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,SAAA,CAAA;AAAA,MACpB;AAAA,IACD,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,aAAA,EAAe,eAAA,EAAiB,KAAA,EAAO,UAAU,gBAAgB;AAAA,GAC/E;AAEA,EAAA,MAAM,eAAA,GAAkB,OAAc,YAAY,CAAA;AAClD,EAAA,eAAA,CAAgB,OAAA,GAAU,YAAA;AAE1B,EAAA,MAAM,cAAA,GAAiB,OAAO,WAAW,CAAA;AACzC,EAAA,cAAA,CAAe,OAAA,GAAU,WAAA;AAGzB,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,IAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAkB;AAC7C,MAAA,IAAI,YAAA,CAAa,WAAW,CAAC,YAAA,CAAa,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AAC7E,QAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,MACvB;AAAA,IACD,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,IAAA,OAAO,MAAM;AACZ,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,kBAAkB,CAAA;AAAA,IAC7D,CAAA;AAAA,EACD,CAAA,EAAG,CAAC,MAAA,EAAQ,gBAAgB,CAAC,CAAA;AAG7B,EAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,CAAC,CAAA,KAAoC;AAC1E,IAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACzB,IAAA,MAAM,IAAA,GAAO,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAsB;AACtD,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,GAAG,CAAC,CAAA;AAEjE,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAC3C,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAA,CAAO,IAAI,CAAA,GAAI,IAAA,CAAK,UAAU,GAAG,CAAA;AAEhD,IAAA,MAAM,OAAO,eAAA,CAAgB,OAAA;AAC7B,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,CAAA,KAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA;AAE5C,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM;AAAA,MAC1B,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,CAAA;AAAA,MACA,CAAA;AAAA,MACA,CAAA,EAAG;AAAA,KACH,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,QAAQ,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,sBAAA,GAAyB,CAAC,CAAA,KAAuB;AACtD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,IAAA,iBAAA,CAAkB,CAAC,CAAA;AAEnB,IAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA0B;AAClD,MAAA,IAAI,cAAc,OAAA,EAAS;AAC1B,QAAA,iBAAA,CAAkB,SAAS,CAAA;AAAA,MAC5B;AAAA,IACD,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,IAAI,cAAc,OAAA,EAAS;AAC1B,QAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,QAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,eAAA,CAAgB,OAAA,CAAA;AAAA,MACpC;AACA,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,CAAC,CAAA,KAAoC;AACtE,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,CAAQ,qBAAA,EAAsB;AACxD,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAE3C,IAAA,MAAM,OAAO,eAAA,CAAgB,OAAA;AAC7B,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,CAAA,KAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA;AAE5C,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM;AAAA,MAC1B,CAAA,EAAG,CAAA,KAAM,GAAA,GAAM,CAAA,GAAI,CAAA;AAAA,MACnB,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,CAAA,EAAG;AAAA,KACH,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,QAAQ,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAuB;AAClD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,aAAA,CAAc,CAAC,CAAA;AAEf,IAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA0B;AAClD,MAAA,aAAA,CAAc,SAAS,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,eAAA,CAAgB,OAAA,CAAA;AACnC,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,CAAA,KAAoC;AACxE,IAAA,IAAI,CAAC,eAAe,OAAA,EAAS;AAC7B,IAAA,MAAM,IAAA,GAAO,cAAA,CAAe,OAAA,CAAQ,qBAAA,EAAsB;AAC1D,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,MAAM,IAAI,MAAA,CAAA,CAAQ,CAAA,GAAI,KAAK,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA;AAE5C,IAAA,MAAM,OAAO,eAAA,CAAgB,OAAA;AAE7B,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM;AAAA,MAC1B,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,GAAG,IAAA,CAAK,CAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,QAAQ,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,oBAAA,GAAuB,CAAC,CAAA,KAAuB;AACpD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,eAAA,CAAgB,CAAC,CAAA;AAEjB,IAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA0B;AAClD,MAAA,eAAA,CAAgB,SAAS,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,eAAA,CAAgB,OAAA,CAAA;AACnC,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,sBAAA,GAAyB,WAAA;AAAA,IAC9B,CAAC,OAAe,CAAA,KAAoC;AACnD,MAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC9B,MAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,OAAA,CAAQ,qBAAA,EAAsB;AAC3D,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,MAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAEjD,MAAA,MAAM,SAAA,GAAY,CAAC,GAAG,aAAa,CAAA;AACnC,MAAA,SAAA,CAAU,KAAK,CAAA,GAAI;AAAA,QAClB,GAAG,UAAU,KAAK,CAAA;AAAA,QAClB;AAAA,OACD;AACA,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAC1B,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,SAAA,CAAU,KAAK,CAAA,CAAE,KAAA,EAAO,kBAAkB,SAAS,CAAA,CAAA;AAAA,IAC/D,CAAA;AAAA,IACA,CAAC,eAAe,QAAQ;AAAA,GACzB;AAEA,EAAA,MAAM,2BAAA,GAA8B,CAAC,KAAA,EAAe,CAAA,KAAuB;AAC1E,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,kBAAA,CAAmB,KAAK,CAAA;AAExB,IAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA0B;AAClD,MAAA,sBAAA,CAAuB,OAAO,SAAS,CAAA;AAAA,IACxC,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,uBAAA,GAA0B,CAAC,CAAA,KAAuB;AACvD,IAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC9B,IAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,OAAA,CAAQ,qBAAA,EAAsB;AAC3D,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAEjD,IAAA,MAAM,YAAA,GAAe,cAAc,SAAS,CAAA;AAC5C,IAAA,MAAM,SAAA,GAAY,CAAC,GAAG,aAAA,EAAe,EAAE,KAAA,EAAO,YAAA,EAAc,SAAS,CAAA;AACrE,IAAA,gBAAA,CAAiB,SAAS,CAAA;AAC1B,IAAA,kBAAA,CAAmB,SAAA,CAAU,SAAS,CAAC,CAAA;AACvC,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,YAAA,EAAc,kBAAkB,SAAS,CAAA,CAAA;AAAA,EACrD,CAAA;AAGA,EAAA,MAAM,wBAAA,GAA2B,CAAC,SAAA,KAA2B;AAC5D,IAAA,IAAI,WAAW,MAAA,EAAW;AACzB,MAAA,iBAAA,CAAkB,SAAS,CAAA;AAAA,IAC5B;AACA,IAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAiB,SAAA,CAAA;AAAA,EAClB,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAuB;AAChD,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,MAAM,OAAA,GAAU,IAAI,KAAA,CAAM,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,CAAA,EAAG,CAAA;AACtD,IAAA,WAAA,CAAY,SAAS,IAAI,CAAA;AACzB,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,EAAA;AAAA,EACD,CAAA;AAGA,EAAA,MAAM,sBAAsB,MAAM;AACjC,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM,EAAE,GAAG,YAAA,CAAa,CAAA,EAAG,CAAA,EAAG,GAAA,EAAK,GAAG,GAAA,EAAK,CAAA,EAAG,CAAA,EAAG,EAAE,WAAA,EAAY;AAEpF,IAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EAEZ,QAAA,EAAA;AAAA,MAAA,CAAA,WAAA,CAAY,MAAA,GAAS,KAAM,UAAA,IAAc,CAAC,6BAC3C,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACb,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,MAAA,GAAS,CAAA,mBACrB,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0CAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,SAAA,EAAW,CAAA,sCAAA,EACV,UAAA,KAAe,QAAA,GAAW,WAAW,EACtC,CAAA,CAAA;AAAA,cACA,OAAA,EAAS,MAAM,aAAA,CAAc,QAAQ,CAAA;AAAA,cACrC,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,SAAA,EAAW,CAAA,sCAAA,EACV,UAAA,KAAe,UAAA,GAAa,WAAW,EACxC,CAAA,CAAA;AAAA,cACA,OAAA,EAAS,MAAM,aAAA,CAAc,UAAU,CAAA;AAAA,cACvC,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACD,CAAA,uBAEC,KAAA,EAAA,EAAI,CAAA;AAAA,QAGL,UAAA,IAAc,CAAC,QAAA,oBACf,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,2CAAA;AAAA,YACV,OAAA,EAAS,gBAAA;AAAA,YACT,KAAA,EAAM,0BAAA;AAAA,YAEN,QAAA,kBAAA,GAAA,CAAC,SAAI,OAAA,EAAQ,WAAA,EAAY,OAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,IAAA,EAAK,MAAA,EACpD,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACA,EAAA,EAAG,GAAA;AAAA,gBACH,EAAA,EAAG,GAAA;AAAA,gBACH,EAAA,EAAG,IAAA;AAAA,gBACH,EAAA,EAAG,IAAA;AAAA,gBACH,MAAA,EAAO,SAAA;AAAA,gBACP,WAAA,EAAY,KAAA;AAAA,gBACZ,aAAA,EAAc;AAAA;AAAA,aACf,EACD;AAAA;AAAA;AACD,OAAA,EAEF,CAAA;AAAA,MAIA,eAAe,UAAA,oBACf,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,GAAA,EAAK,eAAA;AAAA,UACL,SAAA,EAAU,2CAAA;AAAA,UACV,OAAA,EAAS,uBAAA;AAAA,UAET,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAU,uCAAA;AAAA,gBACV,KAAA,EAAO,EAAE,UAAA,EAAY,iBAAA,CAAkB,aAAa,CAAA;AAAE;AAAA,aACvD;AAAA,YACC,aAAA,CAAc,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,qBACzB,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEA,SAAA,EAAW,CAAA,+CAAA,EACV,eAAA,KAAoB,GAAA,GAAM,WAAW,EACtC,CAAA,CAAA;AAAA,gBACA,KAAA,EAAO;AAAA,kBACN,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,CAAA;AAAA,kBACrB,eAAA,EAAiB,IAAA,CAAK,KAAA,CAAM,WAAA;AAAY,iBACzC;AAAA,gBACA,WAAA,EAAa,CAAC,CAAA,KAAM,2BAAA,CAA4B,KAAK,CAAC;AAAA,eAAA;AAAA,cARjD;AAAA,aAUN;AAAA;AAAA;AAAA,OACF;AAAA,sBAID,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,GAAA,EAAK,UAAA;AAAA,UACL,SAAA,EAAU,mCAAA;AAAA,UACV,KAAA,EAAO,EAAE,eAAA,EAAiB,QAAA,EAAS;AAAA,UACnC,WAAA,EAAa,sBAAA;AAAA,UAEb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yCAAA,EAA0C,CAAA;AAAA,4BACzD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,4BACzD,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAU,mCAAA;AAAA,gBACV,KAAA,EAAO;AAAA,kBACN,IAAA,EAAM,CAAA,EAAG,YAAA,CAAa,CAAC,CAAA,CAAA,CAAA;AAAA,kBACvB,GAAA,EAAK,CAAA,EAAG,GAAA,GAAM,YAAA,CAAa,CAAC,CAAA,CAAA,CAAA;AAAA,kBAC5B,eAAA,EAAiB,aAAa,WAAA;AAAY;AAC3C;AAAA;AACD;AAAA;AAAA,OACD;AAAA,sBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACd,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,GAAA,EAAK,YAAA;AAAA,cACL,SAAA,EAAU,uEAAA;AAAA,cACV,WAAA,EAAa,kBAAA;AAAA,cAEb,QAAA,kBAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,SAAA,EAAU,0CAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACN,IAAA,EAAM,CAAA,EAAI,YAAA,CAAa,CAAA,GAAI,MAAO,GAAG,CAAA,CAAA,CAAA;AAAA,oBACrC,eAAA,EAAiB;AAAA;AAClB;AAAA;AACD;AAAA,WACD;AAAA,UAEC,CAAC,aAAA,oBACD,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,GAAA,EAAK,cAAA;AAAA,cACL,SAAA,EAAU,yEAAA;AAAA,cACV,WAAA,EAAa,oBAAA;AAAA,cAEb,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAU,oCAAA;AAAA,oBACV,KAAA,EAAO;AAAA,sBACN,UAAA,EAAY,CAAA,uCAAA,EAA0C,IAAI,KAAA,CAAM;AAAA,wBAC/D,GAAG,YAAA,CAAa,CAAA;AAAA,wBAChB,GAAG,YAAA,CAAa,CAAA;AAAA,wBAChB,GAAG,YAAA,CAAa,CAAA;AAAA,wBAChB,CAAA,EAAG;AAAA,uBACH,CAAA,CAAE,WAAA,EAAa,CAAA,CAAA;AAAA;AACjB;AAAA,iBACD;AAAA,gCACA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAU,0CAAA;AAAA,oBACV,KAAA,EAAO;AAAA,sBACN,IAAA,EAAM,CAAA,EAAG,YAAA,CAAa,CAAA,GAAI,GAAG,CAAA,CAAA,CAAA;AAAA,sBAC7B,eAAA,EAAiB,aAAa,WAAA;AAAY;AAC3C;AAAA;AACD;AAAA;AAAA;AACD,SAAA,EAEF,CAAA;AAAA,wBAGA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACd,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,KAAA,EACC,UAAA,KAAe,UAAA,GACZ,EAAE,UAAA,EAAY,iBAAA,CAAkB,aAAa,CAAA,EAAE,GAC/C,EAAE,eAAA,EAAiB,YAAA,CAAa,aAAY;AAAE;AAAA,SAEnD,EACD;AAAA,OAAA,EACD,CAAA;AAAA,MAGC,CAAC,cAAA,oBACD,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kCAAA,EACd,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,yCAAA;AAAA,YACV,KAAA,EAAO,aAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,wBAAA,CAAyB,CAAA,CAAE,OAAO,KAAoB,CAAA;AAAA,YAEvE,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,KAAA,EAAM,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,8BACvB,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,KAAA,EAAM,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,8BACvB,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,KAAA,EAAM,QAAA,EAAA,KAAA,EAAG;AAAA;AAAA;AAAA,SACxB;AAAA,QAEC,kBAAkB,KAAA,oBAClB,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,KAAA,EAAO,aAAa,KAAA,EAAM;AAAA,YAC1B,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,MAAM,GAAA,GAAM,EAAE,MAAA,CAAO,KAAA;AACrB,cAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AAChC,cAAA,IAAA,CAAK,IAAI,YAAA,CAAa,CAAA;AACtB,cAAA,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,YACvB;AAAA;AAAA,SACD;AAAA,QAGA,kBAAkB,KAAA,oBAClB,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,KAAA,EAAO,CAAA,EAAG,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,EAAA,EAAK,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,EAAA,EAAK,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,CAAA;AAAA,YACtF,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,MAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,CAAA,CAAE,IAAA,EAAK,EAAG,EAAE,CAAC,CAAA;AACzE,cAAA,IAAI,KAAA,CAAM,MAAA,IAAU,CAAA,IAAK,CAAC,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG;AACtD,gBAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM;AAAA,kBACtB,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,GAAG,YAAA,CAAa;AAAA,iBAChB,CAAA;AACD,gBAAA,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,cACvB;AAAA,YACD;AAAA;AAAA,SACD;AAAA,QAGA,kBAAkB,KAAA,oBAClB,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,KAAA,EAAO,GAAG,YAAA,CAAa,CAAC,SAAM,YAAA,CAAa,CAAC,CAAA,GAAA,EAAM,YAAA,CAAa,CAAC,CAAA,CAAA,CAAA;AAAA,YAChE,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,MAAM,QAAQ,CAAA,CAAE,MAAA,CAAO,MACrB,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CACnB,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,QAAA,CAAS,EAAE,IAAA,EAAK,EAAG,EAAE,CAAC,CAAA;AACnC,cAAA,IAAI,KAAA,CAAM,MAAA,IAAU,CAAA,IAAK,CAAC,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG;AACtD,gBAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM;AAAA,kBACtB,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,kBACV,GAAG,YAAA,CAAa;AAAA,iBAChB,CAAA;AACD,gBAAA,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,cACvB;AAAA,YACD;AAAA;AAAA,SACD;AAAA,QAGA,CAAC,aAAA,oBACD,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,uCAAA;AAAA,YACV,OAAO,CAAA,EAAG,IAAA,CAAK,MAAM,YAAA,CAAa,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,YAC1C,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,MAAM,GAAA,GAAM,SAAS,CAAA,CAAE,MAAA,CAAO,MAAM,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA,EAAG,EAAE,CAAA;AACxD,cAAA,IAAI,CAAC,KAAA,CAAM,GAAG,CAAA,EAAG;AAChB,gBAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,GAAA,GAAM,GAAG,CAAC,CAAA;AAC/C,gBAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM;AAAA,kBACtB,GAAG,YAAA,CAAa,CAAA;AAAA,kBAChB,GAAG,YAAA,CAAa,CAAA;AAAA,kBAChB,GAAG,YAAA,CAAa,CAAA;AAAA,kBAChB,CAAA,EAAG;AAAA,iBACH,CAAA;AACD,gBAAA,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,cACvB;AAAA,YACD;AAAA;AAAA;AACD,OAAA,EAEF;AAAA,KAAA,EAEF,CAAA;AAAA,EAEF,CAAA;AAGA,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,QAAA,CAAkC,EAAE,CAAA;AAEpF,EAAA,MAAM,oBAAA,GAAuB,CAAC,GAAA,KAAgB;AAC7C,IAAA,mBAAA,CAAoB,CAAC,IAAA,MAAU;AAAA,MAC9B,GAAG,IAAA;AAAA,MACH,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG;AAAA,KACjB,CAAE,CAAA;AAAA,EACH,CAAA;AAGA,EAAA,MAAM,oBAAA,GAAuB,CAAC,YAAA,GAAe,KAAA,KAAU;AACtD,IAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,IAAA;AAC7C,IAAA,uBACC,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAA,EAAW,CAAA,kCAAA,EACV,YAAA,GAAe,8CAAA,GAAiD,EACjE,CAAA,CAAA;AAAA,QAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,GAAA,KAAQ;AAppBlC,UAAA,IAAAA,GAAAA,EAAAC,GAAAA;AAqpBK,UAAA,MAAM,WAAA,GAAA,CAAcD,MAAA,gBAAA,CAAiB,GAAG,MAApB,IAAA,GAAAA,GAAAA,GAAyB,OAAO,WAAA,KAAgB,KAAA;AACpE,UAAA,4BACE,KAAA,EAAA,EAA4B,KAAA,EAAO,EAAE,YAAA,EAAc,GAAE,EACpD,QAAA,EAAA;AAAA,YAAA,MAAA,CAAO,KAAA,oBACP,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAU,wCAAA;AAAA,gBACV,OAAA,EAAS,MAAM,oBAAA,CAAqB,GAAG,CAAA;AAAA,gBAEvC,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,YAAA;AAAA,oBAAA;AAAA,sBACA,KAAA,EAAO;AAAA,wBACN,QAAA,EAAU,EAAA;AAAA,wBACV,KAAA,EAAO,SAAA;AAAA,wBACP,UAAA,EAAY,qBAAA;AAAA,wBACZ,SAAA,EAAW,cAAc,gBAAA,GAAmB;AAAA;AAC7C;AAAA,mBACD;AAAA,kBACC,MAAA,CAAO;AAAA;AAAA;AAAA,aACT;AAAA,YAEA,CAAC,WAAA,oBACD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,QAAA,KAAa;AACnC,cAAA,MAAM,WAAA,GAAc,cAAc,CAAC,CAAA;AACnC,cAAA,uBACC,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEA,SAAA,EAAU,uCAAA;AAAA,kBACV,OAAA,EAAS,MAAM,WAAA,CAAY,WAAA,EAAa,IAAI,CAAA;AAAA,kBAC5C,KAAA,EAAO,YAAY,WAAA,EAAY;AAAA,kBAE/B,QAAA,kBAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACA,SAAA,EAAU,6CAAA;AAAA,sBACV,KAAA,EAAO,EAAE,eAAA,EAAiB,WAAA,CAAY,aAAY;AAAE;AAAA;AACrD,iBAAA;AAAA,gBARK;AAAA,eASN;AAAA,YAEF,CAAC,CAAA,EACF;AAAA,WAAA,EAAA,EAAA,CAnCQC,GAAAA,GAAA,MAAA,CAAO,GAAA,KAAP,IAAA,GAAAA,MAAc,GAqCxB,CAAA;AAAA,QAEF,CAAC;AAAA;AAAA,KACF;AAAA,EAEF,CAAA;AAGA,EAAA,MAAM,YAAA,wBACJ,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,IAAA,mBAAA,EAAoB;AAAA,IACpB,qBAAqB,IAAI;AAAA,GAAA,EAC3B,CAAA;AAGD,EAAA,MAAM,UAAA,GAAa,WAAA,GAChB,WAAA,CAAY,YAAA,EAAc;AAAA,IAC1B,UAAA,EAAY;AAAA,MACX,MAAA,EAAQ,mBAAA;AAAA,MACR,OAAA,EAAS,MAAM,oBAAA,CAAqB,KAAK;AAAA;AAC1C,GACA,CAAA,GACA,YAAA;AAGH,EAAA,MAAM,cAAA,GACL,UAAA,KAAe,UAAA,GACZ,EAAE,UAAA,EAAY,iBAAA,CAAkB,aAAa,CAAA,EAAE,GAC/C,EAAE,eAAA,EAAiB,YAAA,CAAa,aAAY,EAAE;AAElD,EAAA,MAAM,aAAa,MAAM;AACxB,IAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,IAAA,IAAI,OAAO,aAAa,UAAA,EAAY;AACnC,MAAA,OAAO,QAAA,CAAS,UAAA,KAAe,UAAA,GAAa,aAAA,GAAgB,YAAY,CAAA;AAAA,IACzE;AACA,IAAA,MAAM,cACL,UAAA,KAAe,UAAA,GAAa,mBAAmB,aAAa,CAAA,GAAI,aAAa,WAAA,EAAY;AAC1F,IAAA,uBAAO,GAAA,CAAC,UAAK,KAAA,EAAO,EAAE,UAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAU,EAAI,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,EACtE,CAAA;AAEA,EAAA,MAAM,sBAAsB,MAAM;AACjC,IAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,IAAA,IAAI,OAAO,aAAa,UAAA,EAAY;AACnC,MAAA,OAAO,SAAS,YAAY,CAAA;AAAA,IAC7B;AACA,IAAA,OAAO,QAAA;AAAA,EACR,CAAA;AAGA,EAAA,MAAM,YAAA,GAAe;AAAA,IACpB,SAAS,MAAM;AACd,MAAA,IAAI,YAAY,OAAA,EAAS;AACxB,QAAA,gBAAA,CAAiB,CAAC,MAAM,CAAA;AAAA,MACzB;AAAA,IACD,CAAA;AAAA,IACA,cAAc,MAAM;AACnB,MAAA,IAAI,YAAY,OAAA,EAAS;AACxB,QAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,MACtB;AAAA,IACD,CAAA;AAAA,IACA,cAAc,MAAM;AACnB,MAAA,IAAI,YAAY,OAAA,EAAS;AACxB,QAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,MACvB;AAAA,IACD;AAAA,GACD;AAEA,EAAA,MAAM,YAAY,OAAO,KAAA,KAAU,YAAY,KAAA,GAAA,CAAS,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,kBAAP,IAAA,GAAA,EAAA,GAAwB,IAAA;AAEhF,EAAA,IAAI,eAAA,IAAmB,CAAC,MAAA,EAAQ;AAC/B,IAAA,uBACC,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,GAAA,EAAK,YAAA;AAAA,QACL,SAAA,EAAW,CAAA,iEAAA,EAAoE,IAAI,CAAA,CAAA,EAClF,QAAA,GAAW,uCAAuC,EACnD,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,QACrB,KAAA;AAAA,QACC,GAAG,YAAA;AAAA,QACH,GAAG,SAAA;AAAA,QAEH,QAAA,EAAA,QAAA,GACA,mBAAA,EAAoB,mBAEpB,IAAA,CAAA,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uCAAA,EACd,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,uCAAA,EAAwC,KAAA,EAAO,cAAA,EAAgB,CAAA,EAC/E,CAAA;AAAA,UACC,UAAA;AAAW,SAAA,EACb;AAAA;AAAA,KAEF;AAAA,EAEF;AAEA,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,SAAS,cAAA,EAAe;AAAA,MACtD,GAAG,YAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAW,CAAA,iEAAA,EAAoE,IAAI,CAAA,CAAA,EAClF,QAAA,GAAW,uCAAuC,EACnD,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,YACrB,KAAA;AAAA,YACC,GAAG,SAAA;AAAA,YAEH,QAAA,EAAA;AAAA,cAAA,QAAA,GACA,mBAAA,qBAEA,IAAA,CAAA,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uCAAA,EACd,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,uCAAA,EAAwC,KAAA,EAAO,cAAA,EAAgB,CAAA,EAC/E,CAAA;AAAA,gBACC,UAAA;AAAW,eAAA,EACb,CAAA;AAAA,cAEA,UAAA,IAAc,CAAC,QAAA,oBACf,GAAA;AAAA,gBAAC,iBAAA;AAAA,gBAAA;AAAA,kBACA,SAAA,EAAU,sCAAA;AAAA,kBACV,OAAA,EAAS;AAAA;AAAA;AACV;AAAA;AAAA,SAEF;AAAA,QAGC,MAAA,oBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAW,uEAAuE,SAAS,CAAA,CAAA;AAAA,YAC3F,KAAA,EAAO;AAAA,cACN,GAAA,EAAK,SAAA,CAAU,UAAA,CAAW,QAAQ,IAAI,kBAAA,GAAqB,MAAA;AAAA,cAC3D,MAAA,EAAQ,SAAA,CAAU,UAAA,CAAW,KAAK,IAAI,kBAAA,GAAqB,MAAA;AAAA,cAC3D,MAAM,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,IAAK,SAAA,KAAc,WAAW,CAAA,GAAI,MAAA;AAAA,cACjE,KAAA,EAAO,SAAA,CAAU,QAAA,CAAS,OAAO,IAAI,CAAA,GAAI;AAAA,aAC1C;AAAA,YACA,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,YAEjC,QAAA,EAAA;AAAA,cAAA,SAAA,oBAAa,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,cAC9D;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,GAEF;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-EDNBPLUS.js","sourcesContent":["export interface HsbColor {\n\th: number; // 0 ~ 360\n\ts: number; // 0 ~ 100\n\tb: number; // 0 ~ 100\n\ta: number; // 0 ~ 1\n}\n\nexport interface RgbColor {\n\tr: number; // 0 ~ 255\n\tg: number; // 0 ~ 255\n\tb: number; // 0 ~ 255\n\ta: number; // 0 ~ 1\n}\n\nexport interface ColorGradientStop {\n\tcolor: Color;\n\tpercent: number; // 0 ~ 100\n}\n\nexport type ColorInput =\n\t| string\n\t| Color\n\t| { r: number; g: number; b: number; a?: number }\n\t| { h: number; s: number; b: number; a?: number };\n\nexport const parseGradientStops = (gradientStr: string): ColorGradientStop[] => {\n\tlet clean = gradientStr.trim();\n\tif (clean.toLowerCase().startsWith('linear-gradient')) {\n\t\tconst match = clean.match(/linear-gradient\\([^,]+,\\s*(.+)\\)$/i);\n\t\tif (match) {\n\t\t\tclean = match[1];\n\t\t}\n\t}\n\n\t// 匹配颜色 + 百分比,例如 \"rgb(16,142,233) 0%, rgb(135,208,104) 100%\"\n\t// 或 \"#1677ff 0%, #36cfc9 100%\"\n\tconst parts = clean.split(/,\\s*(?=[a-zA-Z#])/);\n\tconst stops: ColorGradientStop[] = [];\n\n\tparts.forEach((part, index) => {\n\t\tconst percentMatch = part.match(/\\s+(\\d+(?:\\.\\d+)?)%\\s*$/);\n\t\tlet percent = index === 0 ? 0 : 100;\n\t\tlet colorStr = part;\n\n\t\tif (percentMatch) {\n\t\t\tpercent = parseFloat(percentMatch[1]);\n\t\t\tcolorStr = part.replace(/\\s+\\d+(?:\\.\\d+)?%\\s*$/, '').trim();\n\t\t}\n\n\t\tstops.push({\n\t\t\tcolor: generateColor(colorStr),\n\t\t\tpercent,\n\t\t});\n\t});\n\n\tif (stops.length === 0) {\n\t\treturn [\n\t\t\t{ color: generateColor('rgb(16,142,233)'), percent: 0 },\n\t\t\t{ color: generateColor('rgb(135,208,104)'), percent: 100 },\n\t\t];\n\t}\n\n\treturn stops;\n};\n\nexport const formatGradientCss = (stops: ColorGradientStop[]): string => {\n\tconst sorted = [...stops].sort((a, b) => a.percent - b.percent);\n\treturn `linear-gradient(90deg, ${sorted.map((s) => `${s.color.toCssString()} ${s.percent}%`).join(', ')})`;\n};\n\nexport const formatGradientText = (stops: ColorGradientStop[]): string => {\n\tconst sorted = [...stops].sort((a, b) => a.percent - b.percent);\n\treturn sorted.map((s) => `${s.color.toCssString()} ${s.percent}%`).join(', ');\n};\n\nexport class Color {\n\th: number = 0; // 0 ~ 360\n\ts: number = 0; // 0 ~ 100\n\tb: number = 0; // 0 ~ 100\n\ta: number = 1; // 0 ~ 1\n\n\tconstructor(colorInput?: ColorInput) {\n\t\tif (!colorInput) {\n\t\t\tthis.h = 215;\n\t\t\tthis.s = 91;\n\t\t\tthis.b = 100;\n\t\t\tthis.a = 1;\n\t\t\treturn;\n\t\t}\n\n\t\tif (colorInput instanceof Color) {\n\t\t\tthis.h = colorInput.h;\n\t\t\tthis.s = colorInput.s;\n\t\t\tthis.b = colorInput.b;\n\t\t\tthis.a = colorInput.a;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof colorInput === 'string') {\n\t\t\tconst parsed = Color.parseString(colorInput);\n\t\t\tthis.h = parsed.h;\n\t\t\tthis.s = parsed.s;\n\t\t\tthis.b = parsed.b;\n\t\t\tthis.a = parsed.a;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof colorInput === 'object') {\n\t\t\tif ('r' in colorInput && 'g' in colorInput && 'b' in colorInput) {\n\t\t\t\tconst hsb = Color.rgbToHsb(colorInput.r, colorInput.g, colorInput.b, colorInput.a ?? 1);\n\t\t\t\tthis.h = hsb.h;\n\t\t\t\tthis.s = hsb.s;\n\t\t\t\tthis.b = hsb.b;\n\t\t\t\tthis.a = hsb.a;\n\t\t\t} else if ('h' in colorInput && 's' in colorInput && 'b' in colorInput) {\n\t\t\t\tthis.h = Math.min(360, Math.max(0, colorInput.h));\n\t\t\t\tthis.s = Math.min(100, Math.max(0, colorInput.s));\n\t\t\t\tthis.b = Math.min(100, Math.max(0, colorInput.b));\n\t\t\t\tthis.a = Math.min(1, Math.max(0, colorInput.a ?? 1));\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic rgbToHsb(r: number, g: number, b: number, a: number = 1): HsbColor {\n\t\tconst rNorm = r / 255;\n\t\tconst gNorm = g / 255;\n\t\tconst bNorm = b / 255;\n\n\t\tconst max = Math.max(rNorm, gNorm, bNorm);\n\t\tconst min = Math.min(rNorm, gNorm, bNorm);\n\t\tconst delta = max - min;\n\n\t\tlet h = 0;\n\t\tif (delta !== 0) {\n\t\t\tif (max === rNorm) {\n\t\t\t\th = ((gNorm - bNorm) / delta) % 6;\n\t\t\t} else if (max === gNorm) {\n\t\t\t\th = (bNorm - rNorm) / delta + 2;\n\t\t\t} else {\n\t\t\t\th = (rNorm - gNorm) / delta + 4;\n\t\t\t}\n\t\t\th = Math.round(h * 60);\n\t\t\tif (h < 0) h += 360;\n\t\t}\n\n\t\tconst s = max === 0 ? 0 : Math.round((delta / max) * 100);\n\t\tconst v = Math.round(max * 100);\n\n\t\treturn { h, s, b: v, a };\n\t}\n\n\tstatic hsbToRgb(h: number, s: number, b: number, a: number = 1): RgbColor {\n\t\tconst sNorm = s / 100;\n\t\tconst vNorm = b / 100;\n\n\t\tconst c = vNorm * sNorm;\n\t\tconst x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n\t\tconst m = vNorm - c;\n\n\t\tlet rPrime = 0;\n\t\tlet gPrime = 0;\n\t\tlet bPrime = 0;\n\n\t\tif (h >= 0 && h < 60) {\n\t\t\trPrime = c;\n\t\t\tgPrime = x;\n\t\t\tbPrime = 0;\n\t\t} else if (h >= 60 && h < 120) {\n\t\t\trPrime = x;\n\t\t\tgPrime = c;\n\t\t\tbPrime = 0;\n\t\t} else if (h >= 120 && h < 180) {\n\t\t\trPrime = 0;\n\t\t\tgPrime = c;\n\t\t\tbPrime = x;\n\t\t} else if (h >= 180 && h < 240) {\n\t\t\trPrime = 0;\n\t\t\tgPrime = x;\n\t\t\tbPrime = c;\n\t\t} else if (h >= 240 && h < 300) {\n\t\t\trPrime = x;\n\t\t\tgPrime = 0;\n\t\t\tbPrime = c;\n\t\t} else if (h >= 300 && h <= 360) {\n\t\t\trPrime = c;\n\t\t\tgPrime = 0;\n\t\t\tbPrime = x;\n\t\t}\n\n\t\tconst r = Math.round((rPrime + m) * 255);\n\t\tconst g = Math.round((gPrime + m) * 255);\n\t\tconst bRes = Math.round((bPrime + m) * 255);\n\n\t\treturn { r, g, b: bRes, a };\n\t}\n\n\tstatic parseString(str: string): HsbColor {\n\t\tconst trimmed = str.trim().toLowerCase();\n\n\t\t// 解析 hex,例如 #1677ff, #fff, #1677ff80\n\t\tif (trimmed.startsWith('#')) {\n\t\t\tlet hex = trimmed.slice(1);\n\t\t\tif (hex.length === 3) {\n\t\t\t\thex = hex\n\t\t\t\t\t.split('')\n\t\t\t\t\t.map((c) => c + c)\n\t\t\t\t\t.join('');\n\t\t\t}\n\t\t\tif (hex.length === 6) {\n\t\t\t\tconst r = parseInt(hex.slice(0, 2), 16);\n\t\t\t\tconst g = parseInt(hex.slice(2, 4), 16);\n\t\t\t\tconst b = parseInt(hex.slice(4, 6), 16);\n\t\t\t\treturn Color.rgbToHsb(r, g, b, 1);\n\t\t\t}\n\t\t\tif (hex.length === 8) {\n\t\t\t\tconst r = parseInt(hex.slice(0, 2), 16);\n\t\t\t\tconst g = parseInt(hex.slice(2, 4), 16);\n\t\t\t\tconst b = parseInt(hex.slice(4, 6), 16);\n\t\t\t\tconst a = parseInt(hex.slice(6, 8), 16) / 255;\n\t\t\t\treturn Color.rgbToHsb(r, g, b, a);\n\t\t\t}\n\t\t}\n\n\t\t// 解析 rgb / rgba\n\t\tconst rgbMatch = trimmed.match(\n\t\t\t/^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/,\n\t\t);\n\t\tif (rgbMatch) {\n\t\t\tconst r = parseInt(rgbMatch[1], 10);\n\t\t\tconst g = parseInt(rgbMatch[2], 10);\n\t\t\tconst b = parseInt(rgbMatch[3], 10);\n\t\t\tconst a = rgbMatch[4] !== undefined ? parseFloat(rgbMatch[4]) : 1;\n\t\t\treturn Color.rgbToHsb(r, g, b, a);\n\t\t}\n\n\t\t// 解析 hsb / hsba / hsl / hsla\n\t\tconst hsbMatch = trimmed.match(\n\t\t\t/^hsba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%?\\s*,\\s*(\\d+)%?(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/,\n\t\t);\n\t\tif (hsbMatch) {\n\t\t\tconst h = parseInt(hsbMatch[1], 10);\n\t\t\tconst s = parseInt(hsbMatch[2], 10);\n\t\t\tconst b = parseInt(hsbMatch[3], 10);\n\t\t\tconst a = hsbMatch[4] !== undefined ? parseFloat(hsbMatch[4]) : 1;\n\t\t\treturn { h, s, b, a };\n\t\t}\n\n\t\t// 默认 fallback (蓝)\n\t\treturn { h: 215, s: 91, b: 100, a: 1 };\n\t}\n\n\ttoRgb(): RgbColor {\n\t\treturn Color.hsbToRgb(this.h, this.s, this.b, this.a);\n\t}\n\n\ttoRgbString(): string {\n\t\tconst { r, g, b, a } = this.toRgb();\n\t\tif (a < 1) {\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${Number(a.toFixed(2))})`;\n\t\t}\n\t\treturn `rgb(${r}, ${g}, ${b})`;\n\t}\n\n\ttoHsb(): HsbColor {\n\t\treturn {\n\t\t\th: Math.round(this.h),\n\t\t\ts: Math.round(this.s),\n\t\t\tb: Math.round(this.b),\n\t\t\ta: Number(this.a.toFixed(2)),\n\t\t};\n\t}\n\n\ttoHsbString(): string {\n\t\tconst { h, s, b, a } = this.toHsb();\n\t\tif (a < 1) {\n\t\t\treturn `hsba(${h}, ${s}%, ${b}%, ${a})`;\n\t\t}\n\t\treturn `hsb(${h}, ${s}%, ${b}%)`;\n\t}\n\n\ttoHex(): string {\n\t\tconst { r, g, b } = this.toRgb();\n\t\tconst rHex = r.toString(16).padStart(2, '0');\n\t\tconst gHex = g.toString(16).padStart(2, '0');\n\t\tconst bHex = b.toString(16).padStart(2, '0');\n\t\treturn `${rHex}${gHex}${bHex}`;\n\t}\n\n\ttoHexString(): string {\n\t\treturn `#${this.toHex()}`;\n\t}\n\n\ttoCssString(): string {\n\t\tif (this.a < 1) {\n\t\t\treturn this.toRgbString();\n\t\t}\n\t\treturn this.toHexString();\n\t}\n}\n\nexport const generateColor = (color: ColorInput): Color => {\n\tif (color instanceof Color) {\n\t\treturn color;\n\t}\n\treturn new Color(color);\n};\n","import {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\ttype ReactNode,\n\ttype HTMLAttributes,\n\ttype FC,\n\ttype Key,\n\ttype MouseEvent as ReactMouseEvent,\n} from 'react';\nimport {\n\tColor,\n\tgenerateColor,\n\ttype ColorInput,\n\ttype HsbColor,\n\ttype RgbColor,\n\ttype ColorGradientStop,\n\tparseGradientStops,\n\tformatGradientCss,\n\tformatGradientText,\n} from './Color';\nimport { CloseCircleFilled, DownOutlined } from '../src/icons';\nimport './index.less';\n\nexport { Color, generateColor };\nexport type { HsbColor, RgbColor, ColorInput, ColorGradientStop };\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsb';\nexport type ColorMode = 'single' | 'gradient';\n\nexport interface ColorPresetItem {\n\tlabel: ReactNode;\n\tcolors: (string | Color)[];\n\tdefaultOpen?: boolean;\n\tkey?: Key;\n}\n\nexport interface ColorPickerProps extends Omit<\n\tHTMLAttributes<HTMLDivElement>,\n\t'onChange' | 'value' | 'defaultValue' | 'children'\n> {\n\tallowClear?: boolean;\n\tarrow?: boolean | { pointAtCenter?: boolean };\n\tchildren?: ReactNode | ((color: Color) => ReactNode);\n\tdefaultValue?: ColorInput;\n\tdefaultFormat?: ColorFormat;\n\tdisabled?: boolean;\n\tdisabledAlpha?: boolean;\n\tdisabledFormat?: boolean;\n\tdestroyOnHidden?: boolean;\n\tformat?: ColorFormat;\n\tmode?: ColorMode | ColorMode[];\n\topen?: boolean;\n\tpresets?: ColorPresetItem[];\n\tplacement?: 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';\n\tpanelRender?: (panel: ReactNode, extra: { components: { Picker: FC; Presets: FC } }) => ReactNode;\n\tshowText?: boolean | ((color: Color | ColorGradientStop[]) => ReactNode);\n\tsize?: 'large' | 'middle' | 'small';\n\ttrigger?: 'hover' | 'click';\n\tvalue?: ColorInput;\n\tonChange?: (value: Color, css: string) => void;\n\tonChangeComplete?: (value: Color) => void;\n\tonFormatChange?: (format: ColorFormat) => void;\n\tonOpenChange?: (open: boolean) => void;\n\tonClear?: () => void;\n}\n\nconst ColorPicker = (props: ColorPickerProps) => {\n\tconst {\n\t\tallowClear = false,\n\t\tarrow = true,\n\t\tchildren,\n\t\tdefaultValue = '#1677ff',\n\t\tdefaultFormat = 'hex',\n\t\tdisabled = false,\n\t\tdisabledAlpha = false,\n\t\tdisabledFormat = false,\n\t\tdestroyOnHidden = false,\n\t\tformat,\n\t\tmode = 'single',\n\t\topen,\n\t\tpresets,\n\t\tplacement = 'bottomLeft',\n\t\tpanelRender,\n\t\tshowText,\n\t\tsize = 'middle',\n\t\ttrigger = 'click',\n\t\tvalue,\n\t\tonChange,\n\t\tonChangeComplete,\n\t\tonFormatChange,\n\t\tonOpenChange,\n\t\tonClear,\n\t\tclassName = '',\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\t// Mode 管理 (single / gradient)\n\tconst modeOptions: ColorMode[] = Array.isArray(mode)\n\t\t? mode\n\t\t: mode === 'gradient'\n\t\t\t? ['gradient']\n\t\t\t: ['single'];\n\tconst [activeMode, setActiveMode] = useState<ColorMode>(modeOptions[0] ?? 'single');\n\n\t// 受控 / 非受控 Open\n\tconst [internalOpen, setInternalOpen] = useState<boolean>(false);\n\tconst isOpen = open !== undefined ? open : internalOpen;\n\n\t// 渐变 Stops 状态\n\tconst [gradientStops, setGradientStops] = useState<ColorGradientStop[]>(() => {\n\t\tif (typeof defaultValue === 'string' && defaultValue.includes('%')) {\n\t\t\treturn parseGradientStops(defaultValue);\n\t\t}\n\t\treturn [\n\t\t\t{ color: generateColor('rgb(16, 142, 233)'), percent: 0 },\n\t\t\t{ color: generateColor('rgb(135, 208, 104)'), percent: 100 },\n\t\t];\n\t});\n\tconst [activeStopIndex, setActiveStopIndex] = useState<number>(0);\n\n\t// 受控 / 非受控 Value\n\tconst [internalColor, setInternalColor] = useState<Color>(() => generateColor(defaultValue));\n\tconst currentColor =\n\t\tactiveMode === 'gradient'\n\t\t\t? (gradientStops[activeStopIndex]?.color ?? internalColor)\n\t\t\t: value !== undefined\n\t\t\t\t? generateColor(value)\n\t\t\t\t: internalColor;\n\n\t// 受控 / 非受控 Format\n\tconst [internalFormat, setInternalFormat] = useState<ColorFormat>(defaultFormat);\n\tconst currentFormat = format !== undefined ? format : internalFormat;\n\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst paletteRef = useRef<HTMLDivElement>(null);\n\tconst hueSliderRef = useRef<HTMLDivElement>(null);\n\tconst alphaSliderRef = useRef<HTMLDivElement>(null);\n\tconst gradientRailRef = useRef<HTMLDivElement>(null);\n\n\tconst isDraggingRef = useRef<boolean>(false);\n\n\tconst handleOpenChange = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tif (disabled) return;\n\t\t\tif (open === undefined) {\n\t\t\t\tsetInternalOpen(nextOpen);\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t},\n\t\t[disabled, open, onOpenChange],\n\t);\n\n\tconst updateColor = useCallback(\n\t\t(nextColor: Color, isComplete = false) => {\n\t\t\tif (activeMode === 'gradient') {\n\t\t\t\tconst nextStops = [...gradientStops];\n\t\t\t\tnextStops[activeStopIndex] = {\n\t\t\t\t\t...nextStops[activeStopIndex],\n\t\t\t\t\tcolor: nextColor,\n\t\t\t\t};\n\t\t\t\tsetGradientStops(nextStops);\n\t\t\t\tconst cssStr = formatGradientCss(nextStops);\n\t\t\t\tonChange?.(nextColor, cssStr);\n\t\t\t\tif (isComplete) {\n\t\t\t\t\tonChangeComplete?.(nextColor);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value === undefined) {\n\t\t\t\tsetInternalColor(nextColor);\n\t\t\t}\n\t\t\tonChange?.(nextColor, nextColor.toCssString());\n\t\t\tif (isComplete) {\n\t\t\t\tonChangeComplete?.(nextColor);\n\t\t\t}\n\t\t},\n\t\t[activeMode, gradientStops, activeStopIndex, value, onChange, onChangeComplete],\n\t);\n\n\tconst currentColorRef = useRef<Color>(currentColor);\n\tcurrentColorRef.current = currentColor;\n\n\tconst updateColorRef = useRef(updateColor);\n\tupdateColorRef.current = updateColor;\n\n\t// 点击外部关闭\n\tuseEffect(() => {\n\t\tif (!isOpen) return;\n\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n\t\t\t\thandleOpenChange(false);\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClickOutside);\n\t\t};\n\t}, [isOpen, handleOpenChange]);\n\n\t// SV 画板拖拽逻辑\n\tconst handlePaletteDrag = useCallback((e: MouseEvent | ReactMouseEvent) => {\n\t\tif (!paletteRef.current) return;\n\t\tconst rect = paletteRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst y = Math.max(0, Math.min(rect.height, e.clientY - rect.top));\n\n\t\tconst s = Math.round((x / rect.width) * 100);\n\t\tconst b = Math.round((1 - y / rect.height) * 100);\n\n\t\tconst curr = currentColorRef.current;\n\t\tconst targetAlpha = curr.a === 0 ? 1 : curr.a;\n\n\t\tconst newColor = new Color({\n\t\t\th: curr.h,\n\t\t\ts,\n\t\t\tb,\n\t\t\ta: targetAlpha,\n\t\t});\n\t\tupdateColorRef.current(newColor);\n\t}, []);\n\n\tconst handlePaletteMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\tisDraggingRef.current = true;\n\t\thandlePaletteDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\tif (isDraggingRef.current) {\n\t\t\t\thandlePaletteDrag(moveEvent);\n\t\t\t}\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tif (isDraggingRef.current) {\n\t\t\t\tisDraggingRef.current = false;\n\t\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\t}\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// Hue 拖拽逻辑\n\tconst handleHueDrag = useCallback((e: MouseEvent | ReactMouseEvent) => {\n\t\tif (!hueSliderRef.current) return;\n\t\tconst rect = hueSliderRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst h = Math.round((x / rect.width) * 360);\n\n\t\tconst curr = currentColorRef.current;\n\t\tconst targetAlpha = curr.a === 0 ? 1 : curr.a;\n\n\t\tconst newColor = new Color({\n\t\t\th: h === 360 ? 0 : h,\n\t\t\ts: curr.s,\n\t\t\tb: curr.b,\n\t\t\ta: targetAlpha,\n\t\t});\n\t\tupdateColorRef.current(newColor);\n\t}, []);\n\n\tconst handleHueMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\thandleHueDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleHueDrag(moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// Alpha 拖拽逻辑\n\tconst handleAlphaDrag = useCallback((e: MouseEvent | ReactMouseEvent) => {\n\t\tif (!alphaSliderRef.current) return;\n\t\tconst rect = alphaSliderRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst a = Number((x / rect.width).toFixed(2));\n\n\t\tconst curr = currentColorRef.current;\n\n\t\tconst newColor = new Color({\n\t\t\th: curr.h,\n\t\t\ts: curr.s,\n\t\t\tb: curr.b,\n\t\t\ta,\n\t\t});\n\t\tupdateColorRef.current(newColor);\n\t}, []);\n\n\tconst handleAlphaMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\thandleAlphaDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleAlphaDrag(moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// 渐变 Stop 拖拽逻辑\n\tconst handleGradientStopDrag = useCallback(\n\t\t(index: number, e: MouseEvent | ReactMouseEvent) => {\n\t\t\tif (!gradientRailRef.current) return;\n\t\t\tconst rect = gradientRailRef.current.getBoundingClientRect();\n\t\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\t\tconst percent = Math.round((x / rect.width) * 100);\n\n\t\t\tconst nextStops = [...gradientStops];\n\t\t\tnextStops[index] = {\n\t\t\t\t...nextStops[index],\n\t\t\t\tpercent,\n\t\t\t};\n\t\t\tsetGradientStops(nextStops);\n\t\t\tonChange?.(nextStops[index].color, formatGradientCss(nextStops));\n\t\t},\n\t\t[gradientStops, onChange],\n\t);\n\n\tconst handleGradientStopMouseDown = (index: number, e: ReactMouseEvent) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tsetActiveStopIndex(index);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleGradientStopDrag(index, moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// 渐变轨空白处点击新增 Stop\n\tconst handleGradientRailClick = (e: ReactMouseEvent) => {\n\t\tif (!gradientRailRef.current) return;\n\t\tconst rect = gradientRailRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst percent = Math.round((x / rect.width) * 100);\n\n\t\tconst newStopColor = generateColor('#1677ff');\n\t\tconst nextStops = [...gradientStops, { color: newStopColor, percent }];\n\t\tsetGradientStops(nextStops);\n\t\tsetActiveStopIndex(nextStops.length - 1);\n\t\tonChange?.(newStopColor, formatGradientCss(nextStops));\n\t};\n\n\t// Format 变化\n\tconst handleFormatSelectChange = (newFormat: ColorFormat) => {\n\t\tif (format === undefined) {\n\t\t\tsetInternalFormat(newFormat);\n\t\t}\n\t\tonFormatChange?.(newFormat);\n\t};\n\n\t// 清除颜色\n\tconst handleClearClick = (e: ReactMouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst cleared = new Color({ h: 0, s: 0, b: 100, a: 0 });\n\t\tupdateColor(cleared, true);\n\t\tonClear?.();\n\t};\n\n\t// 纯 Picker 内容\n\tconst renderPickerContent = () => {\n\t\tconst hueColor = new Color({ h: currentColor.h, s: 100, b: 100, a: 1 }).toHexString();\n\n\t\treturn (\n\t\t\t<div className=\"react-public-color-picker-panel-body\">\n\t\t\t\t{/* 顶部 Header:模式切换与右上角清除按钮 */}\n\t\t\t\t{(modeOptions.length > 1 || (allowClear && !disabled)) && (\n\t\t\t\t\t<div className=\"react-public-color-picker-panel-header\">\n\t\t\t\t\t\t{modeOptions.length > 1 ? (\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-mode-segmented\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-mode-option ${\n\t\t\t\t\t\t\t\t\t\tactiveMode === 'single' ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => setActiveMode('single')}\n\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</div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-mode-option ${\n\t\t\t\t\t\t\t\t\t\tactiveMode === 'gradient' ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => setActiveMode('gradient')}\n\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</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div />\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{allowClear && !disabled && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-panel-clear-btn\"\n\t\t\t\t\t\t\t\tonClick={handleClearClick}\n\t\t\t\t\t\t\t\ttitle=\"清除颜色\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\">\n\t\t\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\t\t\tx1=\"4\"\n\t\t\t\t\t\t\t\t\t\ty1=\"4\"\n\t\t\t\t\t\t\t\t\t\tx2=\"20\"\n\t\t\t\t\t\t\t\t\t\ty2=\"20\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"#ff4d4f\"\n\t\t\t\t\t\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\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\n\t\t\t\t{/* 渐变 Slider Rail */}\n\t\t\t\t{activeMode === 'gradient' && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={gradientRailRef}\n\t\t\t\t\t\tclassName=\"react-public-color-picker-gradient-slider\"\n\t\t\t\t\t\tonClick={handleGradientRailClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-gradient-bg\"\n\t\t\t\t\t\t\tstyle={{ background: formatGradientCss(gradientStops) }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{gradientStops.map((stop, idx) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-gradient-stop-handle ${\n\t\t\t\t\t\t\t\t\tactiveStopIndex === idx ? 'active' : ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tleft: `${stop.percent}%`,\n\t\t\t\t\t\t\t\t\tbackgroundColor: stop.color.toCssString(),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonMouseDown={(e) => handleGradientStopMouseDown(idx, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* SV 调色画布 */}\n\t\t\t\t<div\n\t\t\t\t\tref={paletteRef}\n\t\t\t\t\tclassName=\"react-public-color-picker-palette\"\n\t\t\t\t\tstyle={{ backgroundColor: hueColor }}\n\t\t\t\t\tonMouseDown={handlePaletteMouseDown}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"react-public-color-picker-saturation-bg\" />\n\t\t\t\t\t<div className=\"react-public-color-picker-brightness-bg\" />\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"react-public-color-picker-handler\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${currentColor.s}%`,\n\t\t\t\t\t\t\ttop: `${100 - currentColor.b}%`,\n\t\t\t\t\t\t\tbackgroundColor: currentColor.toCssString(),\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{/* Hue & Alpha 滑块与右侧色块 */}\n\t\t\t\t<div className=\"react-public-color-picker-slider-container\">\n\t\t\t\t\t<div className=\"react-public-color-picker-slider-group\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={hueSliderRef}\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider react-public-color-picker-hue-slider\"\n\t\t\t\t\t\t\tonMouseDown={handleHueMouseDown}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider-handler\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tleft: `${(currentColor.h / 360) * 100}%`,\n\t\t\t\t\t\t\t\t\tbackgroundColor: hueColor,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{!disabledAlpha && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tref={alphaSliderRef}\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider react-public-color-picker-alpha-slider\"\n\t\t\t\t\t\t\t\tonMouseDown={handleAlphaMouseDown}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-alpha-bg\"\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tbackground: `linear-gradient(to right, transparent, ${new Color({\n\t\t\t\t\t\t\t\t\t\t\th: currentColor.h,\n\t\t\t\t\t\t\t\t\t\t\ts: currentColor.s,\n\t\t\t\t\t\t\t\t\t\t\tb: currentColor.b,\n\t\t\t\t\t\t\t\t\t\t\ta: 1,\n\t\t\t\t\t\t\t\t\t\t}).toHexString()})`,\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\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider-handler\"\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tleft: `${currentColor.a * 100}%`,\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: currentColor.toCssString(),\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</div>\n\n\t\t\t\t\t{/* 右侧边栏预览色块 */}\n\t\t\t\t\t<div className=\"react-public-color-picker-side-block\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-color-inner\"\n\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\tactiveMode === 'gradient'\n\t\t\t\t\t\t\t\t\t? { background: formatGradientCss(gradientStops) }\n\t\t\t\t\t\t\t\t\t: { backgroundColor: currentColor.toCssString() }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Format 格式输入行 */}\n\t\t\t\t{!disabledFormat && (\n\t\t\t\t\t<div className=\"react-public-color-picker-inputs\">\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-format-select\"\n\t\t\t\t\t\t\tvalue={currentFormat}\n\t\t\t\t\t\t\tonChange={(e) => handleFormatSelectChange(e.target.value as ColorFormat)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option value=\"hex\">HEX</option>\n\t\t\t\t\t\t\t<option value=\"rgb\">RGB</option>\n\t\t\t\t\t\t\t<option value=\"hsb\">HSB</option>\n\t\t\t\t\t\t</select>\n\n\t\t\t\t\t\t{currentFormat === 'hex' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={currentColor.toHex()}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst val = e.target.value;\n\t\t\t\t\t\t\t\t\tconst newC = new Color(`#${val}`);\n\t\t\t\t\t\t\t\t\tnewC.a = currentColor.a;\n\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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\n\t\t\t\t\t\t{currentFormat === 'rgb' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={`${currentColor.toRgb().r}, ${currentColor.toRgb().g}, ${currentColor.toRgb().b}`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst parts = e.target.value.split(',').map((v) => parseInt(v.trim(), 10));\n\t\t\t\t\t\t\t\t\tif (parts.length >= 3 && !parts.some((n) => isNaN(n))) {\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\tr: parts[0],\n\t\t\t\t\t\t\t\t\t\t\tg: parts[1],\n\t\t\t\t\t\t\t\t\t\t\tb: parts[2],\n\t\t\t\t\t\t\t\t\t\t\ta: currentColor.a,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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)}\n\n\t\t\t\t\t\t{currentFormat === 'hsb' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={`${currentColor.h}°, ${currentColor.s}%, ${currentColor.b}%`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst parts = e.target.value\n\t\t\t\t\t\t\t\t\t\t.replace(/[%°]/g, '')\n\t\t\t\t\t\t\t\t\t\t.split(',')\n\t\t\t\t\t\t\t\t\t\t.map((v) => parseInt(v.trim(), 10));\n\t\t\t\t\t\t\t\t\tif (parts.length >= 3 && !parts.some((n) => isNaN(n))) {\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\th: parts[0],\n\t\t\t\t\t\t\t\t\t\t\ts: parts[1],\n\t\t\t\t\t\t\t\t\t\t\tb: parts[2],\n\t\t\t\t\t\t\t\t\t\t\ta: currentColor.a,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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)}\n\n\t\t\t\t\t\t{!disabledAlpha && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-alpha-input\"\n\t\t\t\t\t\t\t\tvalue={`${Math.round(currentColor.a * 100)}%`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst val = parseInt(e.target.value.replace('%', ''), 10);\n\t\t\t\t\t\t\t\t\tif (!isNaN(val)) {\n\t\t\t\t\t\t\t\t\t\tconst newA = Math.max(0, Math.min(1, val / 100));\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\th: currentColor.h,\n\t\t\t\t\t\t\t\t\t\t\ts: currentColor.s,\n\t\t\t\t\t\t\t\t\t\t\tb: currentColor.b,\n\t\t\t\t\t\t\t\t\t\t\ta: newA,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\t// Presets 折叠状态\n\tconst [collapsedPresets, setCollapsedPresets] = useState<Record<number, boolean>>({});\n\n\tconst togglePresetCollapse = (idx: number) => {\n\t\tsetCollapsedPresets((prev) => ({\n\t\t\t...prev,\n\t\t\t[idx]: !prev[idx],\n\t\t}));\n\t};\n\n\t// 纯 Presets 内容\n\tconst renderPresetsContent = (isStandalone = false) => {\n\t\tif (!presets || presets.length === 0) return null;\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={`react-public-color-picker-presets ${\n\t\t\t\t\tisStandalone ? 'react-public-color-picker-presets-standalone' : ''\n\t\t\t\t}`}\n\t\t\t>\n\t\t\t\t{presets.map((preset, idx) => {\n\t\t\t\t\tconst isCollapsed = collapsedPresets[idx] ?? preset.defaultOpen === false;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={preset.key ?? idx} style={{ marginBottom: 8 }}>\n\t\t\t\t\t\t\t{preset.label && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-title\"\n\t\t\t\t\t\t\t\t\tonClick={() => togglePresetCollapse(idx)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<DownOutlined\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 10,\n\t\t\t\t\t\t\t\t\t\t\tcolor: '#8c8c8c',\n\t\t\t\t\t\t\t\t\t\t\ttransition: 'transform 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\ttransform: isCollapsed ? 'rotate(-90deg)' : 'rotate(0deg)',\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\t{preset.label}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!isCollapsed && (\n\t\t\t\t\t\t\t\t<div className=\"react-public-color-picker-preset-colors\">\n\t\t\t\t\t\t\t\t\t{preset.colors.map((c, colorIdx) => {\n\t\t\t\t\t\t\t\t\t\tconst presetColor = generateColor(c);\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey={colorIdx}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-item\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => updateColor(presetColor, true)}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={presetColor.toCssString()}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-item-inner\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: presetColor.toCssString() }}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</div>\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</div>\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})}\n\t\t\t</div>\n\t\t);\n\t};\n\n\t// 完整的 Popover Panel\n\tconst defaultPanel = (\n\t\t<div>\n\t\t\t{renderPickerContent()}\n\t\t\t{renderPresetsContent(true)}\n\t\t</div>\n\t);\n\n\tconst finalPanel = panelRender\n\t\t? panelRender(defaultPanel, {\n\t\t\t\tcomponents: {\n\t\t\t\t\tPicker: renderPickerContent,\n\t\t\t\t\tPresets: () => renderPresetsContent(false),\n\t\t\t\t},\n\t\t\t})\n\t\t: defaultPanel;\n\n\t// 触发器背景与文本计算\n\tconst triggerBgStyle =\n\t\tactiveMode === 'gradient'\n\t\t\t? { background: formatGradientCss(gradientStops) }\n\t\t\t: { backgroundColor: currentColor.toCssString() };\n\n\tconst renderText = () => {\n\t\tif (!showText) return null;\n\t\tif (typeof showText === 'function') {\n\t\t\treturn showText(activeMode === 'gradient' ? gradientStops : currentColor);\n\t\t}\n\t\tconst textContent =\n\t\t\tactiveMode === 'gradient' ? formatGradientText(gradientStops) : currentColor.toCssString();\n\t\treturn <span style={{ fontSize: 13, color: '#595959' }}>{textContent}</span>;\n\t};\n\n\tconst renderCustomTrigger = () => {\n\t\tif (!children) return null;\n\t\tif (typeof children === 'function') {\n\t\t\treturn children(currentColor);\n\t\t}\n\t\treturn children;\n\t};\n\n\t// 事件监听 (hover / click)\n\tconst triggerProps = {\n\t\tonClick: () => {\n\t\t\tif (trigger === 'click') {\n\t\t\t\thandleOpenChange(!isOpen);\n\t\t\t}\n\t\t},\n\t\tonMouseEnter: () => {\n\t\t\tif (trigger === 'hover') {\n\t\t\t\thandleOpenChange(true);\n\t\t\t}\n\t\t},\n\t\tonMouseLeave: () => {\n\t\t\tif (trigger === 'hover') {\n\t\t\t\thandleOpenChange(false);\n\t\t\t}\n\t\t},\n\t};\n\n\tconst showArrow = typeof arrow === 'boolean' ? arrow : (arrow?.pointAtCenter ?? true);\n\n\tif (destroyOnHidden && !isOpen) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={`react-public-color-picker-trigger react-public-color-picker-size-${size} ${\n\t\t\t\t\tdisabled ? 'react-public-color-picker-disabled' : ''\n\t\t\t\t} ${className}`.trim()}\n\t\t\t\tstyle={style}\n\t\t\t\t{...triggerProps}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children ? (\n\t\t\t\t\trenderCustomTrigger()\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"react-public-color-picker-color-block\">\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-color-inner\" style={triggerBgStyle} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{renderText()}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tstyle={{ position: 'relative', display: 'inline-block' }}\n\t\t\t{...triggerProps}\n\t\t>\n\t\t\t{/* 触发器 */}\n\t\t\t<div\n\t\t\t\tclassName={`react-public-color-picker-trigger react-public-color-picker-size-${size} ${\n\t\t\t\t\tdisabled ? 'react-public-color-picker-disabled' : ''\n\t\t\t\t} ${className}`.trim()}\n\t\t\t\tstyle={style}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children ? (\n\t\t\t\t\trenderCustomTrigger()\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"react-public-color-picker-color-block\">\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-color-inner\" style={triggerBgStyle} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{renderText()}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{allowClear && !disabled && (\n\t\t\t\t\t<CloseCircleFilled\n\t\t\t\t\t\tclassName=\"react-public-color-picker-clear-icon\"\n\t\t\t\t\t\tonClick={handleClearClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 弹出面板 */}\n\t\t\t{isOpen && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`react-public-color-picker-popover react-public-color-picker-popover-${placement}`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttop: placement.startsWith('bottom') ? 'calc(100% + 8px)' : undefined,\n\t\t\t\t\t\tbottom: placement.startsWith('top') ? 'calc(100% + 8px)' : undefined,\n\t\t\t\t\t\tleft: placement.endsWith('Left') || placement === 'bottom' ? 0 : undefined,\n\t\t\t\t\t\tright: placement.endsWith('Right') ? 0 : undefined,\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{showArrow && <div className=\"react-public-color-picker-arrow\" />}\n\t\t\t\t\t{finalPanel}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default ColorPicker;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LockOutlined } from './chunk-
|
|
1
|
+
import { LockOutlined } from './chunk-2IDVNTKR.js';
|
|
2
2
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
var DisabledBox = ({
|
|
@@ -39,5 +39,5 @@ var DisabledBox = ({
|
|
|
39
39
|
var DisabledBox_default = DisabledBox;
|
|
40
40
|
|
|
41
41
|
export { DisabledBox_default };
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-EJYTTSW6.js.map
|
|
43
|
+
//# sourceMappingURL=chunk-EJYTTSW6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../DisabledBox/index.tsx"],"names":[],"mappings":";;;AAmBA,IAAM,cAA0C,CAAC;AAAA,EAChD,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,MAAA;AAAA,EACZ,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,UAAU,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY,KAAA;AAG5B,EAAA,IAAI,CAAC,QAAA,EAAU;AACd,IAAA,IAAI,aAAa,KAAA,EAAO;AACvB,MAAA,uBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAsB,KAAA,EACzB,QAAA,EAAA,OAAA,EACF,CAAA;AAAA,IAEF;AACA,IAAA,uCAAU,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,EACnB;AAGA,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAwB;AACnD,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AAAA,IAClB;AAAA,EACD,CAAA;AAEA,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,gDAAgD,SAAS,CAAA,CAAA;AAAA,MACpE,KAAA;AAAA,MACA,cAAA,EAAgB,kBAAA;AAAA,MAEf,QAAA,EAAA;AAAA,QAAA,SAAA,KAAc,MAAA,oBAAU,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,wBACrE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAC7C,SAAA,KAAc,OAAA,oBAAW,GAAA,CAAC,YAAA,EAAA,EAAa,WAAU,mBAAA,EAAoB;AAAA;AAAA;AAAA,GACvE;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../DisabledBox/index.tsx"],"names":[],"mappings":";;;AAmBA,IAAM,cAA0C,CAAC;AAAA,EAChD,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,MAAA;AAAA,EACZ,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,UAAU,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY,KAAA;AAG5B,EAAA,IAAI,CAAC,QAAA,EAAU;AACd,IAAA,IAAI,aAAa,KAAA,EAAO;AACvB,MAAA,uBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAsB,KAAA,EACzB,QAAA,EAAA,OAAA,EACF,CAAA;AAAA,IAEF;AACA,IAAA,uCAAU,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,EACnB;AAGA,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAwB;AACnD,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AAAA,IAClB;AAAA,EACD,CAAA;AAEA,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,gDAAgD,SAAS,CAAA,CAAA;AAAA,MACpE,KAAA;AAAA,MACA,cAAA,EAAgB,kBAAA;AAAA,MAEf,QAAA,EAAA;AAAA,QAAA,SAAA,KAAc,MAAA,oBAAU,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,wBACrE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAC7C,SAAA,KAAc,OAAA,oBAAW,GAAA,CAAC,YAAA,EAAA,EAAa,WAAU,mBAAA,EAAoB;AAAA;AAAA;AAAA,GACvE;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-EJYTTSW6.js","sourcesContent":["import React, { ReactNode, CSSProperties } from 'react';\nimport { LockOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface DisabledBoxProps {\n\t/** 内容节点(优先于 title) */\n\tchildren?: ReactNode;\n\t/** 标题文案(当无 children 时作为内容) */\n\ttitle?: ReactNode;\n\t/** 是否禁用,禁用时显示锁图标 + 文字置灰 + 拦截点击事件 */\n\tdisabled?: boolean;\n\t/** 锁图标对齐方向:'left' 左侧,'right' 右侧,默认为 'left' */\n\ticonAlign?: 'left' | 'right';\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst DisabledBox: React.FC<DisabledBoxProps> = ({\n\ttitle,\n\tchildren,\n\tdisabled = false,\n\ticonAlign = 'left',\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst content = children ?? title;\n\n\t// 未禁用时原样渲染\n\tif (!disabled) {\n\t\tif (className || style) {\n\t\t\treturn (\n\t\t\t\t<div className={className} style={style}>\n\t\t\t\t\t{content}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\treturn <>{content}</>;\n\t}\n\n\t// disabled 时在捕获阶段阻止 click 事件传播\n\tconst handleClickCapture = (e: React.MouseEvent) => {\n\t\tif (disabled) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`disabled_box_container disabled_box_disabled ${className}`}\n\t\t\tstyle={style}\n\t\t\tonClickCapture={handleClickCapture}\n\t\t>\n\t\t\t{iconAlign === 'left' && <LockOutlined className=\"disabled_box_icon\" />}\n\t\t\t<span className=\"disabled_box_title\">{content}</span>\n\t\t\t{iconAlign === 'right' && <LockOutlined className=\"disabled_box_icon\" />}\n\t\t</div>\n\t);\n};\n\nexport default DisabledBox;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
@@ -770,7 +770,7 @@ var ColorPicker = (props) => {
|
|
|
770
770
|
onClick: () => togglePresetCollapse(idx),
|
|
771
771
|
children: [
|
|
772
772
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
773
|
-
|
|
773
|
+
chunkR4V3EJVP_cjs.DownOutlined,
|
|
774
774
|
{
|
|
775
775
|
style: {
|
|
776
776
|
fontSize: 10,
|
|
@@ -887,7 +887,7 @@ var ColorPicker = (props) => {
|
|
|
887
887
|
renderText()
|
|
888
888
|
] }),
|
|
889
889
|
allowClear && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
890
|
-
|
|
890
|
+
chunkR4V3EJVP_cjs.CloseCircleFilled,
|
|
891
891
|
{
|
|
892
892
|
className: "react-public-color-picker-clear-icon",
|
|
893
893
|
onClick: handleClearClick
|
|
@@ -922,5 +922,5 @@ var ColorPicker_default = ColorPicker;
|
|
|
922
922
|
exports.Color = Color;
|
|
923
923
|
exports.ColorPicker_default = ColorPicker_default;
|
|
924
924
|
exports.generateColor = generateColor;
|
|
925
|
-
//# sourceMappingURL=chunk-
|
|
926
|
-
//# sourceMappingURL=chunk-
|
|
925
|
+
//# sourceMappingURL=chunk-EKDJPOA3.cjs.map
|
|
926
|
+
//# sourceMappingURL=chunk-EKDJPOA3.cjs.map
|