@canvas-components/react-list-table 0.3.3 → 0.3.5

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["#style-inject:#style-inject","../src/styles/table-overrides.css","../src/features/context-menu/context-menu-view.tsx","../src/features/search/search-dialog.tsx","../src/features/editor/utils.ts","../src/features/editor/editor-overlay.tsx","../src/features/fixed-popup/fixed-popup-view.tsx","../src/features/filter-panel/filter-panel-view.tsx","../src/features/pagination/pagination-view.tsx","../src/features/popconfirm/popconfirm-view.tsx","../src/features/tooltip/tooltip-view.tsx","../src/features/toolbar/toolbar-icons.tsx","../src/features/toolbar/sortable-list.tsx","../src/features/toolbar/style.css","../src/features/toolbar/table-toolbar.tsx","../src/hooks/use-react-list-table-state.ts","../src/components/build-list-table-options.ts","../src/components/react-list-table.tsx"],"names":["Fragment","useState","useEffect","jsx","ReactModal","jsxs","ReactInput","useRef","ReactSelect","ReactPopup","ReactNumberInput","useMemo","options","width","createPortal"],"mappings":"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","file":"index.js","sourcesContent":["\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\".react-list-table-filter-option {\\n transition: background-color 0.2s ease;\\n}\\n.react-list-table-filter-option:hover {\\n background: #f3f4f6;\\n}\\n.react-list-table-menu-action,\\n.react-list-table-menu-row {\\n transition: background-color 0.2s ease, color 0.2s ease;\\n}\\n.react-list-table-menu-action:hover,\\n.react-list-table-menu-row:hover {\\n background: #f3f4f6 !important;\\n}\\n.react-list-table-custom-selection-copy {\\n transition: background-color 0.2s ease;\\n}\\n.react-list-table-custom-selection-copy:hover {\\n background: #4096ff !important;\\n}\\n.react-list-table-custom-selection-input > .canvas-react-input-number-handler-down {\\n display: none;\\n}\\n.react-list-table-menu-chevron {\\n width: 7px;\\n height: 7px;\\n flex: 0 0 auto;\\n margin-left: 8px;\\n border-top: 1.5px solid #9ca3af;\\n border-right: 1.5px solid #9ca3af;\\n transform: rotate(45deg);\\n transform-origin: center;\\n transition: transform 0.18s ease, border-color 0.18s ease;\\n}\\n.react-list-table-menu-action:hover .react-list-table-menu-chevron,\\n.react-list-table-menu-row:hover .react-list-table-menu-chevron {\\n border-color: #6b7280;\\n transform: rotate(135deg);\\n}\\n.react-list-table-menu-chevron-active {\\n border-color: #6b7280;\\n transform: rotate(135deg);\\n}\\n\")","import {\r\n Fragment,\r\n useEffect,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type ReactNode,\r\n} from \"react\";\r\nimport type {\r\n HeaderContextMenuColumnItem,\r\n HeaderContextMenuConfig,\r\n HeaderContextMenuDensity,\r\n ListTableDataFormat,\r\n ListTableDataFormatType,\r\n ListTableSummaryRoundingMode,\r\n} from \"@canvas-components/list-table\";\r\nimport {\r\n formatDateTimeValue,\r\n isDateTimeFormatPattern,\r\n} from \"@canvas-components/utils/date\";\r\nimport {\r\n formatCustomNumberPattern,\r\n formatNumberValue,\r\n formatPercentValue,\r\n formatScientificValue,\r\n} from \"@canvas-components/utils/number\";\r\nimport {\r\n ReactCheckbox,\r\n ReactInput,\r\n ReactInputNumber,\r\n ReactModal,\r\n ReactPopup,\r\n ReactSelect,\r\n} from \"@canvas-components/react-components\";\r\n\r\nconst CONTEXT_MENU_SURFACE_STYLE: CSSProperties = {\r\n padding: 8,\r\n background: \"#ffffff\",\r\n boxShadow: \"0 8px 24px rgba(15, 23, 42, 0.16)\",\r\n};\r\n\r\nexport function ReactTableContextMenuView(props: {\r\n request: HeaderContextMenuConfig | null;\r\n}) {\r\n const { request } = props;\r\n const [menuOpen, setMenuOpen] = useState(true);\r\n const [moreFormatRequest, setMoreFormatRequest] =\r\n useState<HeaderContextMenuConfig | null>(null);\r\n const [customSelectionRequest, setCustomSelectionRequest] =\r\n useState<HeaderContextMenuConfig | null>(null);\r\n\r\n if (!request) {\r\n return (\r\n <>\r\n {moreFormatRequest ? (\r\n <MoreFormatDialog\r\n request={moreFormatRequest}\r\n onClose={() => setMoreFormatRequest(null)}\r\n />\r\n ) : null}\r\n {customSelectionRequest ? (\r\n <CustomSelectionDialog\r\n request={customSelectionRequest}\r\n onClose={() => {\r\n setCustomSelectionRequest(null);\r\n customSelectionRequest.onClose();\r\n }}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n }\r\n\r\n const surfaceStyle: CSSProperties = {\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n width: 260,\r\n };\r\n\r\n return (\r\n <>\r\n <ReactPopup\r\n open={menuOpen}\r\n anchorRect={{ x: request.x, y: request.y, width: 0, height: 0 }}\r\n minWidth={260}\r\n onOpenChange={(open) => {\r\n setMenuOpen(open);\r\n if (!open && !moreFormatRequest && !customSelectionRequest) {\r\n request.onClose();\r\n }\r\n }}\r\n surfaceStyle={surfaceStyle}\r\n >\r\n <div>\r\n <MenuSubmenu\r\n label=\"复制\"\r\n items={[\r\n {\r\n key: \"copy-cell\",\r\n label: \"复制单元格\",\r\n onClick: request.onCopyCell,\r\n },\r\n {\r\n key: \"copy-column\",\r\n label: \"复制整列\",\r\n onClick: request.onCopyColumn,\r\n },\r\n {\r\n key: \"copy-row-text\",\r\n label: \"复制当前行文本\",\r\n onClick: request.onCopyRowText,\r\n },\r\n {\r\n key: \"copy-row-json\",\r\n label: \"复制当前行 JSON\",\r\n onClick: request.onCopyRowJson,\r\n },\r\n {\r\n key: \"copy-selection\",\r\n label: \"复制选区\",\r\n onClick: request.onCopySelection,\r\n },\r\n ]}\r\n >\r\n <CustomSelectionMenu\r\n request={request}\r\n onOpen={() => {\r\n setCustomSelectionRequest(request);\r\n setMenuOpen(false);\r\n }}\r\n />\r\n </MenuSubmenu>\r\n <MenuAction label=\"查找\" onClick={request.onOpenSearch} />\r\n <MenuSubmenu\r\n label=\"导出\"\r\n items={[\r\n {\r\n key: \"export-txt\",\r\n label: \"导出 TXT\",\r\n onClick: request.onExportTxt,\r\n },\r\n {\r\n key: \"export-csv\",\r\n label: \"导出 CSV\",\r\n onClick: request.onExportCsv,\r\n },\r\n {\r\n key: \"export-xlsx\",\r\n label: \"导出 XLSX\",\r\n onClick: request.onExportXlsx,\r\n },\r\n {\r\n key: \"export-json\",\r\n label: \"导出 JSON\",\r\n onClick: request.onExportJson,\r\n },\r\n ]}\r\n />\r\n <MenuAction\r\n label={request.downloadContentLabel ?? \"\"}\r\n onClick={request.onDownloadContent}\r\n />\r\n <MenuAction\r\n label={request.toggleExpandRowLabel ?? \"\"}\r\n onClick={request.onToggleExpandRow}\r\n />\r\n <MenuAction\r\n label=\"取消全部折叠行\"\r\n onClick={request.onExpandAllCollapsedRows}\r\n />\r\n <MenuAction\r\n label={request.toggleColumnLabel ?? \"\"}\r\n onClick={request.onToggleCurrentColumn}\r\n />\r\n <MenuSubmenu\r\n label=\"自动调整列宽\"\r\n items={[\r\n {\r\n key: \"auto-fit-current\",\r\n label: \"当前列\",\r\n onClick: request.onAutoFitCurrentColumn,\r\n },\r\n {\r\n key: \"auto-fit-all\",\r\n label: \"全部列\",\r\n onClick: request.onAutoFitAllColumns,\r\n },\r\n ]}\r\n />\r\n <MenuAction\r\n label={request.groupingBarVisible ? \"隐藏分组栏\" : \"显示分组栏\"}\r\n onClick={request.onToggleGroupingBar}\r\n />\r\n <MenuAction\r\n label=\"取消全部折叠列\"\r\n onClick={request.onExpandAllCollapsedColumns}\r\n />\r\n <MenuAction\r\n label={request.summaryVisible ? \"隐藏汇总栏\" : \"显示汇总栏\"}\r\n onClick={request.onToggleSummary}\r\n />\r\n <SummaryMenu request={request} />\r\n <AlignmentMenu request={request} />\r\n <DataFormatMenu\r\n request={request}\r\n onOpenMoreFormat={() => {\r\n setMoreFormatRequest(request);\r\n setMenuOpen(false);\r\n }}\r\n />\r\n <MenuSubmenu\r\n label=\"冻结\"\r\n items={[\r\n {\r\n key: \"freeze-top\",\r\n label: \"冻结到顶部\",\r\n onClick: request.onFreezeRowTop,\r\n },\r\n {\r\n key: \"freeze-bottom\",\r\n label: \"冻结到底部\",\r\n onClick: request.onFreezeRowBottom,\r\n },\r\n {\r\n key: \"unfreeze\",\r\n label: \"取消冻结\",\r\n onClick: request.onUnfreezeRow,\r\n },\r\n ]}\r\n />\r\n <MenuSubmenu\r\n label=\"排序\"\r\n items={[\r\n {\r\n key: \"sort-ascend\",\r\n label: \"升序\",\r\n onClick: request.onSortAscend,\r\n },\r\n {\r\n key: \"sort-descend\",\r\n label: \"降序\",\r\n onClick: request.onSortDescend,\r\n },\r\n {\r\n key: \"sort-clear\",\r\n label: \"取消排序\",\r\n onClick: request.onClearSort,\r\n },\r\n ]}\r\n />\r\n <MenuSubmenu\r\n label=\"固定\"\r\n items={[\r\n {\r\n key: \"fix-left\",\r\n label: \"左侧\",\r\n onClick: request.onFixLeft,\r\n },\r\n {\r\n key: \"fix-right\",\r\n label: \"右侧\",\r\n onClick: request.onFixRight,\r\n },\r\n {\r\n key: \"unfix\",\r\n label: \"取消固定\",\r\n onClick: request.onUnfix,\r\n },\r\n ]}\r\n />\r\n <MenuSubmenu\r\n label=\"重置\"\r\n items={[\r\n {\r\n key: \"reset-filter\",\r\n label: \"重置筛选\",\r\n onClick: request.onResetFilter,\r\n },\r\n {\r\n key: \"reset-sort\",\r\n label: \"重置排序\",\r\n onClick: request.onResetSort,\r\n },\r\n {\r\n key: \"reset-header\",\r\n label: \"重置表头配置\",\r\n onClick: request.onResetHeader,\r\n },\r\n {\r\n key: \"reset-grouping\",\r\n label: \"重置分组\",\r\n onClick: request.onResetGrouping,\r\n },\r\n {\r\n key: \"reset-summary\",\r\n label: \"重置汇总\",\r\n onClick: request.onResetSummary,\r\n },\r\n {\r\n key: \"reset-alignment\",\r\n label: \"重置对齐\",\r\n onClick: request.onResetAlignment,\r\n },\r\n {\r\n key: \"reset-data-format\",\r\n label: \"重置格式\",\r\n onClick: request.onResetDataFormat,\r\n },\r\n ]}\r\n />\r\n <DensityMenu\r\n value={request.density ?? \"middle\"}\r\n onChange={request.onChangeDensity}\r\n />\r\n <ZoomMenu value={request.zoom ?? 1} onChange={request.onChangeZoom} />\r\n {request.columns?.length && request.onToggleColumn ? (\r\n <>\r\n <MenuDivider />\r\n <ColumnVisibilityMenu\r\n columns={request.columns}\r\n onToggle={request.onToggleColumn}\r\n />\r\n </>\r\n ) : null}\r\n </div>\r\n </ReactPopup>\r\n {moreFormatRequest ? (\r\n <MoreFormatDialog\r\n request={moreFormatRequest}\r\n onClose={() => {\r\n setMoreFormatRequest(null);\r\n request.onClose();\r\n }}\r\n />\r\n ) : null}\r\n {customSelectionRequest ? (\r\n <CustomSelectionDialog\r\n request={customSelectionRequest}\r\n onClose={() => {\r\n setCustomSelectionRequest(null);\r\n customSelectionRequest.onClose();\r\n }}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n\r\nfunction MenuAction(props: {\r\n label: string;\r\n preview?: string;\r\n onClick?: () => void;\r\n selected?: boolean;\r\n disabled?: boolean;\r\n reserveSelectionIcon?: boolean;\r\n}) {\r\n const { label, preview, onClick, selected, disabled, reserveSelectionIcon } =\r\n props;\r\n if (!onClick && !disabled) {\r\n return null;\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={disabled ? undefined : onClick}\r\n disabled={disabled}\r\n className=\"react-list-table-menu-action\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n height: 32,\r\n padding: \"0 10px\",\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: \"transparent\",\r\n color: disabled ? \"#9ca3af\" : \"#374151\",\r\n textAlign: \"left\",\r\n cursor: disabled ? \"default\" : \"pointer\",\r\n }}\r\n >\r\n {reserveSelectionIcon ? (\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n width: 16,\r\n flex: \"0 0 16px\",\r\n marginRight: 6,\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {selected ? \"✓\" : \"\"}\r\n </span>\r\n ) : null}\r\n <span style={{ flex: 1, whiteSpace: \"nowrap\" }}>{label}</span>\r\n {preview ? (\r\n <span\r\n style={{ marginLeft: 16, color: \"#9ca3af\", whiteSpace: \"nowrap\" }}\r\n >\r\n {preview}\r\n </span>\r\n ) : null}\r\n </button>\r\n );\r\n}\r\n\r\ninterface MenuSubmenuItem {\r\n key: string;\r\n label: string;\r\n preview?: string;\r\n selected?: boolean;\r\n disabled?: boolean;\r\n separatorBefore?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nfunction MenuSubmenu(props: {\r\n label: string;\r\n items: MenuSubmenuItem[];\r\n footer?: ReactNode;\r\n children?: ReactNode;\r\n minWidth?: number;\r\n}) {\r\n const { label, items, footer, children, minWidth = 220 } = props;\r\n const menuItems = items.filter((item) => item.onClick || item.disabled);\r\n const reserveSelectionIcon = menuItems.some(\r\n (item) => typeof item.selected === \"boolean\",\r\n );\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const closeTimerRef = useRef<number | null>(null);\r\n\r\n if (!menuItems.length && !footer && !children) {\r\n return null;\r\n }\r\n\r\n const clearCloseTimer = () => {\r\n if (closeTimerRef.current != null) {\r\n window.clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = null;\r\n }\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearCloseTimer();\r\n closeTimerRef.current = window.setTimeout(() => {\r\n setOpen(false);\r\n closeTimerRef.current = null;\r\n }, 120);\r\n };\r\n\r\n return (\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n setOpen(true);\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n <button\r\n ref={triggerRef}\r\n type=\"button\"\r\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n height: 32,\r\n padding: \"0 10px\",\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: \"transparent\",\r\n color: \"#374151\",\r\n textAlign: \"left\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <span>{label}</span>\r\n <span\r\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\r\n aria-hidden=\"true\"\r\n />\r\n </button>\r\n <ReactPopup\r\n open={open}\r\n anchorRef={triggerRef}\r\n placement=\"rightTop\"\r\n offset={2}\r\n minWidth={minWidth}\r\n onOpenChange={setOpen}\r\n surfaceStyle={{\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n width: minWidth,\r\n }}\r\n >\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n {menuItems.map((item) => (\r\n <Fragment key={item.key}>\r\n {item.separatorBefore ? <MenuDivider /> : null}\r\n <MenuAction\r\n label={item.label}\r\n preview={item.preview}\r\n onClick={item.onClick}\r\n selected={item.selected}\r\n disabled={item.disabled}\r\n reserveSelectionIcon={reserveSelectionIcon}\r\n />\r\n </Fragment>\r\n ))}\r\n {children}\r\n {footer}\r\n </div>\r\n </ReactPopup>\r\n </div>\r\n );\r\n}\r\n\r\nfunction DensityMenu(props: {\r\n value: HeaderContextMenuDensity;\r\n onChange?: (density: HeaderContextMenuDensity) => void;\r\n}) {\r\n const { value, onChange } = props;\r\n if (!onChange) {\r\n return null;\r\n }\r\n\r\n return (\r\n <MenuSubmenu\r\n label=\"表格密度\"\r\n items={[\r\n {\r\n key: \"density-comfortable\",\r\n label: \"宽松\",\r\n selected: value === \"comfortable\",\r\n onClick: () => {\r\n onChange(\"comfortable\");\r\n },\r\n },\r\n {\r\n key: \"density-middle\",\r\n label: \"中等\",\r\n selected: value === \"middle\",\r\n onClick: () => {\r\n onChange(\"middle\");\r\n },\r\n },\r\n {\n key: \"density-compact\",\n label: \"紧凑\",\n selected: value === \"compact\",\r\n onClick: () => {\r\n onChange(\"compact\");\n },\n },\n {\n key: \"density-auto\",\n label: \"自适应\",\n selected: value === \"auto\",\n onClick: () => {\n onChange(\"auto\");\n },\n },\n ]}\n />\r\n );\r\n}\r\n\r\nconst CONTEXT_MENU_ZOOM_MIN = 50;\r\nconst CONTEXT_MENU_ZOOM_MAX = 200;\r\nconst CONTEXT_MENU_ZOOM_STEP = 10;\r\n\r\nfunction ZoomMenu(props: { value: number; onChange?: (zoom: number) => void }) {\r\n const { value, onChange } = props;\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const closeTimerRef = useRef<number | null>(null);\r\n\r\n if (!onChange) {\r\n return null;\r\n }\r\n\r\n const percent = Math.round(value * 100);\r\n\r\n const clearCloseTimer = () => {\r\n if (closeTimerRef.current != null) {\r\n window.clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = null;\r\n }\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearCloseTimer();\r\n closeTimerRef.current = window.setTimeout(() => {\r\n setOpen(false);\r\n closeTimerRef.current = null;\r\n }, 120);\r\n };\r\n\r\n return (\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n setOpen(true);\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n <button\r\n ref={triggerRef}\r\n type=\"button\"\r\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n height: 32,\r\n padding: \"0 10px\",\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: \"transparent\",\r\n color: \"#374151\",\r\n textAlign: \"left\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <span>缩放</span>\r\n <span\r\n style={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n color: \"#6b7280\",\r\n fontSize: 12,\r\n }}\r\n >\r\n <span>{percent}%</span>\r\n <span\r\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\r\n aria-hidden=\"true\"\r\n />\r\n </span>\r\n </button>\r\n <ReactPopup\r\n open={open}\r\n anchorRef={triggerRef}\r\n placement=\"rightTop\"\r\n offset={2}\r\n minWidth={280}\r\n onOpenChange={setOpen}\r\n surfaceStyle={{\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n width: 280,\r\n }}\r\n >\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 8,\r\n padding: \"4px 2px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n color: \"#6b7280\",\r\n fontSize: 12,\r\n padding: \"0 8px\",\r\n }}\r\n >\r\n 表格缩放(50% - 200%)\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"stretch\",\r\n gap: 6,\r\n padding: \"0 8px 4px\",\r\n }}\r\n >\r\n <ReactInputNumber\r\n value={percent}\r\n min={CONTEXT_MENU_ZOOM_MIN}\r\n max={CONTEXT_MENU_ZOOM_MAX}\r\n step={CONTEXT_MENU_ZOOM_STEP}\r\n precision={0}\r\n addonAfter=\"%\"\r\n style={{ flex: \"1 1 auto\", minWidth: 0 }}\r\n onChange={(next) => {\r\n if (next == null || !Number.isFinite(next)) {\r\n return;\r\n }\r\n onChange(Math.round(next) / 100);\r\n }}\r\n />\r\n <button\r\n type=\"button\"\r\n disabled={percent === 100}\r\n onClick={() => {\r\n onChange(1);\r\n }}\r\n className=\"react-list-table-menu-action\"\r\n style={{\r\n flex: \"0 0 52px\",\r\n height: 32,\r\n padding: 0,\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 6,\r\n background: \"#ffffff\",\r\n color: percent === 100 ? \"#9ca3af\" : \"#374151\",\r\n textAlign: \"center\",\r\n cursor: percent === 100 ? \"not-allowed\" : \"pointer\",\r\n }}\r\n >\r\n 重置\r\n </button>\r\n </div>\r\n </div>\r\n </ReactPopup>\r\n </div>\r\n );\r\n}\r\n\r\nfunction ColumnVisibilityMenu(props: {\r\n columns: HeaderContextMenuColumnItem[];\r\n onToggle: (columnKey: string, visible: boolean) => void;\r\n}) {\r\n const { columns, onToggle } = props;\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const closeTimerRef = useRef<number | null>(null);\r\n\r\n const clearCloseTimer = () => {\r\n if (closeTimerRef.current != null) {\r\n window.clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = null;\r\n }\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearCloseTimer();\r\n closeTimerRef.current = window.setTimeout(() => {\r\n setOpen(false);\r\n closeTimerRef.current = null;\r\n }, 120);\r\n };\r\n\r\n return (\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n setOpen(true);\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n <button\r\n ref={triggerRef}\r\n type=\"button\"\r\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n height: 32,\r\n padding: \"0 10px\",\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: \"transparent\",\r\n color: \"#374151\",\r\n textAlign: \"left\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <span>列显示</span>\r\n <span\r\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\r\n aria-hidden=\"true\"\r\n />\r\n </button>\r\n <ReactPopup\r\n open={open}\r\n anchorRef={triggerRef}\r\n placement=\"rightTop\"\r\n offset={2}\r\n minWidth={220}\r\n onOpenChange={setOpen}\r\n surfaceStyle={{\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n maxHeight: 360,\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n {columns.map((column) => (\r\n <ColumnVisibilityItem\r\n key={column.key}\r\n item={column}\r\n onToggle={onToggle}\r\n />\r\n ))}\r\n </div>\r\n </ReactPopup>\r\n </div>\r\n );\r\n}\r\n\r\nfunction ColumnVisibilityItem(props: {\r\n item: HeaderContextMenuColumnItem;\r\n onToggle: (columnKey: string, visible: boolean) => void;\r\n}) {\r\n const { item, onToggle } = props;\r\n const triggerRef = useRef<HTMLDivElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const closeTimerRef = useRef<number | null>(null);\r\n const hasChildren = !!item.children?.length;\r\n\r\n const clearCloseTimer = () => {\r\n if (closeTimerRef.current != null) {\r\n window.clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = null;\r\n }\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearCloseTimer();\r\n closeTimerRef.current = window.setTimeout(() => {\r\n setOpen(false);\r\n closeTimerRef.current = null;\r\n }, 120);\r\n };\r\n\r\n return (\r\n <div\r\n ref={triggerRef}\r\n className=\"react-list-table-menu-row\"\r\n onMouseEnter={() => {\r\n if (hasChildren) {\r\n clearCloseTimer();\r\n setOpen(true);\r\n }\r\n }}\r\n onMouseLeave={() => {\r\n if (hasChildren) {\r\n scheduleClose();\r\n }\r\n }}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 8,\r\n minHeight: 32,\r\n padding: \"0 10px\",\r\n borderRadius: 8,\r\n color: item.disabled ? \"#9ca3af\" : \"#374151\",\r\n fontSize: 14,\r\n }}\r\n >\r\n <ReactCheckbox\r\n checked={item.checked}\r\n disabled={item.disabled}\r\n indeterminate={!!item.indeterminate}\r\n onChange={(event) => {\r\n onToggle(item.key, !!event.target.checked);\r\n }}\r\n >\r\n {item.title}\r\n </ReactCheckbox>\r\n {hasChildren ? (\r\n <span\r\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\r\n aria-hidden=\"true\"\r\n />\r\n ) : null}\r\n {hasChildren ? (\r\n <ReactPopup\r\n open={open}\r\n anchorRef={triggerRef}\r\n placement=\"rightTop\"\r\n offset={2}\r\n minWidth={220}\r\n onOpenChange={setOpen}\r\n surfaceStyle={{\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n maxHeight: 320,\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n {item.children!.map((child) => (\r\n <ColumnVisibilityItem\r\n key={child.key}\r\n item={child}\r\n onToggle={onToggle}\r\n />\r\n ))}\r\n </div>\r\n </ReactPopup>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction MenuDivider() {\r\n return (\r\n <div\r\n style={{\r\n height: 1,\r\n margin: \"6px 0\",\r\n background: \"#f0f0f0\",\r\n }}\r\n />\r\n );\r\n}\r\n\r\nfunction CustomSelectionMenu(props: {\r\n request: HeaderContextMenuConfig;\r\n onOpen: () => void;\r\n}) {\r\n const { request } = props;\r\n if (!request.onCopyCustomSelection || !request.customSelection) {\r\n return null;\r\n }\r\n\r\n return (\r\n <MenuAction\r\n label=\"复制自定义选区\"\r\n onClick={props.onOpen}\r\n />\r\n );\r\n}\r\n\r\nfunction CustomSelectionDialog(props: {\r\n request: HeaderContextMenuConfig;\r\n onClose: () => void;\r\n}) {\r\n const { request } = props;\r\n const initial = request.customSelection ?? {\r\n startRow: 1,\r\n startColumn: 1,\r\n endRow: 1,\r\n endColumn: 1,\r\n rowCount: 0,\r\n columnCount: 0,\r\n };\r\n const [range, setRange] = useState(initial);\r\n\r\n useEffect(() => {\r\n setRange(initial);\r\n }, [\r\n initial.startRow,\r\n initial.startColumn,\r\n initial.endRow,\r\n initial.endColumn,\r\n ]);\r\n\r\n if (!request.onCopyCustomSelection || !request.customSelection) {\r\n return null;\r\n }\r\n\r\n const update = (key: keyof typeof range, value: number | null) => {\r\n setRange((current) => ({\r\n ...current,\r\n [key]: value == null ? 1 : Math.floor(value),\r\n }));\r\n };\r\n\r\n return (\r\n <ReactModal\r\n open\r\n title=\"复制自定义选区\"\r\n width={360}\r\n centered\r\n fullscreenable={false}\r\n onCancel={props.onClose}\r\n onOk={() => {\r\n request.onCopyCustomSelection?.({\r\n startRow: Math.max(range.startRow, 1),\r\n startColumn: Math.max(range.startColumn, 1),\r\n endRow: Math.max(range.endRow, 1),\r\n endColumn: Math.max(range.endColumn, 1),\r\n });\r\n props.onClose();\r\n }}\r\n bodyStyle={{ padding: \"4px 20px 18px\" }}\r\n >\r\n <div style={{ color: \"#6b7280\", fontSize: 12, marginBottom: 10 }}>\r\n 输入起始位置和结束位置\r\n </div>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"38px 1fr 1fr\",\r\n gap: 8,\r\n marginBottom: 6,\r\n color: \"#6b7280\",\r\n fontSize: 12,\r\n textAlign: \"center\",\r\n }}\r\n >\r\n <span />\r\n <span>行</span>\r\n <span>列</span>\r\n </div>\r\n <CustomSelectionRow\r\n label=\"起始\"\r\n row={range.startRow}\r\n column={range.startColumn}\r\n onRowChange={(value) => update(\"startRow\", value)}\r\n onColumnChange={(value) => update(\"startColumn\", value)}\r\n />\r\n <CustomSelectionRow\r\n label=\"结束\"\r\n row={range.endRow}\r\n column={range.endColumn}\r\n onRowChange={(value) => update(\"endRow\", value)}\r\n onColumnChange={(value) => update(\"endColumn\", value)}\r\n />\r\n </ReactModal>\r\n );\r\n}\r\n\r\nfunction CustomSelectionRow(props: {\r\n label: string;\r\n row: number;\r\n column: number;\r\n onRowChange: (value: number | null) => void;\r\n onColumnChange: (value: number | null) => void;\r\n}) {\r\n return (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"38px 1fr 1fr\",\r\n gap: 6,\r\n alignItems: \"center\",\r\n marginBottom: 6,\r\n }}\r\n >\r\n <span style={{ color: \"#374151\", fontSize: 12 }}>{props.label}</span>\r\n <ReactInputNumber\r\n className=\"react-list-table-custom-selection-input\"\r\n value={props.row}\r\n min={1}\r\n step={1}\r\n precision={0}\r\n placeholder=\"行\"\r\n onChange={props.onRowChange}\r\n />\r\n <ReactInputNumber\r\n className=\"react-list-table-custom-selection-input\"\r\n value={props.column}\r\n min={1}\r\n step={1}\r\n precision={0}\r\n placeholder=\"列\"\r\n onChange={props.onColumnChange}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nfunction SummaryMenu(props: { request: HeaderContextMenuConfig }) {\r\n const { request } = props;\r\n const [precision, setPrecision] = useState<number | null>(\r\n request.summaryPrecision ?? null,\r\n );\r\n const [roundingMode, setRoundingMode] =\r\n useState<ListTableSummaryRoundingMode>(\r\n request.summaryRoundingMode ?? \"round\",\r\n );\r\n const [preserveTrailingZeros, setPreserveTrailingZeros] = useState(\r\n request.summaryPreserveTrailingZeros ?? false,\r\n );\r\n\r\n useEffect(() => {\r\n setPrecision(request.summaryPrecision ?? null);\r\n setRoundingMode(request.summaryRoundingMode ?? \"round\");\r\n setPreserveTrailingZeros(request.summaryPreserveTrailingZeros ?? false);\r\n }, [\r\n request.summaryColumnKey,\r\n request.summaryPrecision,\r\n request.summaryRoundingMode,\r\n request.summaryPreserveTrailingZeros,\r\n ]);\r\n\r\n if (!request.summaryColumnKey) {\r\n return null;\r\n }\r\n\r\n const summaryTypes: Array<{\r\n key: string;\r\n label: string;\r\n value: NonNullable<HeaderContextMenuConfig[\"summaryType\"]>;\r\n }> = [\r\n { key: \"sum\", label: \"求和\", value: \"sum\" },\r\n { key: \"avg\", label: \"平均值\", value: \"avg\" },\r\n { key: \"count\", label: \"计数\", value: \"count\" },\r\n { key: \"unionCount\", label: \"去重计数\", value: \"unionCount\" },\r\n { key: \"rowCount\", label: \"行数\", value: \"rowCount\" },\r\n { key: \"mergedRowCount\", label: \"合并行数\", value: \"mergedRowCount\" },\r\n { key: \"min\", label: \"最小值\", value: \"min\" },\r\n { key: \"max\", label: \"最大值\", value: \"max\" },\r\n ];\r\n return (\r\n <MenuSubmenu\r\n label=\"汇总方式\"\r\n minWidth={268}\r\n items={summaryTypes.map((item) => ({\r\n key: item.key,\r\n label: item.label,\r\n selected: request.summaryType === item.value,\r\n onClick: () => request.onChangeSummaryType?.(item.value),\r\n }))}\r\n footer={\r\n request.onChangeSummaryPrecision ||\r\n request.onChangeSummaryRoundingMode ||\r\n request.onChangeSummaryPreserveTrailingZeros ? (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"72px 1fr\",\r\n gap: 8,\r\n alignItems: \"center\",\r\n marginTop: 4,\r\n padding: \"10px 10px 2px\",\r\n borderTop: \"1px solid #e5e7eb\",\r\n }}\r\n >\r\n {request.onChangeSummaryPrecision ? (\r\n <>\r\n <span style={{ color: \"#374151\", fontSize: 13 }}>小数位数</span>\r\n <ReactInputNumber\r\n value={precision}\r\n min={0}\r\n max={20}\r\n step={1}\r\n precision={0}\r\n placeholder=\"默认\"\r\n onChange={setPrecision}\r\n onCommit={(value) => {\r\n request.onChangeSummaryPrecision?.(value ?? undefined);\r\n }}\r\n />\r\n </>\r\n ) : null}\r\n {request.onChangeSummaryRoundingMode ? (\r\n <>\r\n <span style={{ color: \"#374151\", fontSize: 13 }}>取整方式</span>\r\n <ReactSelect\r\n value={roundingMode}\r\n options={[\r\n { label: \"四舍五入\", value: \"round\" },\r\n { label: \"向下取整\", value: \"floor\" },\r\n { label: \"向上取整\", value: \"ceil\" },\r\n { label: \"舍去不处理\", value: \"truncate\" },\r\n ]}\r\n onChange={(value) => {\r\n const mode = value as ListTableSummaryRoundingMode;\r\n setRoundingMode(mode);\r\n request.onChangeSummaryRoundingMode?.(mode);\r\n }}\r\n />\r\n </>\r\n ) : null}\r\n {request.onChangeSummaryPreserveTrailingZeros ? (\r\n <>\r\n <span style={{ color: \"#374151\", fontSize: 13 }}>保留无效零</span>\r\n <ReactSelect\r\n value={preserveTrailingZeros ? \"true\" : \"false\"}\r\n options={[\r\n { label: \"不保留\", value: \"false\" },\r\n { label: \"保留\", value: \"true\" },\r\n ]}\r\n onChange={(selectedValue) => {\r\n const value = selectedValue === \"true\";\r\n setPreserveTrailingZeros(value);\r\n request.onChangeSummaryPreserveTrailingZeros?.(value);\r\n }}\r\n />\r\n </>\r\n ) : null}\r\n </div>\r\n ) : undefined\r\n }\r\n />\r\n );\r\n}\r\n\r\nfunction AlignmentMenu(props: { request: HeaderContextMenuConfig }) {\r\n const { request } = props;\r\n if (!request.alignment || !request.onChangeAlignment) {\r\n return null;\r\n }\r\n\r\n return (\r\n <MenuSubmenu\r\n label=\"对齐方式\"\r\n items={[]}\r\n footer={\r\n <div style={{ display: \"grid\", gap: 10, padding: \"4px 8px\" }}>\r\n <AlignmentGroup\r\n label=\"表头\"\r\n horizontal={request.alignment.headerHorizontal}\r\n vertical={request.alignment.headerVertical}\r\n onHorizontalChange={(value) =>\r\n request.onChangeAlignment?.(\"header\", \"horizontal\", value)\r\n }\r\n onVerticalChange={(value) =>\r\n request.onChangeAlignment?.(\"header\", \"vertical\", value)\r\n }\r\n />\r\n <AlignmentGroup\r\n label=\"表体\"\r\n horizontal={request.alignment.bodyHorizontal}\r\n vertical={request.alignment.bodyVertical}\r\n onHorizontalChange={(value) =>\r\n request.onChangeAlignment?.(\"body\", \"horizontal\", value)\r\n }\r\n onVerticalChange={(value) =>\r\n request.onChangeAlignment?.(\"body\", \"vertical\", value)\r\n }\r\n />\r\n </div>\r\n }\r\n />\r\n );\r\n}\r\n\r\nfunction AlignmentGroup(props: {\r\n label: string;\r\n horizontal: \"left\" | \"center\" | \"right\";\r\n vertical: \"top\" | \"middle\" | \"bottom\";\r\n onHorizontalChange: (value: \"left\" | \"center\" | \"right\") => void;\r\n onVerticalChange: (value: \"top\" | \"middle\" | \"bottom\") => void;\r\n}) {\r\n return (\r\n <div style={{ display: \"grid\", gap: 6 }}>\r\n <strong style={{ color: \"#374151\", fontSize: 13 }}>{props.label}</strong>\r\n <AlignmentSegment\r\n label=\"水平\"\r\n value={props.horizontal}\r\n options={[\r\n { label: \"左\", value: \"left\" },\r\n { label: \"中\", value: \"center\" },\r\n { label: \"右\", value: \"right\" },\r\n ]}\r\n onChange={props.onHorizontalChange}\r\n />\r\n <AlignmentSegment\r\n label=\"垂直\"\r\n value={props.vertical}\r\n options={[\r\n { label: \"上\", value: \"top\" },\r\n { label: \"中\", value: \"middle\" },\r\n { label: \"下\", value: \"bottom\" },\r\n ]}\r\n onChange={props.onVerticalChange}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nfunction AlignmentSegment<Value extends string>(props: {\r\n label: string;\r\n value: Value;\r\n options: Array<{ label: string; value: Value }>;\r\n onChange: (value: Value) => void;\r\n}) {\r\n return (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"40px repeat(3, 1fr)\",\r\n gap: 4,\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <span style={{ color: \"#6b7280\", fontSize: 12 }}>{props.label}</span>\r\n {props.options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n className=\"react-list-table-menu-action\"\r\n style={{\r\n height: 28,\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 4,\r\n background: props.value === option.value ? \"#e8f3ff\" : \"#ffffff\",\r\n color: props.value === option.value ? \"#1677ff\" : \"#374151\",\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => props.onChange(option.value)}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nfunction DataFormatMenu(props: {\r\n request: HeaderContextMenuConfig;\r\n onOpenMoreFormat: () => void;\r\n}) {\r\n const { request } = props;\r\n\r\n if (!request.onChangeDataFormat) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <MenuSubmenu\r\n label=\"格式\"\r\n minWidth={340}\r\n items={(\r\n [\r\n { key: \"default\", label: \"常规\", value: \"default\" },\r\n { key: \"text\", label: \"纯文本\", value: \"text\" },\r\n {\r\n key: \"number\",\r\n label: \"数字\",\r\n preview: \"1024\",\r\n value: \"number\",\r\n separatorBefore: true,\r\n },\r\n {\r\n key: \"thousands\",\r\n label: \"数字(千分位)\",\r\n preview: \"1,024\",\r\n value: \"thousands\",\r\n },\r\n {\r\n key: \"decimal\",\r\n label: \"数字(千分位,小数点)\",\r\n preview: \"1,024.56\",\r\n value: \"decimal\",\r\n },\r\n {\r\n key: \"percent\",\r\n label: \"百分比\",\r\n preview: \"10%\",\r\n value: \"percent\",\r\n separatorBefore: true,\r\n },\r\n {\r\n key: \"percentDecimal\",\r\n label: \"百分比(小数点)\",\r\n preview: \"10.24%\",\r\n value: \"percentDecimal\",\r\n },\r\n {\r\n key: \"scientific\",\r\n label: \"科学记数\",\r\n preview: \"1.02E+003\",\r\n value: \"scientific\",\r\n },\r\n {\r\n key: \"numberToChineseUpper\",\r\n label: \"数字转大写\",\r\n preview: \"玖拾壹万捌仟\",\r\n value: \"numberToChineseUpper\",\r\n },\r\n {\r\n key: \"chineseUpperToNumber\",\r\n label: \"大写转数字\",\r\n preview: \"918000\",\r\n value: \"chineseUpperToNumber\",\r\n },\r\n {\r\n key: \"cny\",\r\n label: \"人民币\",\r\n preview: \"¥1,024\",\r\n value: \"cny\",\r\n separatorBefore: true,\r\n },\r\n {\r\n key: \"cnyDecimal\",\r\n label: \"人民币(小数点)\",\r\n preview: \"¥1,024.56\",\r\n value: \"cnyDecimal\",\r\n },\r\n {\r\n key: \"usd\",\r\n label: \"美元\",\r\n preview: \"$1,024\",\r\n value: \"usd\",\r\n },\r\n {\r\n key: \"usdDecimal\",\r\n label: \"美元(小数点)\",\r\n preview: \"$1,024.56\",\r\n value: \"usdDecimal\",\r\n },\r\n {\r\n key: \"dateSlash\",\r\n label: \"日期(斜杠)\",\r\n preview: \"2017/08/01\",\r\n value: \"dateSlash\",\r\n separatorBefore: true,\r\n },\r\n {\r\n key: \"dateDash\",\r\n label: \"日期(短横线)\",\r\n preview: \"2017-08-01\",\r\n value: \"dateDash\",\r\n },\r\n {\r\n key: \"dateFullCN\",\r\n label: \"日期(中文)\",\r\n preview: \"2017年8月1日\",\r\n value: \"dateFullCN\",\r\n },\r\n { key: \"time\", label: \"时间\", preview: \"23:24:25\", value: \"time\" },\r\n {\r\n key: \"timeShort\",\r\n label: \"时间(分)\",\r\n preview: \"23:24\",\r\n value: \"timeShort\",\r\n },\r\n {\r\n key: \"datetime\",\r\n label: \"日期时间\",\r\n preview: \"2017/08/01 23:24:25\",\r\n value: \"datetime\",\r\n },\r\n {\r\n key: \"datetime12\",\r\n label: \"日期时间(上下)\",\r\n preview: \"2017/08/01 下午11:24\",\r\n value: \"datetime12\",\r\n },\r\n {\r\n key: \"more\",\r\n label: \"更多格式\",\r\n separatorBefore: true,\r\n onClick: props.onOpenMoreFormat,\r\n },\r\n ] as const\r\n ).map((item) => ({\r\n key: `data-format-${item.key}`,\r\n label: item.label,\r\n preview: \"preview\" in item ? item.preview : undefined,\r\n separatorBefore:\r\n \"separatorBefore\" in item ? item.separatorBefore : undefined,\r\n disabled: \"disabled\" in item && item.disabled === true,\r\n selected: \"value\" in item && request.dataFormat === item.value,\r\n onClick:\r\n \"onClick\" in item\r\n ? item.onClick\r\n : \"value\" in item\r\n ? () => request.onChangeDataFormat?.(item.value)\r\n : undefined,\r\n }))}\r\n />\r\n </>\r\n );\r\n}\r\n\r\nfunction MoreFormatDialog(props: {\r\n request: HeaderContextMenuConfig;\r\n onClose: () => void;\r\n}) {\r\n const { request } = props;\r\n const [category, setCategory] = useState(() =>\r\n resolveMoreFormatCategory(request.dataFormat),\r\n );\r\n const [customPattern, setCustomPattern] = useState(() =>\r\n typeof request.dataFormat === \"object\" &&\r\n request.dataFormat.type === \"custom\"\r\n ? (request.dataFormat.pattern ?? \"#,##0.00\")\r\n : \"#,##0.00\",\r\n );\r\n const [decimalPlaces, setDecimalPlaces] = useState(() =>\r\n typeof request.dataFormat === \"object\"\r\n ? (request.dataFormat.decimalPlaces ?? 2)\r\n : 2,\r\n );\r\n const [useGrouping, setUseGrouping] = useState(() =>\r\n typeof request.dataFormat === \"object\"\r\n ? (request.dataFormat.useGrouping ?? false)\r\n : false,\r\n );\r\n const [currency, setCurrency] = useState(() =>\r\n typeof request.dataFormat === \"object\"\r\n ? (request.dataFormat.symbol ?? \"¥\")\r\n : \"¥\",\r\n );\r\n const [datePattern, setDatePattern] = useState(() =>\r\n resolveInitialFormatPattern(request.dataFormat, \"date\"),\r\n );\r\n const [timePattern, setTimePattern] = useState(() =>\r\n resolveInitialFormatPattern(request.dataFormat, \"time\"),\r\n );\r\n\r\n return (\r\n <ReactModal\r\n open\r\n title=\"设置单元格数字格式\"\r\n width={480}\r\n centered\r\n fullscreenable={false}\r\n onCancel={props.onClose}\r\n onOk={() => {\r\n request.onChangeDataFormat?.(\r\n resolveMoreFormatValue(\r\n category,\r\n customPattern,\r\n decimalPlaces,\r\n currency,\r\n datePattern,\r\n timePattern,\r\n useGrouping,\r\n ),\r\n );\r\n props.onClose();\r\n }}\r\n bodyStyle={{ padding: \"0 20px 18px\" }}\r\n >\r\n <MoreFormatDialogBody\r\n category={category}\r\n customPattern={customPattern}\r\n decimalPlaces={decimalPlaces}\r\n useGrouping={useGrouping}\r\n currency={currency}\r\n datePattern={datePattern}\r\n timePattern={timePattern}\r\n onCategoryChange={setCategory}\r\n onCustomPatternChange={setCustomPattern}\r\n onDecimalPlacesChange={setDecimalPlaces}\r\n onGroupingChange={setUseGrouping}\r\n onCurrencyChange={setCurrency}\r\n onDatePatternChange={setDatePattern}\r\n onTimePatternChange={setTimePattern}\r\n />\r\n </ReactModal>\r\n );\r\n}\r\n\r\ntype MoreFormatCategory =\r\n | \"general\"\r\n | \"number\"\r\n | \"currency\"\r\n | \"date\"\r\n | \"time\"\r\n | \"percent\"\r\n | \"scientific\"\r\n | \"text\"\r\n | \"custom\";\r\n\r\nconst MORE_FORMAT_CATEGORIES: Array<{\r\n key: MoreFormatCategory;\r\n label: string;\r\n}> = [\r\n { key: \"general\", label: \"常规\" },\r\n { key: \"number\", label: \"数值\" },\r\n { key: \"currency\", label: \"货币\" },\r\n { key: \"date\", label: \"日期\" },\r\n { key: \"time\", label: \"时间\" },\r\n { key: \"percent\", label: \"百分比\" },\r\n { key: \"scientific\", label: \"科学记数\" },\r\n { key: \"text\", label: \"文本\" },\r\n { key: \"custom\", label: \"自定义\" },\r\n];\r\n\r\nfunction MoreFormatDialogBody(props: {\r\n category: MoreFormatCategory;\r\n customPattern: string;\r\n decimalPlaces: number;\r\n useGrouping: boolean;\r\n currency: string;\r\n datePattern: string;\r\n timePattern: string;\r\n onCategoryChange: (category: MoreFormatCategory) => void;\r\n onCustomPatternChange: (pattern: string) => void;\r\n onDecimalPlacesChange: (value: number) => void;\r\n onGroupingChange: (value: boolean) => void;\r\n onCurrencyChange: (value: string) => void;\r\n onDatePatternChange: (value: string) => void;\r\n onTimePatternChange: (value: string) => void;\r\n}) {\r\n const sample = resolveMoreFormatSample(\r\n props.category,\r\n props.customPattern,\r\n props.decimalPlaces,\r\n props.currency,\r\n props.datePattern,\r\n props.timePattern,\r\n props.useGrouping,\r\n );\r\n return (\r\n <div style={{ display: \"grid\", gap: 14 }}>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"120px 1fr\",\r\n gap: 18,\r\n alignItems: \"stretch\",\r\n height: 320,\r\n }}\r\n >\r\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\r\n <div style={moreFormatLabelStyle}>类别</div>\r\n <div style={{ ...moreFormatCategoryListStyle, flex: 1 }}>\r\n {MORE_FORMAT_CATEGORIES.map((item) => (\r\n <button\r\n key={item.key}\r\n type=\"button\"\r\n onClick={() => props.onCategoryChange(item.key)}\r\n style={{\r\n ...moreFormatCategoryButtonStyle,\r\n ...(props.category === item.key\r\n ? moreFormatCategorySelectedStyle\r\n : null),\r\n }}\r\n >\r\n {item.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n <div>\r\n <div style={moreFormatLabelStyle}>示例</div>\r\n <div style={moreFormatExampleStyle}>{sample}</div>\r\n <MoreFormatOptions {...props} />\r\n </div>\r\n </div>\r\n <div style={moreFormatDescriptionStyle}>\r\n 常规单元格格式不包含任何特定的数字格式\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction MoreFormatOptions(props: Parameters<typeof MoreFormatDialogBody>[0]) {\r\n if (\r\n props.category === \"number\" ||\r\n props.category === \"percent\" ||\r\n props.category === \"scientific\"\r\n ) {\r\n return (\r\n <div style={moreFormatOptionsStyle}>\r\n <span style={moreFormatLabelStyle}>小数位数</span>\r\n <ReactInputNumber\r\n value={props.decimalPlaces}\r\n min={0}\r\n max={20}\r\n precision={0}\r\n onChange={(value) => props.onDecimalPlacesChange(value ?? 0)}\r\n style={{ width: 96 }}\r\n />\r\n {props.category === \"number\" ? (\r\n <ReactCheckbox\r\n checked={props.useGrouping}\r\n onChange={(event) => props.onGroupingChange(event.target.checked)}\r\n >\r\n 显示千分位分隔符(,)\r\n </ReactCheckbox>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n if (props.category === \"currency\") {\r\n return (\r\n <div style={moreFormatOptionsStyle}>\r\n <span style={moreFormatLabelStyle}>小数位数</span>\r\n <ReactInputNumber\r\n value={props.decimalPlaces}\r\n min={0}\r\n max={20}\r\n precision={0}\r\n onChange={(value) => props.onDecimalPlacesChange(value ?? 0)}\r\n style={{ width: 96 }}\r\n />\r\n <span style={moreFormatLabelStyle}>货币符号</span>\r\n <ReactSelect\r\n value={props.currency}\r\n options={[\r\n { label: \"¥\", value: \"¥\" },\r\n { label: \"$\", value: \"$\" },\r\n ]}\r\n onChange={props.onCurrencyChange}\r\n style={{ width: 150 }}\r\n />\r\n </div>\r\n );\r\n }\r\n if (props.category === \"date\") {\r\n return (\r\n <FormatChoiceList\r\n label=\"类型\"\r\n value={props.datePattern}\r\n options={DATE_FORMAT_OPTIONS}\r\n onChange={props.onDatePatternChange}\r\n allowInput\r\n inputLabel=\"自定义格式\"\r\n inputPlaceholder=\"例如:YYYY-MM-DD HH:mm:ss\"\r\n />\r\n );\r\n }\r\n if (props.category === \"time\") {\r\n return (\r\n <FormatChoiceList\r\n label=\"类型\"\r\n value={props.timePattern}\r\n options={TIME_FORMAT_OPTIONS}\r\n onChange={props.onTimePatternChange}\r\n />\r\n );\r\n }\r\n if (props.category === \"custom\") {\r\n return (\r\n <FormatChoiceList\r\n label=\"类型\"\r\n value={props.customPattern}\r\n options={[\r\n \"@\",\r\n \"G/通用格式\",\r\n '0,\"万\"',\r\n '0.0,\"万\"',\r\n '0.00,\"万\"',\r\n '\"**********\"',\r\n \"0\",\r\n \"0.0\",\r\n \"0.00\",\r\n \"0.000\",\r\n \"#,##0\",\r\n \"#,##0.0\",\r\n \"#,##0.00\",\r\n \"#,##0.000\",\r\n \"#,##0;[红色]-#,##0\",\r\n \"0%\",\r\n \"0.0%\",\r\n \"0.00%\",\r\n \"¥#,##0\",\r\n \"¥#,##0.00\",\r\n \"$#,##0\",\r\n \"$#,##0.00\",\r\n \"0.00E+00\",\r\n \"YYYY/M/D\",\r\n \"YYYY/MM/DD\",\r\n \"YYYY-MM-DD\",\r\n \"HH:mm\",\r\n \"HH:mm:ss\",\r\n \"Ah:mm\",\r\n \"Ah:mm:ss\",\r\n \"YYYY/M/D HH:mm\",\r\n \"YYYY-MM-DD HH:mm:ss\",\r\n ]}\r\n onChange={props.onCustomPatternChange}\r\n allowInput\r\n />\r\n );\r\n }\r\n return null;\r\n}\r\n\r\nfunction FormatChoiceList(props: {\r\n label: string;\r\n value: string;\r\n options: Array<string | { label: string; value: string }>;\r\n onChange: (value: string) => void;\r\n allowInput?: boolean;\r\n inputLabel?: string;\r\n inputPlaceholder?: string;\r\n}) {\r\n return (\r\n <div style={{ marginTop: 16 }}>\r\n {props.allowInput ? (\r\n <>\r\n <div style={moreFormatLabelStyle}>\r\n {props.inputLabel ?? props.label}\r\n </div>\r\n <ReactInput\r\n value={props.value}\r\n placeholder={props.inputPlaceholder}\r\n onChange={(event) => props.onChange(event.target.value)}\r\n />\r\n </>\r\n ) : null}\r\n <div\r\n style={{\r\n ...moreFormatLabelStyle,\r\n marginTop: props.allowInput ? 14 : 0,\r\n }}\r\n >\r\n {props.label}\r\n </div>\r\n <div style={moreFormatChoiceListStyle}>\r\n {props.options.map((option) => {\r\n const value = typeof option === \"string\" ? option : option.value;\r\n const label = typeof option === \"string\" ? option : option.label;\r\n return (\r\n <button\r\n key={value}\r\n type=\"button\"\r\n onClick={() => props.onChange(value)}\r\n style={{\r\n ...moreFormatChoiceStyle,\r\n ...(props.value === value\r\n ? moreFormatChoiceSelectedStyle\r\n : null),\r\n }}\r\n >\r\n {label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction resolveMoreFormatCategory(\r\n dataFormat: HeaderContextMenuConfig[\"dataFormat\"],\r\n): MoreFormatCategory {\r\n const type = typeof dataFormat === \"object\" ? dataFormat.type : dataFormat;\r\n if (type === \"custom\") return \"custom\";\r\n if (type === \"percent\" || type === \"percentDecimal\") return \"percent\";\r\n if (\r\n type === \"cny\" ||\r\n type === \"cnyDecimal\" ||\r\n type === \"usd\" ||\r\n type === \"usdDecimal\" ||\r\n type === \"money\"\r\n )\r\n return \"currency\";\r\n if (\r\n type === \"dateSlash\" ||\r\n type === \"dateDash\" ||\r\n type === \"dateFullCN\" ||\r\n type === \"dateYearMonthCN\" ||\r\n type === \"dateMonthDayCN\" ||\r\n type === \"dateSlashWeek\" ||\r\n type === \"dateDashWeek\" ||\r\n type === \"dateWeekdayCNFull\" ||\r\n type === \"dateWeekdayCNShort\" ||\r\n type === \"datetime\" ||\r\n type === \"datetime12\" ||\r\n type === \"datetime12Seconds\"\r\n )\r\n return \"date\";\r\n if (\r\n type === \"time\" ||\r\n type === \"timeShort\" ||\r\n type === \"time12\" ||\r\n type === \"time12Seconds\" ||\r\n type === \"timeMillisecond\" ||\r\n type === \"time12Millisecond\" ||\r\n type === \"timeChineseHour\" ||\r\n type === \"timeChineseSecond\" ||\r\n type === \"time12ChineseHour\" ||\r\n type === \"time12ChineseSecond\"\r\n )\r\n return \"time\";\r\n if (type === \"scientific\") return \"scientific\";\r\n if (type === \"text\") return \"text\";\r\n if (\r\n type === \"number\" ||\r\n type === \"thousands\" ||\r\n type === \"decimal\" ||\r\n type === \"numberToChineseUpper\" ||\r\n type === \"chineseUpperToNumber\"\r\n )\r\n return \"number\";\r\n return \"general\";\r\n}\r\n\r\ninterface DateTimeFormatOption {\r\n label: string;\r\n value: string;\r\n type: ListTableDataFormatType;\r\n}\r\n\r\nconst DATE_FORMAT_OPTIONS: DateTimeFormatOption[] = [\r\n { label: \"2012/3/14\", value: \"YYYY/M/D\", type: \"dateSlash\" },\r\n { label: \"2012/03/14\", value: \"YYYY/MM/DD\", type: \"dateSlash\" },\r\n { label: \"2012-3-14\", value: \"YYYY-M-D\", type: \"dateDash\" },\r\n { label: \"2012-03-14\", value: \"YYYY-MM-DD\", type: \"dateDash\" },\r\n { label: \"2012.03.14\", value: \"YYYY.MM.DD\", type: \"dateSlash\" },\r\n { label: \"14/03/2012\", value: \"DD/MM/YYYY\", type: \"dateSlash\" },\r\n { label: \"03/14/2012\", value: \"MM/DD/YYYY\", type: \"dateSlash\" },\r\n { label: \"12年3月14日\", value: \"YY年M月D日\", type: \"dateFullCN\" },\r\n { label: \"2012年3月14日\", value: \"YYYY年M月D日\", type: \"dateFullCN\" },\r\n { label: \"2012年3月\", value: \"YYYY年M月\", type: \"dateYearMonthCN\" },\r\n { label: \"3月14日\", value: \"M月D日\", type: \"dateMonthDayCN\" },\r\n { label: \"星期三\", value: \"dddd\", type: \"dateWeekdayCNFull\" },\r\n { label: \"周三\", value: \"ddd\", type: \"dateWeekdayCNShort\" },\r\n { label: \"2012/3/14 星期三\", value: \"YYYY/M/D dddd\", type: \"dateSlashWeek\" },\r\n {\r\n label: \"2012-03-14 星期三\",\r\n value: \"YYYY-MM-DD dddd\",\r\n type: \"dateDashWeek\",\r\n },\r\n { label: \"2012/3/14 14:30\", value: \"YYYY/M/D HH:mm\", type: \"datetime\" },\r\n { label: \"2012/3/14 14:30:55\", value: \"YYYY/M/D HH:mm:ss\", type: \"datetime\" },\r\n {\r\n label: \"2012-03-14 14:30:55\",\r\n value: \"YYYY-MM-DD HH:mm:ss\",\r\n type: \"datetime\",\r\n },\r\n { label: \"2012/3/14 下午2:30\", value: \"YYYY/M/D Ah:mm\", type: \"datetime12\" },\r\n {\r\n label: \"2012/3/14 下午2:30:55\",\r\n value: \"YYYY/M/D Ah:mm:ss\",\r\n type: \"datetime12Seconds\",\r\n },\r\n];\r\n\r\nconst TIME_FORMAT_OPTIONS: DateTimeFormatOption[] = [\r\n { label: \"14:30\", value: \"HH:mm\", type: \"timeShort\" },\r\n { label: \"14:30:55\", value: \"HH:mm:ss\", type: \"time\" },\r\n { label: \"14:30:55.123\", value: \"HH:mm:ss.SSS\", type: \"timeMillisecond\" },\r\n { label: \"下午2:30\", value: \"Ah:mm\", type: \"time12\" },\r\n { label: \"下午2:30:55\", value: \"Ah:mm:ss\", type: \"time12Seconds\" },\r\n {\r\n label: \"下午2:30:55.123\",\r\n value: \"Ah:mm:ss.SSS\",\r\n type: \"time12Millisecond\",\r\n },\r\n { label: \"14时30分\", value: \"H时mm分\", type: \"timeChineseHour\" },\r\n { label: \"14时30分55秒\", value: \"H时mm分ss秒\", type: \"timeChineseSecond\" },\r\n { label: \"下午2时30分\", value: \"Ah时mm分\", type: \"time12ChineseHour\" },\r\n {\r\n label: \"下午2时30分55秒\",\r\n value: \"Ah时mm分ss秒\",\r\n type: \"time12ChineseSecond\",\r\n },\r\n];\r\n\r\nconst DATE_TIME_FORMAT_SAMPLE = new Date(2012, 2, 14, 14, 30, 55, 123);\r\n\r\n/** 根据当前数据格式推导“更多格式”弹窗中日期/时间类型的初始选中项。 */\r\nfunction resolveInitialFormatPattern(\r\n dataFormat: HeaderContextMenuConfig[\"dataFormat\"],\r\n kind: \"date\" | \"time\",\r\n) {\r\n if (typeof dataFormat === \"object\" && dataFormat.pattern) {\r\n return dataFormat.pattern;\r\n }\r\n if (typeof dataFormat === \"string\") {\r\n const source = kind === \"date\" ? DATE_FORMAT_OPTIONS : TIME_FORMAT_OPTIONS;\r\n const match = source.find((option) => option.type === dataFormat);\r\n if (match) return match.value;\r\n }\r\n return kind === \"date\" ? \"YYYY/M/D\" : \"HH:mm\";\r\n}\r\n\r\nfunction resolveMoreFormatValue(\r\n category: MoreFormatCategory,\r\n customPattern: string,\r\n decimalPlaces = 2,\r\n currency = \"¥\",\r\n datePattern = \"YYYY/M/D\",\r\n timePattern = \"HH:mm\",\r\n useGrouping = false,\r\n): ListTableDataFormat {\r\n if (category === \"number\")\r\n return { type: \"number\", decimalPlaces, useGrouping };\r\n if (category === \"currency\") {\r\n return {\r\n type: currency === \"$\" ? \"usd\" : \"cny\",\r\n decimalPlaces,\r\n useGrouping: true,\r\n symbol: currency,\r\n };\r\n }\r\n if (category === \"date\") {\r\n return {\r\n type:\r\n DATE_FORMAT_OPTIONS.find((option) => option.value === datePattern)\r\n ?.type ?? \"datetime\",\r\n pattern: datePattern,\r\n };\r\n }\r\n if (category === \"time\") {\r\n return {\r\n type:\r\n TIME_FORMAT_OPTIONS.find((option) => option.value === timePattern)\r\n ?.type ?? \"time\",\r\n pattern: timePattern,\r\n };\r\n }\r\n if (category === \"percent\") return { type: \"percent\", decimalPlaces };\r\n if (category === \"scientific\") return { type: \"scientific\", decimalPlaces };\r\n if (category === \"text\") return \"text\";\r\n if (category === \"custom\") return { type: \"custom\", pattern: customPattern };\r\n return \"default\";\r\n}\r\n\r\nfunction resolveMoreFormatSample(\r\n category: MoreFormatCategory,\r\n customPattern: string,\r\n decimalPlaces = 2,\r\n currency = \"¥\",\r\n datePattern = \"YYYY/M/D\",\r\n timePattern = \"HH:mm\",\r\n useGrouping = false,\r\n) {\r\n if (category === \"date\") {\r\n return formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, datePattern) ?? \"\";\r\n }\r\n if (category === \"time\") {\r\n return formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, timePattern) ?? \"\";\r\n }\r\n if (category === \"number\") {\r\n return formatNumberValue(1024.56, {\r\n decimalPlaces,\r\n thousandsSeparator: useGrouping,\r\n });\r\n }\r\n if (category === \"currency\") {\r\n return formatNumberValue(1024.56, {\r\n decimalPlaces,\r\n thousandsSeparator: true,\r\n symbol: currency,\r\n });\r\n }\r\n if (category === \"percent\") return formatPercentValue(0.1024, decimalPlaces);\r\n if (category === \"scientific\") {\r\n return formatScientificValue(1024, decimalPlaces);\r\n }\r\n if (category === \"custom\") {\r\n return isDateTimeFormatPattern(customPattern)\r\n ? (formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, customPattern) ?? \"\")\r\n : formatCustomNumberPattern(1024.56, customPattern);\r\n }\r\n const format = resolveMoreFormatValue(\r\n category,\r\n customPattern,\r\n decimalPlaces,\r\n currency,\r\n datePattern,\r\n );\r\n const samples: Record<string, string> = {\r\n default: \"\",\r\n text: \"1024\",\r\n number: \"1024\",\r\n thousands: \"1,024\",\r\n decimal: \"1,024.56\",\r\n percent: \"10%\",\r\n percentDecimal: \"10.24%\",\r\n scientific: \"1.02E+003\",\r\n numberToChineseUpper: \"玖拾壹万捌仟\",\r\n chineseUpperToNumber: \"918000\",\r\n cny: \"¥1,024\",\r\n cnyDecimal: \"¥1,024.56\",\r\n usd: \"$1,024\",\r\n usdDecimal: \"$1,024.56\",\r\n dateSlash: \"2017/08/01\",\r\n dateDash: \"2017-08-01\",\r\n dateFullCN: \"2017年8月1日\",\r\n dateYearMonthCN: \"2017年8月\",\r\n dateMonthDayCN: \"8月1日\",\r\n dateSlashWeek: \"2017/08/01 星期二\",\r\n dateDashWeek: \"2017-08-01 星期二\",\r\n dateWeekdayCNFull: \"星期二\",\r\n dateWeekdayCNShort: \"周二\",\r\n time: \"23:24:25\",\r\n timeShort: \"23:24\",\r\n time12: \"下午11:24\",\r\n time12Seconds: \"下午11:24:25\",\r\n timeMillisecond: \"23:24:25.123\",\r\n time12Millisecond: \"下午11:24:25.123\",\r\n timeChineseHour: \"23时24分\",\r\n timeChineseSecond: \"23时24分25秒\",\r\n time12ChineseHour: \"下午11时24分\",\r\n time12ChineseSecond: \"下午11时24分25秒\",\r\n datetime: \"2017/08/01 23:24:25\",\r\n datetime12: \"2017/08/01 下午11:24\",\r\n datetime12Seconds: \"2017/08/01 下午11:24:25\",\r\n money: \"1,024.00\",\r\n };\r\n return samples[typeof format === \"string\" ? format : format.type] ?? \"\";\r\n}\r\n\r\nconst moreFormatLabelStyle = {\r\n marginBottom: 6,\r\n color: \"#4b5563\",\r\n fontSize: 12,\r\n};\r\nconst moreFormatCategoryListStyle = {\r\n display: \"grid\",\r\n gap: 2,\r\n padding: 4,\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 4,\r\n};\r\nconst moreFormatCategoryButtonStyle = {\r\n height: 28,\r\n padding: \"0 8px\",\r\n border: 0,\r\n borderRadius: 4,\r\n background: \"transparent\",\r\n color: \"#374151\",\r\n textAlign: \"left\" as const,\r\n cursor: \"pointer\",\r\n};\r\nconst moreFormatCategorySelectedStyle = {\r\n background: \"#dbeafe\",\r\n color: \"#1677ff\",\r\n};\r\nconst moreFormatExampleStyle = {\r\n height: 32,\r\n padding: \"0 10px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 4,\r\n color: \"#374151\",\r\n background: \"#f8fafc\",\r\n};\r\nconst moreFormatDescriptionStyle = {\r\n color: \"#6b7280\",\r\n fontSize: 12,\r\n};\r\nconst moreFormatOptionsStyle = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\" as const,\r\n gap: 8,\r\n marginTop: 16,\r\n};\r\nconst moreFormatChoiceListStyle = {\r\n display: \"grid\",\r\n gap: 2,\r\n maxHeight: 150,\r\n overflow: \"auto\",\r\n padding: 4,\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 4,\r\n};\r\nconst moreFormatChoiceStyle = {\r\n minHeight: 26,\r\n padding: \"3px 8px\",\r\n border: 0,\r\n borderRadius: 3,\r\n background: \"transparent\",\r\n color: \"#1f2937\",\r\n textAlign: \"left\" as const,\r\n cursor: \"pointer\",\r\n};\r\nconst moreFormatChoiceSelectedStyle = {\r\n background: \"#f3f4f6\",\r\n color: \"#1677ff\",\r\n};\r\n","import { useEffect, useState, type CSSProperties } from \"react\";\nimport type { ListTableSearchRequest } from \"@canvas-components/list-table\";\nimport { ReactInput, ReactModal } from \"@canvas-components/react-components\";\n\nconst SEARCH_MODAL_BODY_STYLE: CSSProperties = {\n padding: 12,\n};\n\n/** ListTable 的无遮罩查找弹窗。 */\nexport function ReactListTableSearchDialog(props: {\n request: ListTableSearchRequest;\n}) {\n const { request } = props;\n const [keyword, setKeyword] = useState(request.keyword);\n\n useEffect(() => {\n setKeyword(request.keyword);\n }, [request.keyword]);\n\n const matchText =\n request.matchCount > 0\n ? `${request.currentIndex + 1} / ${request.matchCount}`\n : \"未找到\";\n\n return (\n <ReactModal\n open\n title=\"查找\"\n width={360}\n mask={false}\n centered={false}\n draggable\n fullscreenable={false}\n footer={false}\n onCancel={request.onClose}\n bodyStyle={SEARCH_MODAL_BODY_STYLE}\n style={{ marginTop: 96 }}\n >\n <div style={searchContentStyle}>\n <ReactInput\n autoFocus\n value={keyword}\n placeholder=\"查找内容\"\n onChange={(event) => {\n const value = event.target.value;\n setKeyword(value);\n }}\n onPressEnter={() => {\n request.onSubmit(keyword);\n }}\n />\n <span style={matchTextStyle}>{matchText}</span>\n <button\n type=\"button\"\n title=\"上一个\"\n onClick={() => {\n if (keyword !== request.keyword) {\n request.onSubmit(keyword);\n } else {\n request.onNavigate(\"previous\");\n }\n }}\n disabled={request.matchCount === 0 && keyword === request.keyword}\n style={toolButtonStyle}\n >\n ‹\n </button>\n <button\n type=\"button\"\n title=\"下一个\"\n onClick={() => {\n if (keyword !== request.keyword) {\n request.onSubmit(keyword);\n } else {\n request.onNavigate(\"next\");\n }\n }}\n disabled={request.matchCount === 0 && keyword === request.keyword}\n style={toolButtonStyle}\n >\n ›\n </button>\n </div>\n </ReactModal>\n );\n}\n\nconst searchContentStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n};\n\nconst matchTextStyle: CSSProperties = {\n minWidth: 58,\n color: \"#64748b\",\n fontSize: 12,\n whiteSpace: \"nowrap\",\n};\n\nconst toolButtonStyle: CSSProperties = {\n width: 28,\n height: 28,\n padding: 0,\n border: \"1px solid #d1d5db\",\n borderRadius: 4,\n background: \"#ffffff\",\n color: \"#475569\",\n fontSize: 18,\n lineHeight: 1,\n cursor: \"pointer\",\n};\n","import type { ListTableEditorRequest } from \"@canvas-components/list-table\";\r\n\r\nexport function toNumberValue(value: unknown) {\r\n if (typeof value === \"number\" && Number.isFinite(value)) {\r\n return value;\r\n }\r\n if (typeof value === \"string\" && value.trim().length > 0) {\r\n const nextValue = Number(value);\r\n return Number.isFinite(nextValue) ? nextValue : null;\r\n }\r\n return null;\r\n}\r\n\r\nexport function toNumericProp(value?: string | number) {\r\n if (typeof value === \"number\") {\r\n return value;\r\n }\r\n if (typeof value === \"string\" && value.trim().length > 0) {\r\n const nextValue = Number(value);\r\n return Number.isFinite(nextValue) ? nextValue : undefined;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction resolvePadding(value: number | undefined, fallback = 0) {\r\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0\r\n ? value\r\n : fallback;\r\n}\r\n\r\nfunction resolveEditorControlSize(request: ListTableEditorRequest) {\r\n const targetRect = request.hostRect ?? request.rect;\r\n const height = Math.max(targetRect.height - 2, 1);\r\n const fontSize =\r\n typeof request.theme.fontSize === \"number\" &&\r\n Number.isFinite(request.theme.fontSize) &&\r\n request.theme.fontSize > 0\r\n ? request.theme.fontSize\r\n : undefined;\r\n const paddingInline = resolvePadding(request.theme.paddingInline);\r\n const paddingBlock = resolvePadding(request.theme.paddingBlock);\r\n const contentZoom =\r\n typeof request.theme.contentZoom === \"number\" &&\r\n Number.isFinite(request.theme.contentZoom) &&\r\n request.theme.contentZoom > 0\r\n ? request.theme.contentZoom\r\n : 1;\r\n return { height, fontSize, paddingInline, paddingBlock, contentZoom };\r\n}\r\n\r\n/**\r\n * 编辑表单控件样式:使用缩放后的像素尺寸覆盖默认 32px 控件高度。\r\n * 时间 / 颜色 / 下拉等嵌套组件不能依赖 `height: 100%` 的 CSS 变量回退。\r\n */\r\nexport function getEditorInputStyle(request: ListTableEditorRequest) {\r\n const { height, fontSize, paddingInline, paddingBlock, contentZoom } =\r\n resolveEditorControlSize(request);\r\n\r\n return {\r\n width: \"100%\",\r\n height,\r\n minHeight: height,\r\n color: request.theme.cellColor ?? request.theme.textColor,\r\n fontFamily: request.theme.fontFamily,\r\n fontSize,\r\n // 用像素 token,确保 select/time/color 触发器与内部 Input 同步缩放。\r\n [\"--canvas-react-control-height\" as string]: `${height}px`,\r\n [\"--canvas-react-font-size\" as string]:\r\n fontSize != null ? `${fontSize}px` : undefined,\r\n [\"--canvas-react-control-padding-inline\" as string]: `${paddingInline}px`,\r\n [\"--canvas-react-control-padding-block\" as string]: `${paddingBlock}px`,\r\n [\"--canvas-react-content-zoom\" as string]: String(contentZoom),\r\n boxSizing: \"border-box\" as const,\r\n };\r\n}\r\n\r\n/**\r\n * 编辑浮层容器样式。\r\n * 尺寸跟随单元格(含缩放后的 hostRect),并注入表单组件 CSS 变量。\r\n */\r\nexport function resolveEditorOverlayStyle(params: {\r\n rect: ListTableEditorRequest[\"rect\"];\r\n hostRect?: ListTableEditorRequest[\"hostRect\"];\r\n fontSize?: number;\r\n paddingInline?: number;\r\n paddingBlock?: number;\r\n contentZoom?: number;\r\n}) {\r\n const { rect, hostRect, fontSize, paddingInline, paddingBlock, contentZoom } =\r\n params;\r\n const targetRect = hostRect ?? rect;\r\n const height = Math.max(targetRect.height - 2, 1);\r\n const resolvedFontSize =\r\n typeof fontSize === \"number\" && Number.isFinite(fontSize) && fontSize > 0\r\n ? fontSize\r\n : undefined;\r\n const resolvedPaddingInline = resolvePadding(paddingInline);\r\n const resolvedPaddingBlock = resolvePadding(paddingBlock);\r\n const resolvedContentZoom =\r\n typeof contentZoom === \"number\" &&\r\n Number.isFinite(contentZoom) &&\r\n contentZoom > 0\r\n ? contentZoom\r\n : 1;\r\n\r\n return {\r\n position: hostRect ? (\"absolute\" as const) : (\"fixed\" as const),\r\n left: targetRect.x,\r\n top: targetRect.y + 1,\r\n width: Math.max(targetRect.width, 1),\r\n height,\r\n minHeight: height,\r\n zIndex: 1200,\r\n boxSizing: \"border-box\" as const,\r\n // 覆盖表单组件 token,使输入框高度/字号/内边距跟随表格缩放。\r\n [\"--canvas-react-control-height\" as string]: `${height}px`,\r\n [\"--canvas-react-control-padding-inline\" as string]: `${resolvedPaddingInline}px`,\r\n [\"--canvas-react-control-padding-block\" as string]: `${resolvedPaddingBlock}px`,\r\n [\"--canvas-react-content-zoom\" as string]: String(resolvedContentZoom),\r\n ...(resolvedFontSize != null\r\n ? {\r\n [\"--canvas-react-font-size\" as string]: `${resolvedFontSize}px`,\r\n fontSize: resolvedFontSize,\r\n }\r\n : null),\r\n };\r\n}\r\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n} from \"react\";\nimport type {\n ListTableEditorNavigateDirection,\n ListTableEditorRequest,\n} from \"@canvas-components/list-table\";\nimport {\n ReactContentScaleProvider,\n ReactDatePicker,\n ReactDateRangePicker,\n ReactDateTimePicker,\n ReactDateTimeRangePicker,\n ReactColorPicker,\n ReactAutoComplete,\n ReactInput,\n ReactInputRange,\n ReactMonthPicker,\n ReactNumberInput,\n ReactQuarterPicker,\n ReactSelect,\n ReactTimePicker,\n ReactTimeRangePicker,\n ReactYearPicker,\n} from \"@canvas-components/react-components\";\nimport {\n getEditorInputStyle,\n resolveEditorOverlayStyle,\n toNumberValue,\n toNumericProp,\n} from \"./utils\";\n\nexport function ReactTableEditorOverlay(props: {\n request: ListTableEditorRequest;\n}) {\n const { request } = props;\n const editorHostRef = useRef<HTMLDivElement | null>(null);\n const style = resolveEditorOverlayStyle({\n rect: request.rect,\n hostRect: request.hostRect,\n fontSize: request.theme.fontSize,\n paddingInline: request.theme.paddingInline,\n paddingBlock: request.theme.paddingBlock,\n contentZoom: request.theme.contentZoom,\n });\n const contentZoom =\n typeof request.theme.contentZoom === \"number\" &&\n Number.isFinite(request.theme.contentZoom) &&\n request.theme.contentZoom > 0\n ? request.theme.contentZoom\n : 1;\n\n useLayoutEffect(() => {\n const input =\n editorHostRef.current?.querySelector<HTMLInputElement>(\"input\");\n if (!input) {\n return;\n }\n focusAndSelectEditorInput(input);\n }, [request]);\n\n // 弹层挂载到 document.body,需要通过 ContentScale 同步表格缩放。\n return (\n <ReactContentScaleProvider scale={contentZoom}>\n <div key={request.editorKey} ref={editorHostRef}>\n {renderEditorByType(request, style)}\n </div>\n </ReactContentScaleProvider>\n );\n}\n\nfunction renderEditorByType(\n request: ListTableEditorRequest,\n style: CSSProperties,\n) {\n switch (request.config.valueType ?? \"text\") {\n case \"number\":\n return <NumberEditor request={request} style={style} />;\n case \"input-range\":\n return <InputRangeEditor request={request} style={style} />;\n case \"year\":\n return <YearEditor request={request} style={style} />;\n case \"quarter\":\n return <QuarterEditor request={request} style={style} />;\n case \"month\":\n return <MonthEditor request={request} style={style} />;\n case \"date\":\n return <DateEditor request={request} style={style} />;\n case \"date-range\":\n return <DateRangeEditor request={request} style={style} />;\n case \"time\":\n return <TimeEditor request={request} style={style} />;\n case \"datetime\":\n return <DateTimeEditor request={request} style={style} />;\n case \"datetime-range\":\n return <DateTimeRangeEditor request={request} style={style} />;\n case \"timerange\":\n return <TimeRangeEditor request={request} style={style} />;\n case \"color\":\n return <ColorEditor request={request} style={style} />;\n case \"select\":\n return <SelectEditor request={request} style={style} />;\n case \"auto-complete\":\n return <AutoCompleteEditor request={request} style={style} />;\n default:\n return <TextEditor request={request} style={style} />;\n }\n}\n\nfunction TextEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(String(request.value ?? \"\"));\n const hostRef = useRef<HTMLDivElement | null>(null);\n const skipBlurCommitRef = useRef(false);\n\n useLayoutEffect(() => {\n const input = hostRef.current?.querySelector<HTMLInputElement>(\"input\");\n focusAndSelectEditorInput(input);\n }, [request]);\n\n useEffect(() => {\n setValue(String(request.value ?? \"\"));\n }, [request.value]);\n\n return (\n <div ref={hostRef} style={style}>\n <ReactInput\n value={value}\n placeholder={request.config.placeholder ?? \"\"}\n onChange={(event) => {\n const nextValue = event.target.value;\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction NumberEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<number | null>(\n toNumberValue(request.value),\n );\n const hostRef = useRef<HTMLDivElement | null>(null);\n const skipBlurCommitRef = useRef(false);\n\n useLayoutEffect(() => {\n const input = hostRef.current?.querySelector<HTMLInputElement>(\"input\");\n focusAndSelectEditorInput(input);\n }, [request]);\n\n useEffect(() => {\n setValue(toNumberValue(request.value));\n }, [request.value]);\n\n return (\n <div ref={hostRef} style={style}>\n <ReactNumberInput\n value={value}\n min={toNumericProp(request.config.min)}\n max={toNumericProp(request.config.max)}\n step={toNumericProp(request.config.step)}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction InputRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<[number | null, number | null]>(\n toNumberRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toNumberRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactInputRange\n value={value}\n autoFocus\n min={toNumericProp(request.config.min)}\n max={toNumericProp(request.config.max)}\n step={toNumericProp(request.config.step)}\n rangeSeparator={request.config.rangeSeparator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction YearEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactYearPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction QuarterEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactQuarterPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction MonthEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactMonthPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactDatePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction SelectEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const options = request.config.options ?? [];\n const [value, setValue] = useState<string | undefined>(\n request.value == null ? undefined : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? undefined : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactSelect\n value={value}\n autoFocus\n showArrow={false}\n showSearch={request.config.showSearch}\n filterOption={request.config.filterOption}\n options={options}\n onChange={(nextValue, info) => {\n const resolvedValue = String(nextValue);\n setValue(resolvedValue);\n request.onChange(\n options.find((option) => String(option.value) === resolvedValue)\n ?.value ?? resolvedValue,\n );\n if (info.trigger === \"mouse\") {\n request.onCommit();\n }\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction AutoCompleteEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<string | number>(\n request.value == null ? \"\" : String(request.value),\n );\n const [options, setOptions] = useState(request.config.options ?? []);\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactAutoComplete\n value={value}\n autoFocus\n showArrow={false}\n options={options}\n placeholder={request.config.placeholder ?? \"\"}\n onChange={(nextValue, info) => {\n setValue(nextValue);\n request.onChange(nextValue);\n if (info.trigger === \"mouse\") {\n request.onCommit();\n }\n }}\n onPressEnter={async (input) => {\n const nextOptions = await request.config.onPressEnter?.(input);\n if (nextOptions) {\n setOptions(nextOptions);\n }\n return nextOptions;\n }}\n onBlur={() => {\n if (!skipBlurCommitRef.current) request.onCommit();\n skipBlurCommitRef.current = false;\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction ColorEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactColorPicker\n value={value}\n autoFocus\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactDateRangePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction TimeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactTimePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateTimeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactDateTimePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateTimeRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactDateTimeRangePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction TimeRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactTimeRangePicker\n value={value}\n autoFocus\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction handleEditorNavigationKey(\n event: KeyboardEvent<HTMLInputElement>,\n request: ListTableEditorRequest,\n skipBlurCommitRef: { current: boolean },\n) {\n const direction = resolveNavigationDirection(event);\n if (!direction || !request.onNavigate) {\n return false;\n }\n\n event.preventDefault();\n skipBlurCommitRef.current = true;\n request.onNavigate(direction);\n return true;\n}\n\nfunction handleRangeInputTab(event: KeyboardEvent<HTMLInputElement>) {\n if (event.key !== \"Tab\") {\n return false;\n }\n const host = event.currentTarget.closest<HTMLElement>(\n \"[data-list-table-range-editor]\",\n );\n const inputs = Array.from(\n host?.querySelectorAll<HTMLInputElement>(\"input\") ?? [],\n );\n const currentIndex = inputs.indexOf(event.currentTarget);\n const nextIndex = event.shiftKey ? currentIndex - 1 : currentIndex + 1;\n const nextInput = inputs[nextIndex];\n if (!nextInput) {\n return false;\n }\n\n event.preventDefault();\n focusAndSelectEditorInput(nextInput);\n return true;\n}\n\nfunction focusAndSelectEditorInput(input?: HTMLInputElement | null) {\n if (!input) {\n return;\n }\n input.focus();\n try {\n input.select();\n } catch {\n // number 等输入类型不支持文本选择,但仍需保持焦点。\n }\n}\n\nfunction handleEditorEscapeKey(\n event: KeyboardEvent<HTMLInputElement>,\n request: ListTableEditorRequest,\n) {\n if (event.key !== \"Escape\") {\n return;\n }\n\n event.preventDefault();\n request.onCancel();\n}\n\nfunction toRangeTuple(value: unknown): [string, string] {\n if (!Array.isArray(value)) {\n return [\"\", \"\"];\n }\n\n return [String(value[0] ?? \"\"), String(value[1] ?? \"\")];\n}\n\nfunction toNumberRangeTuple(value: unknown): [number | null, number | null] {\n if (!Array.isArray(value)) {\n return [null, null];\n }\n return [toNumberValue(value[0]), toNumberValue(value[1])];\n}\n\nfunction handleEditorBlur(\n _event: FocusEvent<HTMLInputElement>,\n skipBlurCommitRef: { current: boolean },\n request: ListTableEditorRequest,\n) {\n if (skipBlurCommitRef.current) {\n skipBlurCommitRef.current = false;\n return;\n }\n\n request.onCommit();\n}\n\nfunction resolveNavigationDirection(\n event: KeyboardEvent<HTMLInputElement>,\n): ListTableEditorNavigateDirection | null {\n if (event.key === \"ArrowUp\") {\n return \"up\";\n }\n\n if (event.key === \"ArrowDown\") {\n return \"down\";\n }\n\n if (event.key === \"Tab\") {\n return event.shiftKey ? \"prev\" : \"next\";\n }\n\n return null;\n}\n","import { useState, type CSSProperties } from \"react\";\r\nimport type { FixedPopupConfig } from \"@canvas-components/list-table\";\r\nimport { ReactPopup } from \"@canvas-components/react-components\";\r\n\r\nexport function ReactTableFixedPopupView(props: {\r\n request: FixedPopupConfig | null;\r\n}) {\r\n const { request } = props;\r\n\r\n if (!request) {\r\n return null;\r\n }\r\n\r\n const surfaceStyle: CSSProperties = {\r\n minWidth: 160,\r\n padding: 8,\r\n };\r\n\r\n return (\r\n <ReactPopup\r\n open\r\n anchorRect={request.anchorRect}\r\n offset={8}\r\n minWidth={160}\r\n onOpenChange={(open) => {\r\n if (!open) {\r\n request.onClose();\r\n }\r\n }}\r\n surfaceStyle={surfaceStyle}\r\n >\r\n <div>\r\n <PopupAction\r\n active={request.currentFixed === \"left\"}\r\n onClick={() => request.onSelect(\"left\")}\r\n >\r\n 固定到左侧\r\n </PopupAction>\r\n <PopupAction\r\n active={request.currentFixed === \"right\"}\r\n onClick={() => request.onSelect(\"right\")}\r\n >\r\n 固定到右侧\r\n </PopupAction>\r\n <PopupAction onClick={() => request.onSelect(\"none\")}>取消固定</PopupAction>\r\n </div>\r\n </ReactPopup>\r\n );\r\n}\r\n\r\nfunction PopupAction(props: {\r\n active?: boolean;\r\n onClick: () => void;\r\n children: string;\r\n}) {\r\n const { active = false, onClick, children } = props;\r\n const [hovered, setHovered] = useState(false);\r\n const backgroundColor = active\r\n ? hovered\r\n ? \"#bae0ff\"\r\n : \"#e6f4ff\"\r\n : hovered\r\n ? \"#f5faff\"\r\n : \"transparent\";\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={onClick}\r\n onMouseEnter={() => {\r\n setHovered(true);\r\n }}\r\n onMouseLeave={() => {\r\n setHovered(false);\r\n }}\r\n style={{\r\n display: \"block\",\r\n width: \"100%\",\r\n height: 32,\r\n marginBottom: 4,\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: backgroundColor,\r\n color: active ? \"#1677ff\" : \"#374151\",\r\n textAlign: \"left\",\r\n padding: \"0 10px\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\n","import type { FilterPanelConfig } from \"@canvas-components/list-table\";\nimport {\n ReactFilterPanel,\n type ReactFilterPanelRequest,\n} from \"@canvas-components/react-components\";\n\n/** 将 ListTable 过滤请求接入共享过滤面板。 */\nexport function ReactTableFilterPanelView(props: {\n request: FilterPanelConfig | null;\n}) {\n return (\n <ReactFilterPanel\n request={props.request as ReactFilterPanelRequest | null}\n />\n );\n}\n","import type { PaginationConfig } from \"@canvas-components/list-table\";\r\nimport { ReactPagination } from \"@canvas-components/react-components\";\r\n\r\nexport function ReactTablePaginationView(props: {\r\n config: PaginationConfig | null;\r\n}) {\r\n const { config } = props;\r\n\r\n if (!config) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n paddingTop: 12,\r\n }}\r\n >\r\n <ReactPagination\r\n current={config.current}\r\n total={config.total}\r\n pageSize={config.pageSize}\r\n pageSizeOptions={config.pageSizeOptions}\r\n disabled={config.disabled}\r\n showSizeChanger={config.showSizeChanger}\r\n showQuickJumper={config.showQuickJumper}\r\n showLessItems={config.showLessItems}\r\n simple={config.simple}\r\n showTotal={config.showTotal}\r\n onChange={(page, pageSize) => {\r\n config.onChange?.(page, pageSize);\r\n }}\r\n onPageSizeChange={(page, pageSize) => {\r\n config.onPageSizeChange?.(page, pageSize);\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useRef } from \"react\";\r\nimport type { ListTableDangerConfirmRequest } from \"@canvas-components/list-table\";\r\nimport { ReactPopconfirm } from \"@canvas-components/react-components\";\r\n\r\nexport function ReactTableDangerConfirmView(props: {\r\n request: ListTableDangerConfirmRequest | null;\r\n onClose: () => void;\r\n}) {\r\n const { request, onClose } = props;\r\n const confirmingRef = useRef(false);\r\n\r\n useEffect(() => {\r\n confirmingRef.current = false;\r\n }, [request]);\r\n\r\n if (!request) {\r\n return null;\r\n }\r\n\r\n return (\r\n <ReactPopconfirm\r\n open\r\n title={request.title}\r\n description={request.description}\r\n okText={request.okText}\r\n cancelText={request.cancelText}\r\n placement=\"topLeft\"\r\n onConfirm={() => {\r\n confirmingRef.current = true;\r\n try {\r\n request.onConfirm();\r\n } finally {\r\n onClose();\r\n }\r\n }}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n return;\r\n }\r\n if (confirmingRef.current) {\r\n confirmingRef.current = false;\r\n return;\r\n }\r\n request.onCancel();\r\n onClose();\r\n }}\r\n style={{\r\n position: \"fixed\",\r\n left: request.anchorRect.x,\r\n top: request.anchorRect.y,\r\n width: Math.max(request.anchorRect.width, 1),\r\n height: Math.max(request.anchorRect.height, 1),\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <span aria-hidden=\"true\" />\r\n </ReactPopconfirm>\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\r\nimport type { ListTableTooltipRequest } from \"@canvas-components/list-table\";\r\n\r\n/**\r\n * 表格 tooltip 视图,字号与内边距跟随表格 contentZoom。\r\n */\r\nexport function ReactTableTooltipView(props: {\r\n request: ListTableTooltipRequest | null;\r\n}) {\r\n const { request } = props;\r\n if (!request) {\r\n return null;\r\n }\r\n\r\n const zoom =\r\n typeof request.contentZoom === \"number\" &&\r\n Number.isFinite(request.contentZoom) &&\r\n request.contentZoom > 0\r\n ? request.contentZoom\r\n : 1;\r\n const fontSize = 12 * zoom;\r\n const paddingBlock = 6 * zoom;\r\n const paddingInline = 10 * zoom;\r\n const borderRadius = 6 * zoom;\r\n const maxWidth = 320 * zoom;\r\n\r\n const style: CSSProperties = {\r\n position: \"fixed\",\r\n left: request.x,\r\n top: request.y,\r\n transform: \"translate(-50%, 0)\",\r\n maxWidth,\r\n padding: `${paddingBlock}px ${paddingInline}px`,\r\n borderRadius,\r\n background:\r\n request.variant === \"error\" ? \"#ffffff\" : \"rgba(17, 24, 39, 0.92)\",\r\n color: request.variant === \"error\" ? \"#ff4d4f\" : \"#fff\",\r\n fontSize,\r\n lineHeight: 1.5,\r\n boxShadow:\r\n request.variant === \"error\"\r\n ? \"0 10px 30px rgba(255, 77, 79, 0.16)\"\r\n : \"0 10px 30px rgba(15, 23, 42, 0.18)\",\r\n border:\r\n request.variant === \"error\" ? \"1px solid rgba(255, 77, 79, 0.2)\" : \"none\",\r\n pointerEvents: \"none\",\r\n zIndex: 1200,\r\n whiteSpace: \"pre-wrap\",\r\n wordBreak: \"break-word\",\r\n };\r\n\r\n return <div style={style}>{request.content}</div>;\r\n}\r\n","import type { SVGProps } from \"react\";\r\n\r\nfunction ToolbarIcon(props: SVGProps<SVGSVGElement> & { path: string }) {\r\n const { path, ...svgProps } = props;\r\n return (\r\n <svg\r\n viewBox=\"64 64 896 896\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n {...svgProps}\r\n >\r\n <path d={path} />\r\n </svg>\r\n );\r\n}\r\n\r\nexport function FullscreenOutlined() {\r\n return <ToolbarIcon path=\"M290 236.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0013.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 000 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 00-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\" />;\r\n}\r\n\r\nexport function FullscreenExitOutlined() {\r\n return <ToolbarIcon path=\"M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 000 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 00391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 00-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\" />;\r\n}\r\n\r\nexport function ReloadOutlined() {\r\n return <ToolbarIcon path=\"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z\" />;\r\n}\r\n\r\nexport function ExportOutlined() {\r\n return <ToolbarIcon path=\"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM770.87 199.13l-52.2-52.2a8.01 8.01 0 014.7-13.6l179.4-21c5.1-.6 9.5 3.7 8.9 8.9l-21 179.4c-.8 6.6-8.9 9.4-13.6 4.7l-52.4-52.4-256.2 256.2a8.03 8.03 0 01-11.3 0l-42.4-42.4a8.03 8.03 0 010-11.3l256.1-256.3z\" />;\r\n}\r\n\r\nexport function ColumnHeightOutlined() {\r\n return <ToolbarIcon path=\"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 00-11.3 0L403.6 366.3a7.23 7.23 0 005.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z\" />;\r\n}\r\n\r\nexport function SettingOutlined() {\r\n return <ToolbarIcon path=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" />;\r\n}\r\n\r\nexport function HolderOutlined() {\r\n return (\r\n <ToolbarIcon path=\"M300 276.5a56 56 0 1056-97 56 56 0 00-56 97zm0 284a56 56 0 1056-97 56 56 0 00-56 97zM640 228a56 56 0 10112 0 56 56 0 00-112 0zm0 284a56 56 0 10112 0 56 56 0 00-112 0zM300 844.5a56 56 0 1056-97 56 56 0 00-56 97zM640 796a56 56 0 10112 0 56 56 0 00-112 0z\" />\r\n );\r\n}\r\n","import {\r\n useEffect,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type PointerEvent as ReactPointerEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nexport interface SortableListItem {\r\n key: string;\r\n parentKey: string;\r\n label: ReactNode;\r\n}\r\n\r\nexport function SortableList<T extends SortableListItem>(props: {\r\n items: T[];\r\n onOrderChange: (parentKey: string, orderedKeys: string[]) => void;\r\n renderItem: (\r\n item: T,\r\n handleProps: {\r\n onPointerDown: (event: ReactPointerEvent<HTMLElement>) => void;\r\n },\r\n ) => ReactNode;\r\n}) {\r\n const { items, onOrderChange } = props;\r\n const rootRef = useRef<HTMLDivElement | null>(null);\r\n const dragRef = useRef<{\r\n source: T;\r\n target: T;\r\n layouts: SortableItemLayout[];\r\n offsetY: number;\r\n width: number;\r\n left: number;\r\n height: number;\r\n } | null>(null);\r\n const [dragState, setDragState] = useState<{\r\n sourceKey: string;\r\n targetKey: string;\r\n pointerY: number;\r\n } | null>(null);\r\n\r\n useEffect(\r\n () => () => {\r\n document.body.classList.remove(\"react-list-table-sorting\");\r\n document.body.style.removeProperty(\"user-select\");\r\n },\r\n [],\r\n );\r\n\r\n useEffect(() => {\r\n if (!dragState) return;\r\n const handleMove = (event: PointerEvent) => {\r\n const current = dragRef.current;\r\n if (!current) return;\r\n const target = resolveClosestSortableItem({\r\n items,\r\n parentKey: current.source.parentKey,\r\n layouts: current.layouts,\r\n overlayCenterY: event.clientY - current.offsetY + current.height / 2,\r\n });\r\n if (target) {\r\n current.target = target;\r\n }\r\n setDragState({\r\n sourceKey: current.source.key,\r\n targetKey: current.target.key,\r\n pointerY: event.clientY,\r\n });\r\n };\r\n const handleEnd = () => {\r\n const current = dragRef.current;\r\n if (current && current.source.key !== current.target.key) {\r\n const siblings = items.filter(\r\n (item) => item.parentKey === current.source.parentKey,\r\n );\r\n const orderedKeys = resolveNextSortableOrder(\r\n siblings.map((item) => item.key),\r\n current.source.key,\r\n current.target.key,\r\n );\r\n if (orderedKeys) {\r\n onOrderChange(current.source.parentKey, orderedKeys);\r\n }\r\n }\r\n dragRef.current = null;\r\n setDragState(null);\r\n document.body.classList.remove(\"react-list-table-sorting\");\r\n document.body.style.removeProperty(\"user-select\");\r\n };\r\n window.addEventListener(\"pointermove\", handleMove);\r\n window.addEventListener(\"pointerup\", handleEnd, { once: true });\r\n window.addEventListener(\"pointercancel\", handleEnd, { once: true });\r\n return () => {\r\n window.removeEventListener(\"pointermove\", handleMove);\r\n window.removeEventListener(\"pointerup\", handleEnd);\r\n window.removeEventListener(\"pointercancel\", handleEnd);\r\n };\r\n }, [dragState != null, items, onOrderChange]);\r\n\r\n const sourceIndex = dragState\r\n ? items.findIndex((item) => item.key === dragState.sourceKey)\r\n : -1;\r\n const targetIndex = dragState\r\n ? items.findIndex((item) => item.key === dragState.targetKey)\r\n : -1;\r\n\r\n return (\r\n <div ref={rootRef}>\r\n {items.map((item, index) => {\r\n const style = resolveSortableTransform(\r\n index,\r\n sourceIndex,\r\n targetIndex,\r\n dragRef.current?.height ?? 0,\r\n );\r\n return (\r\n <div\r\n key={item.key}\r\n data-sortable-key={item.key}\r\n className={dragState?.sourceKey === item.key ? \"dragging\" : \"\"}\r\n style={style}\r\n >\r\n {props.renderItem(item, {\r\n onPointerDown: (event) => {\r\n if (event.button !== 0) return;\r\n const row = event.currentTarget.closest<HTMLElement>(\r\n \"[data-sortable-key]\",\r\n );\r\n if (!row) return;\r\n const rect = row.getBoundingClientRect();\r\n dragRef.current = {\r\n source: item,\r\n target: item,\r\n layouts: collectSortableItemLayouts(rootRef.current),\r\n offsetY: event.clientY - rect.top,\r\n width: rect.width,\r\n left: rect.left,\r\n height: rect.height,\r\n };\r\n setDragState({\r\n sourceKey: item.key,\r\n targetKey: item.key,\r\n pointerY: event.clientY,\r\n });\r\n document.body.classList.add(\"react-list-table-sorting\");\r\n document.body.style.userSelect = \"none\";\r\n event.preventDefault();\r\n },\r\n })}\r\n </div>\r\n );\r\n })}\r\n {dragState && dragRef.current\r\n ? createPortal(\r\n <div\r\n className=\"react-list-table-sort-overlay\"\r\n style={{\r\n left: dragRef.current.left,\r\n top: dragState.pointerY - dragRef.current.offsetY,\r\n width: dragRef.current.width,\r\n height: dragRef.current.height,\r\n }}\r\n >\r\n {props.renderItem(dragRef.current.source, {\r\n onPointerDown: (event) => event.preventDefault(),\r\n })}\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n\r\nexport function resolveNextSortableOrder(\r\n currentKeys: string[],\r\n sourceKey: string,\r\n targetKey: string,\r\n) {\r\n const sourceIndex = currentKeys.indexOf(sourceKey);\r\n const targetIndex = currentKeys.indexOf(targetKey);\r\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\r\n return null;\r\n }\r\n const nextKeys = [...currentKeys];\r\n const [source] = nextKeys.splice(sourceIndex, 1);\r\n nextKeys.splice(targetIndex, 0, source);\r\n return nextKeys;\r\n}\r\n\r\ninterface SortableItemLayout {\r\n key: string;\r\n centerY: number;\r\n}\r\n\r\nfunction collectSortableItemLayouts(root: HTMLDivElement | null) {\r\n if (!root) return [];\r\n return Array.from(\r\n root.querySelectorAll<HTMLElement>(\"[data-sortable-key]\"),\r\n ).map((element) => {\r\n const rect = element.getBoundingClientRect();\r\n return {\r\n key: element.dataset.sortableKey ?? \"\",\r\n centerY: rect.top + rect.height / 2,\r\n };\r\n });\r\n}\r\n\r\nexport function resolveClosestSortableItem<T extends SortableListItem>(params: {\r\n items: T[];\r\n parentKey: string;\r\n layouts: SortableItemLayout[];\r\n overlayCenterY: number;\r\n}) {\r\n let closestItem: T | null = null;\r\n let closestDistance = Number.POSITIVE_INFINITY;\r\n params.layouts.forEach((layout) => {\r\n const item = params.items.find((candidate) => candidate.key === layout.key);\r\n if (!item || item.parentKey !== params.parentKey) return;\r\n const distance = Math.abs(params.overlayCenterY - layout.centerY);\r\n if (distance < closestDistance) {\r\n closestDistance = distance;\r\n closestItem = item;\r\n }\r\n });\r\n return closestItem;\r\n}\r\n\r\nfunction resolveSortableTransform(\r\n index: number,\r\n sourceIndex: number,\r\n targetIndex: number,\r\n height: number,\r\n): CSSProperties {\r\n let translateY = 0;\r\n if (sourceIndex < targetIndex && index > sourceIndex && index <= targetIndex) {\r\n translateY = -height;\r\n } else if (\r\n sourceIndex > targetIndex &&\r\n index >= targetIndex &&\r\n index < sourceIndex\r\n ) {\r\n translateY = height;\r\n }\r\n return {\r\n transform: translateY ? `translate3d(0, ${translateY}px, 0)` : undefined,\r\n transition: sourceIndex >= 0 ? \"transform 180ms ease\" : undefined,\r\n };\r\n}\r\n","import styleInject from '#style-inject';styleInject(\".react-list-table-shell {\\n background: #fff;\\n}\\n.react-list-table-titlebar {\\n height: 44px;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 12px 0;\\n box-sizing: border-box;\\n background: #fff;\\n}\\n.react-list-table-shell-fullscreen {\\n width: 100% !important;\\n height: 100% !important;\\n}\\n.react-list-table-shell-fullscreen .canvas-list-table-root {\\n height: 100% !important;\\n}\\n.react-list-table-title {\\n min-width: 0;\\n color: #1f2937;\\n font-size: 14px;\\n font-weight: 600;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.react-list-table-tools {\\n display: flex;\\n align-items: center;\\n gap: 14px;\\n color: #475569;\\n}\\n.react-list-table-tool-wrap {\\n position: relative;\\n display: inline-flex;\\n}\\n.react-list-table-tool {\\n width: 20px;\\n height: 24px;\\n padding: 0;\\n border: 0;\\n color: inherit;\\n background: transparent;\\n font: 16px/24px sans-serif;\\n cursor: pointer;\\n}\\n.react-list-table-tool:hover {\\n color: #1677ff;\\n}\\n.react-list-table-tool-menu,\\n.react-list-table-column-setting {\\n position: absolute;\\n z-index: 120;\\n top: 28px;\\n right: 0;\\n min-width: 112px;\\n padding: 6px;\\n border: 1px solid #e5e7eb;\\n border-radius: 6px;\\n background: #fff;\\n box-shadow: 0 8px 24px rgba(15, 23, 42, .14);\\n}\\n.react-list-table-tool-menu button {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n width: 100%;\\n padding: 6px 10px;\\n border: 0;\\n border-radius: 4px;\\n background: transparent;\\n text-align: left;\\n cursor: pointer;\\n}\\n.react-list-table-tool-menu button.active::after {\\n content: \\\"\\\\2713\\\";\\n margin-left: 12px;\\n font-size: 12px;\\n}\\n.react-list-table-tool-menu button:hover,\\n.react-list-table-tool-menu button.active {\\n color: #1677ff;\\n background: #e6f4ff;\\n}\\n.react-list-table-column-setting {\\n width: 328px;\\n max-height: 360px;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n}\\n.react-list-table-column-setting-head {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 4px 6px 8px;\\n border-bottom: 1px solid #f0f0f0;\\n flex: 0 0 auto;\\n}\\n.react-list-table-column-setting-head button {\\n border: 0;\\n color: #1677ff;\\n background: transparent;\\n cursor: pointer;\\n}\\n.react-list-table-column-setting-body {\\n flex: 1 1 auto;\\n min-height: 0;\\n overflow: auto;\\n}\\n.react-list-table-column-item {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n justify-content: space-between;\\n padding: 7px 6px;\\n box-sizing: border-box;\\n cursor: pointer;\\n}\\n.react-list-table-column-main,\\n.react-list-table-column-actions {\\n display: inline-flex;\\n align-items: center;\\n gap: 8px;\\n}\\n.react-list-table-column-main {\\n min-width: 0;\\n}\\n.react-list-table-column-actions {\\n flex: 0 0 auto;\\n}\\n.react-list-table-column-actions > .canvas-react-select-wrap {\\n flex: 0 0 96px;\\n width: 96px;\\n height: 24px;\\n}\\n.react-list-table-column-label {\\n min-width: 64px;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.react-list-table-column-width-input {\\n height: 22px;\\n padding-inline: 5px;\\n}\\n.react-list-table-column-fixed-input {\\n height: 22px;\\n padding-inline: 6px;\\n font-size: 12px;\\n}\\n.react-list-table-column-setting label.dragging {\\n opacity: 0.45;\\n background: #e6f4ff;\\n}\\n.react-list-table-column-setting [data-sortable-key].dragging {\\n opacity: 0.28;\\n}\\n.react-list-table-column-drag {\\n color: #94a3b8;\\n display: inline-flex;\\n font-size: 14px;\\n cursor: grab;\\n user-select: none;\\n}\\nbody.react-list-table-sorting,\\nbody.react-list-table-sorting * {\\n cursor: grabbing !important;\\n}\\n.react-list-table-sort-overlay {\\n position: fixed;\\n z-index: 1400;\\n display: block;\\n padding: 0;\\n box-sizing: border-box;\\n color: #334155;\\n background: #fff;\\n border: 1px solid #91caff;\\n border-radius: 6px;\\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.18);\\n pointer-events: none;\\n}\\n.react-list-table-sort-overlay .react-list-table-column-item {\\n width: 100%;\\n height: 100%;\\n}\\n\")","import { useEffect, useRef, useState, type ReactNode } from \"react\";\nimport {\n ColumnHeightOutlined,\n ExportOutlined,\n FullscreenExitOutlined,\n FullscreenOutlined,\n HolderOutlined,\n ReloadOutlined,\n SettingOutlined,\n} from \"./toolbar-icons\";\nimport type {\n ListTableColumn,\n ListTableExportXlsxOptions,\n} from \"@canvas-components/list-table\";\nimport {\n ReactNumberInput,\n ReactSelect,\n} from \"@canvas-components/react-components\";\nimport type { ReactListTableToolbarOptions } from \"../../types\";\nimport { SortableList } from \"./sortable-list\";\nimport \"./style.css\";\n\nexport function ReactTableToolbar<RecordType>(props: {\n title?: ReactNode;\n toolbar?: false | ReactListTableToolbarOptions;\n columns: ListTableColumn<RecordType>[];\n density: number | \"auto\" | undefined;\n hostRef: React.RefObject<HTMLDivElement | null>;\n onFullscreenChange?: (isFullscreen: boolean) => void;\n onDensityChange: (rowHeight: 32 | 48 | 56) => void;\n onExport: (options?: ListTableExportXlsxOptions) => void;\n onColumnVisibilityChange: (columnKey: string, visible: boolean) => void;\n onColumnWidthChange: (columnKey: string, width: number) => void;\n onColumnFixedChange: (\n columnKey: string,\n fixed: \"left\" | \"right\" | undefined,\n ) => void;\n onColumnOrderChange: (parentKey: string, orderedKeys: string[]) => void;\n onResetColumns: () => void;\n}) {\n const { toolbar, title } = props;\n const [densityOpen, setDensityOpen] = useState(false);\n const [settingOpen, setSettingOpen] = useState(false);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const hasToolbar = toolbar !== undefined && toolbar !== false;\n\n useEffect(() => {\n const close = (event: MouseEvent) => {\n if (\n (event.target as HTMLElement | null)?.closest(\".canvas-react-popup\")\n ) {\n return;\n }\n if (!rootRef.current?.contains(event.target as Node)) {\n setDensityOpen(false);\n setSettingOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", close);\n return () => document.removeEventListener(\"mousedown\", close);\n }, []);\n\n useEffect(() => {\n const handleFullscreenChange = () => {\n const fullscreenNode =\n (typeof toolbar === \"object\" ? toolbar.getFullscreenNode?.() : null) ??\n props.hostRef.current;\n const nextIsFullscreen = document.fullscreenElement === fullscreenNode;\n setIsFullscreen(nextIsFullscreen);\n props.onFullscreenChange?.(nextIsFullscreen);\n };\n handleFullscreenChange();\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () =>\n document.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n }, [props.hostRef, props.onFullscreenChange, toolbar]);\n\n if (!title && !hasToolbar) return null;\n const config: ReactListTableToolbarOptions =\n typeof toolbar === \"object\" ? toolbar : {};\n return (\n <div className=\"react-list-table-titlebar\" ref={rootRef}>\n <div className=\"react-list-table-title\">{title}</div>\n {hasToolbar ? (\n <div className=\"react-list-table-tools\">\n {config.extra}\n {config.showFullscreen !== false ? (\n <ToolButton\n label={isFullscreen ? \"退出全屏\" : \"全屏\"}\n onClick={() => {\n if (isFullscreen) {\n void document.exitFullscreen?.();\n } else {\n const fullscreenNode =\n config.getFullscreenNode?.() ?? props.hostRef.current;\n void fullscreenNode?.requestFullscreen?.();\n }\n }}\n >\n {isFullscreen ? (\n <FullscreenExitOutlined />\n ) : (\n <FullscreenOutlined />\n )}\n </ToolButton>\n ) : null}\n {config.showRefresh !== false ? (\n <ToolButton\n label=\"刷新\"\n iconSize={14}\n onClick={() => config.onRefresh?.()}\n >\n <ReloadOutlined />\n </ToolButton>\n ) : null}\n {config.showExport ? (\n <ToolButton\n label=\"导出\"\n iconSize={14}\n onClick={() => {\n if (config.onExport) {\n config.onExport();\n } else {\n props.onExport(config.exportOptions);\n }\n }}\n >\n <ExportOutlined />\n </ToolButton>\n ) : null}\n {config.showDensity !== false ? (\n <div className=\"react-list-table-tool-wrap\">\n <ToolButton\n label=\"表格密度\"\n onClick={() => setDensityOpen((v) => !v)}\n >\n <ColumnHeightOutlined />\n </ToolButton>\n {densityOpen ? (\n <div className=\"react-list-table-tool-menu\">\n {([56, 48, 32] as const).map((height) => (\n <button\n type=\"button\"\n key={height}\n className={props.density === height ? \"active\" : \"\"}\n onClick={() => {\n props.onDensityChange(height);\n setDensityOpen(false);\n }}\n >\n {height === 56 ? \"宽松\" : height === 48 ? \"中等\" : \"紧凑\"}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ) : null}\n {config.showColumnSetting !== false ? (\n <div className=\"react-list-table-tool-wrap\">\n <ToolButton\n label=\"列设置\"\n onClick={() => setSettingOpen((v) => !v)}\n >\n <SettingOutlined />\n </ToolButton>\n {settingOpen ? (\n <div\n className=\"react-list-table-column-setting\"\n style={{ width: config.columnSettingWidth }}\n >\n <div className=\"react-list-table-column-setting-head\">\n <strong>列设置</strong>\n <span style={{ marginLeft: \"auto\" }}>\n {config.columnSettingHeaderExtra}\n </span>\n <button type=\"button\" onClick={props.onResetColumns}>\n 重置\n </button>\n </div>\n <div className=\"react-list-table-column-setting-body\">\n <SortableList\n items={flattenColumns(props.columns)}\n onOrderChange={props.onColumnOrderChange}\n renderItem={(column, handleProps) => (\n <div className=\"react-list-table-column-item\">\n <span\n className=\"react-list-table-column-main\"\n style={{ paddingLeft: column.level * 16 }}\n >\n <span\n className=\"react-list-table-column-drag\"\n {...handleProps}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n <HolderOutlined />\n </span>\n <input\n type=\"checkbox\"\n checked={!column.hidden}\n disabled={column.disableHide}\n onChange={(event) =>\n props.onColumnVisibilityChange(\n column.key,\n event.target.checked,\n )\n }\n />\n <span className=\"react-list-table-column-label\">\n {column.label}\n </span>\n </span>\n {!column.isGroup ? (\n <span className=\"react-list-table-column-actions\">\n <ReactNumberInput\n className=\"react-list-table-column-width-input\"\n min={column.minWidth}\n max={column.maxWidth}\n value={column.width}\n allowClear={false}\n aria-label={`${column.label}列宽`}\n style={{ width: 80, height: 24 }}\n onChange={(width) => {\n if (\n width != null &&\n Number.isFinite(width) &&\n width > 0 &&\n (column.minWidth == null ||\n width >= column.minWidth) &&\n (column.maxWidth == null ||\n width <= column.maxWidth)\n ) {\n props.onColumnWidthChange(\n column.key,\n width,\n );\n }\n }}\n />\n <ReactSelect\n className=\"react-list-table-column-fixed-input\"\n value={column.fixed ?? \"none\"}\n options={[\n { label: \"不固定\", value: \"none\" },\n { label: \"固定左侧\", value: \"left\" },\n { label: \"固定右侧\", value: \"right\" },\n ]}\n allowClear={false}\n showSearch={false}\n style={{ width: \"100%\", height: 24 }}\n aria-label={`${column.label}固定方向`}\n onChange={(value) => {\n props.onColumnFixedChange(\n column.key,\n value === \"left\" || value === \"right\"\n ? value\n : undefined,\n );\n }}\n />\n </span>\n ) : null}\n </div>\n )}\n />\n </div>\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction ToolButton(props: {\n label: string;\n children: ReactNode;\n iconSize?: number;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n className=\"react-list-table-tool\"\n style={{ fontSize: props.iconSize ?? 16 }}\n title={props.label}\n aria-label={props.label}\n onClick={props.onClick}\n >\n {props.children}\n </button>\n );\n}\n\nfunction flattenColumns<RecordType>(\n columns: ListTableColumn<RecordType>[],\n parentKey = \"root\",\n level = 0,\n): Array<{\n key: string;\n label: string;\n hidden: boolean;\n parentKey: string;\n width: number;\n minWidth?: number;\n maxWidth?: number;\n fixed?: \"left\" | \"right\";\n level: number;\n isGroup: boolean;\n disableHide: boolean;\n}> {\n return columns.flatMap((column) => {\n if (column.hideInSetting) {\n return [];\n }\n const key = String(column.key ?? column.dataIndex);\n const label =\n column.settingTitle ??\n (typeof column.title === \"string\" ? column.title : key);\n const current = {\n key,\n label,\n hidden: column.hidden === true,\n parentKey,\n width: Number(column.width) || 160,\n minWidth:\n typeof column.minWidth === \"number\" ? column.minWidth : undefined,\n maxWidth:\n typeof column.maxWidth === \"number\" ? column.maxWidth : undefined,\n fixed: column.fixed,\n level,\n isGroup: Boolean(column.children?.length),\n disableHide: column.disableHide === true,\n };\n return column.children?.length\n ? [current, ...flattenColumns(column.children, key, level + 1)]\n : [current];\n });\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n ListTableDangerConfirmRequest,\n ListTableEditorRequest,\n ListTableLoadingRequest,\n ListTableImagePreviewRequest,\n ListTableOptions,\n ListTableTooltipRequest,\n FixedPopupConfig,\n FilterPanelConfig,\n HeaderContextMenuConfig,\n ListTableSearchRequest,\n PaginationConfig,\n} from \"@canvas-components/list-table\";\nimport { ListTable } from \"@canvas-components/list-table\";\n\nexport function useReactListTableState<RecordType>(\n options: ListTableOptions<RecordType>,\n) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const tableRef = useRef<ListTable<RecordType> | null>(null);\n const [editorRequest, setEditorRequest] =\n useState<ListTableEditorRequest | null>(null);\n const [paginationConfig, setPaginationConfig] =\n useState<PaginationConfig | null>(null);\n const [tooltipRequest, setTooltipRequest] =\n useState<ListTableTooltipRequest | null>(null);\n const [loadingRequest, setLoadingRequest] =\n useState<ListTableLoadingRequest | null>(null);\n const [filterPanelRequest, setFilterPanelRequest] =\n useState<FilterPanelConfig | null>(null);\n const [fixedPopupRequest, setFixedPopupRequest] =\n useState<FixedPopupConfig | null>(null);\n const [headerContextMenuRequest, setHeaderContextMenuRequest] =\n useState<HeaderContextMenuConfig | null>(null);\n const [searchRequest, setSearchRequest] =\n useState<ListTableSearchRequest | null>(null);\n const [imagePreviewRequest, setImagePreviewRequest] =\n useState<ListTableImagePreviewRequest | null>(null);\n const [dangerConfirmRequest, setDangerConfirmRequest] =\n useState<ListTableDangerConfirmRequest | null>(null);\n\n const uiOptions = useMemo(\n () => ({\n ...options.ui,\n onEditorRequest: (request: ListTableEditorRequest | null) => {\n setEditorRequest(request);\n options.ui?.onEditorRequest?.(request);\n },\n onPaginationRender: (config: PaginationConfig | null) => {\n setPaginationConfig(config);\n options.ui?.onPaginationRender?.(config);\n },\n onTooltipRequest: (request: ListTableTooltipRequest | null) => {\n setTooltipRequest(request);\n options.ui?.onTooltipRequest?.(request);\n },\n onLoadingRequest: (request: ListTableLoadingRequest | null) => {\n setLoadingRequest(request);\n options.ui?.onLoadingRequest?.(request);\n },\n onFilterPanelRequest: (request: FilterPanelConfig | null) => {\n setFilterPanelRequest(request);\n options.ui?.onFilterPanelRequest?.(request);\n },\n onFixedPopupRequest: (request: FixedPopupConfig | null) => {\n setFixedPopupRequest(request);\n options.ui?.onFixedPopupRequest?.(request);\n },\n onHeaderContextMenuRequest: (request: HeaderContextMenuConfig | null) => {\n setHeaderContextMenuRequest(request);\n options.ui?.onHeaderContextMenuRequest?.(request);\n },\n onSearchRequest: (request: ListTableSearchRequest | null) => {\n setSearchRequest(request);\n options.ui?.onSearchRequest?.(request);\n },\n onImagePreviewRequest: (request: ListTableImagePreviewRequest | null) => {\n setImagePreviewRequest(request);\n options.ui?.onImagePreviewRequest?.(request);\n },\n onDangerConfirmRequest: (\n request: ListTableDangerConfirmRequest | null,\n ) => {\n setDangerConfirmRequest(request);\n options.ui?.onDangerConfirmRequest?.(request);\n },\n }),\n [options.ui],\n );\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const table = new ListTable(container, {\n ...options,\n ui: uiOptions,\n });\n table.mount();\n tableRef.current = table;\n\n return () => {\n table.destroy();\n tableRef.current = null;\n setEditorRequest(null);\n setPaginationConfig(null);\n setTooltipRequest(null);\n setLoadingRequest(null);\n setFilterPanelRequest(null);\n setFixedPopupRequest(null);\n setHeaderContextMenuRequest(null);\n setSearchRequest(null);\n setImagePreviewRequest(null);\n setDangerConfirmRequest(null);\n };\n }, []);\n\n useEffect(() => {\n tableRef.current?.updateOptions({\n ...options,\n ui: uiOptions,\n });\n }, [options, uiOptions]);\n\n return {\n containerRef,\n tableRef,\n editorRequest,\n paginationConfig,\n tooltipRequest,\n loadingRequest,\n filterPanelRequest,\n fixedPopupRequest,\n headerContextMenuRequest,\n searchRequest,\n imagePreviewRequest,\n dangerConfirmRequest,\n closeDangerConfirmRequest: () => {\n setDangerConfirmRequest(null);\n options.ui?.onDangerConfirmRequest?.(null);\n },\n };\n}\n","import type { ListTableOptions } from \"@canvas-components/list-table\";\r\nimport type { ReactListTableProps } from \"../types\";\n\n/**\n * 解析随密度切换的关联行高;自适应密度只接管未显式配置的高度。\n */\nexport function resolveDensityLinkedHeight(\n densityOverride: 32 | 48 | 56 | \"auto\" | null,\n configuredHeight: number | undefined,\n) {\n return typeof densityOverride === \"number\"\n ? densityOverride\n : configuredHeight;\n}\n\n/**\n * 全屏时使用宿主容器尺寸,退出全屏后恢复用户配置尺寸。\n */\nexport function resolveFullscreenTableSize(\n width: number | string | undefined,\n height: number | string | undefined,\n isFullscreen: boolean,\n) {\n return isFullscreen\n ? { width: \"100%\" as const, height: \"100%\" as const }\n : { width, height };\n}\n\nexport function buildListTableOptions<RecordType>(\n props: Omit<ReactListTableProps<RecordType>, \"className\" | \"style\">,\r\n): ListTableOptions<RecordType> {\r\n const {\r\n width,\r\n height,\r\n emptyText,\r\n scroll,\r\n locale,\r\n onChange,\r\n query,\r\n ...restProps\r\n } = props;\r\n\r\n return {\n type: \"list\",\n ...restProps,\n rowHeight: restProps.rowHeight ?? 32,\n width: scroll?.x === true ? \"100%\" : (scroll?.x ?? width),\n height: scroll?.y ?? height,\r\n emptyText: locale?.emptyText ?? emptyText,\r\n query: onChange\r\n ? {\r\n ...query,\r\n onChange,\r\n }\r\n : query,\r\n };\r\n}\r\n","import {\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type ForwardedRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { ReactImagePreview } from \"@canvas-components/react-components\";\nimport { ReactTableContextMenuView } from \"../features/context-menu/context-menu-view\";\nimport { ReactListTableSearchDialog } from \"../features/search/search-dialog\";\nimport { ReactTableEditorOverlay } from \"../features/editor/editor-overlay\";\nimport { ReactTableFixedPopupView } from \"../features/fixed-popup/fixed-popup-view\";\nimport { ReactTableFilterPanelView } from \"../features/filter-panel/filter-panel-view\";\nimport { ReactTablePaginationView } from \"../features/pagination/pagination-view\";\nimport { ReactTableDangerConfirmView } from \"../features/popconfirm/popconfirm-view\";\nimport { ReactTableTooltipView } from \"../features/tooltip/tooltip-view\";\nimport { ReactTableToolbar } from \"../features/toolbar/table-toolbar\";\nimport { useReactListTableState } from \"../hooks/use-react-list-table-state\";\nimport type {\n ReactListTableColumnType,\n ReactListTableProps,\n ReactListTableRef,\n} from \"../types\";\nimport {\n buildListTableOptions,\n resolveDensityLinkedHeight,\n resolveFullscreenTableSize,\n} from \"./build-list-table-options\";\n\n/**\n * ListTable 的 React 宿主组件。\n */\nfunction ReactListTableInner<RecordType = Record<string, unknown>>(\n props: ReactListTableProps<RecordType>,\n ref: ForwardedRef<ReactListTableRef<RecordType>>,\n) {\n const {\n className,\n style,\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n columns,\n dataSource,\n onRow,\n theme,\n striped,\n highlightMode,\n contextMenu,\n grouping,\n rowHeight,\n headerRowHeight,\n summaryRowHeight,\n overscanRowCount,\n query,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n scrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n draggable,\n tableId,\n rowDrag,\n debug,\n title,\n toolbar,\n } = props;\n const shellRef = useRef<HTMLDivElement | null>(null);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [densityOverride, setDensityOverride] = useState<\n 32 | 48 | 56 | \"auto\" | null\n >(null);\n const [columnVisibility, setColumnVisibility] = useState<\n Map<string, boolean>\n >(() => new Map());\n const [columnOrders, setColumnOrders] = useState<Map<string, string[]>>(\n () => new Map(),\n );\n const [columnConfig, setColumnConfig] = useState<\n Map<string, { width?: number; fixed?: \"left\" | \"right\" | null }>\n >(() => new Map());\n const resolvedColumns = useMemo(\n () =>\n applyColumnManagerState(\n columns,\n columnVisibility,\n columnOrders,\n columnConfig,\n ),\n [columns, columnVisibility, columnOrders, columnConfig],\n );\n const resolvedRowHeight = densityOverride ?? rowHeight;\n const resolvedHeaderRowHeight = resolveDensityLinkedHeight(\n densityOverride,\n headerRowHeight,\n );\n const resolvedSummaryRowHeight = resolveDensityLinkedHeight(\n densityOverride,\n summaryRowHeight,\n );\n const options = useMemo(() => {\n const nextOptions = buildListTableOptions({\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n columns: resolvedColumns,\n dataSource,\n onRow,\n theme,\n striped,\n highlightMode,\n contextMenu,\n grouping,\n rowHeight: resolvedRowHeight,\n headerRowHeight: resolvedHeaderRowHeight,\n summaryRowHeight: resolvedSummaryRowHeight,\n overscanRowCount,\n query,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n scrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n draggable,\n tableId,\n rowDrag,\n debug,\n });\n const fullscreenSize = resolveFullscreenTableSize(\n nextOptions.width,\n nextOptions.height,\n isFullscreen,\n );\n return {\n ...nextOptions,\n ...fullscreenSize,\n ui: {\n ...nextOptions.ui,\n onDensityChange: setDensityOverride,\n },\n };\n }, [\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n resolvedColumns,\n dataSource,\n onRow,\n theme,\n striped,\n highlightMode,\n contextMenu,\n grouping,\n resolvedRowHeight,\n resolvedHeaderRowHeight,\n resolvedSummaryRowHeight,\n overscanRowCount,\n query,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n scrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n draggable,\n tableId,\n rowDrag,\n debug,\n isFullscreen,\n ]);\n const {\n containerRef,\n tableRef,\n editorRequest,\n paginationConfig,\n tooltipRequest,\n loadingRequest,\n filterPanelRequest,\n fixedPopupRequest,\n headerContextMenuRequest,\n searchRequest,\n imagePreviewRequest,\n dangerConfirmRequest,\n closeDangerConfirmRequest,\n } = useReactListTableState(options);\n const hasPagination = paginationConfig != null;\n\n useImperativeHandle(\n ref,\n () => ({\n validate: () => tableRef.current?.validate() ?? Promise.resolve([]),\n exportXlsx: (options) => {\n tableRef.current?.exportXlsx(options);\n },\n scrollTo: (options) => {\n tableRef.current?.scrollTo(options);\n },\n getDebugSnapshot: () => tableRef.current?.getDebugSnapshot() ?? null,\n resetSorter: () => {\n tableRef.current?.resetSorter();\n },\n resetFilter: () => {\n tableRef.current?.resetFilter();\n },\n }),\n [],\n );\n\n return (\n <>\n <div\n ref={shellRef}\n className={[\n \"react-list-table-shell\",\n isFullscreen ? \"react-list-table-shell-fullscreen\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n style={{\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n paddingBottom: hasPagination ? 44 : undefined,\n ...style,\n }}\n >\n <ReactTableToolbar\n title={title}\n toolbar={toolbar}\n columns={resolvedColumns}\n density={resolvedRowHeight ?? 32}\n hostRef={shellRef}\n onFullscreenChange={setIsFullscreen}\n onExport={(options) => tableRef.current?.exportXlsx(options)}\n onDensityChange={(density) => {\n tableRef.current?.changeDensity(density);\n setDensityOverride(density);\n if (toolbar) {\n toolbar.onDensityChange?.(density);\n }\n }}\n onColumnVisibilityChange={(columnKey, visible) => {\n setColumnVisibility((current) => {\n const next = new Map(current);\n next.set(columnKey, visible);\n return next;\n });\n }}\n onColumnOrderChange={(parentKey, orderedKeys) => {\n setColumnOrders((current) => {\n const next = new Map(current);\n next.set(parentKey, orderedKeys);\n return next;\n });\n }}\n onColumnWidthChange={(columnKey, width) => {\n setColumnConfig((current) => {\n const next = new Map(current);\n next.set(columnKey, {\n ...next.get(columnKey),\n width,\n });\n return next;\n });\n }}\n onColumnFixedChange={(columnKey, fixed) => {\n setColumnConfig((current) => {\n const next = new Map(current);\n next.set(columnKey, {\n ...next.get(columnKey),\n fixed: fixed ?? null,\n });\n return next;\n });\n }}\n onResetColumns={() => {\n setColumnVisibility(new Map());\n setColumnOrders(new Map());\n setColumnConfig(new Map());\n }}\n />\n <div\n ref={containerRef}\n className=\"react-list-table-host\"\n style={{ flex: 1, minWidth: 0, width: \"100%\", minHeight: 0 }}\n >\n <ReactTablePaginationView config={paginationConfig} />\n </div>\n {loadingRequest ? (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"rgba(255, 255, 255, 0.68)\",\n color: \"#475569\",\n fontSize: 14,\n pointerEvents: \"auto\",\n cursor: \"progress\",\n }}\n >\n {loadingRequest.text ?? \"处理中…\"}\n </div>\n ) : null}\n </div>\n {tooltipRequest\n ? createPortal(\n <ReactTableTooltipView request={tooltipRequest} />,\n document.body,\n )\n : null}\n {filterPanelRequest\n ? createPortal(\n <ReactTableFilterPanelView request={filterPanelRequest} />,\n document.body,\n )\n : null}\n {fixedPopupRequest\n ? createPortal(\n <ReactTableFixedPopupView request={fixedPopupRequest} />,\n document.body,\n )\n : null}\n {headerContextMenuRequest\n ? createPortal(\n <ReactTableContextMenuView request={headerContextMenuRequest} />,\n document.body,\n )\n : null}\n {searchRequest\n ? createPortal(\n <ReactListTableSearchDialog request={searchRequest} />,\n document.body,\n )\n : null}\n {dangerConfirmRequest\n ? createPortal(\n <ReactTableDangerConfirmView\n request={dangerConfirmRequest}\n onClose={closeDangerConfirmRequest}\n />,\n document.body,\n )\n : null}\n {editorRequest\n ? createPortal(\n <ReactTableEditorOverlay request={editorRequest} />,\n editorRequest.hostElement ?? document.body,\n )\n : null}\n {imagePreviewRequest\n ? createPortal(\n <ReactImagePreview\n open\n src={imagePreviewRequest.src}\n alt={imagePreviewRequest.alt}\n onClose={imagePreviewRequest.onClose}\n />,\n document.body,\n )\n : null}\n </>\n );\n}\n\nfunction applyColumnManagerState<RecordType>(\n columns: ReactListTableProps<RecordType>[\"columns\"],\n visibility: Map<string, boolean>,\n orders: Map<string, string[]>,\n config: Map<string, { width?: number; fixed?: \"left\" | \"right\" | null }>,\n parentKey = \"root\",\n): ReactListTableProps<RecordType>[\"columns\"] {\n const order = orders.get(parentKey);\n const sortedColumns = order\n ? applyManagedColumnOrder(columns, order)\n : columns;\n return sortedColumns.map((column: ReactListTableColumnType<RecordType>) => {\n const key = resolveColumnKey(column);\n const managedConfig = config.get(key);\n return {\n ...column,\n hidden: visibility.has(key)\n ? visibility.get(key) === false\n : (column.hidden ?? column.initialHide),\n width: managedConfig?.width ?? column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n fixed:\n managedConfig?.fixed === null\n ? undefined\n : (managedConfig?.fixed ?? column.fixed),\n children: column.children\n ? applyColumnManagerState(\n column.children,\n visibility,\n orders,\n config,\n key,\n )\n : undefined,\n };\n });\n}\n\nfunction applyManagedColumnOrder<RecordType>(\n columns: ReactListTableProps<RecordType>[\"columns\"],\n orderedKeys: string[],\n) {\n const managedKeySet = new Set(orderedKeys);\n const managedSlots = columns\n .map((column, index) =>\n managedKeySet.has(resolveColumnKey(column)) ? index : -1,\n )\n .filter((index) => index >= 0);\n const columnByKey = new Map(\n columns.map((column) => [resolveColumnKey(column), column]),\n );\n const next = [...columns];\n\n orderedKeys.forEach((key, index) => {\n const slot = managedSlots[index];\n const column = columnByKey.get(key);\n if (slot != null && column) {\n next[slot] = column;\n }\n });\n\n return next;\n}\n\nfunction resolveColumnKey<RecordType>(\n column: ReactListTableProps<RecordType>[\"columns\"][number],\n) {\n return String(column.key ?? column.dataIndex);\n}\n\nexport const ReactListTable = forwardRef(ReactListTableInner) as <\n RecordType = Record<string, unknown>,\n>(\n props: ReactListTableProps<RecordType> & {\n ref?: ForwardedRef<ReactListTableRef<RecordType>>;\n },\n) => ReturnType<typeof ReactListTableInner>;\n"]}
1
+ {"version":3,"sources":["#style-inject:#style-inject","../src/styles/table-overrides.css","../src/features/context-menu/context-menu-view.tsx","../src/features/search/search-dialog.tsx","../src/features/editor/utils.ts","../src/features/editor/editor-overlay.tsx","../src/features/fixed-popup/fixed-popup-view.tsx","../src/features/filter-panel/filter-panel-view.tsx","../src/features/pagination/pagination-view.tsx","../src/features/popconfirm/popconfirm-view.tsx","../src/features/tooltip/tooltip-view.tsx","../src/features/toolbar/toolbar-icons.tsx","../src/features/toolbar/sortable-list.tsx","../src/features/toolbar/style.css","../src/features/toolbar/table-toolbar.tsx","../src/hooks/use-react-list-table-state.ts","../src/components/build-list-table-options.ts","../src/components/react-list-table.tsx"],"names":["Fragment","useState","useEffect","jsx","ReactModal","jsxs","ReactInput","useRef","ReactSelect","ReactPopup","ReactNumberInput","useMemo","options","width","createPortal"],"mappings":"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","file":"index.js","sourcesContent":["\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\".react-list-table-filter-option {\\n transition: background-color 0.2s ease;\\n}\\n.react-list-table-filter-option:hover {\\n background: #f3f4f6;\\n}\\n.react-list-table-menu-action,\\n.react-list-table-menu-row {\\n transition: background-color 0.2s ease, color 0.2s ease;\\n}\\n.react-list-table-menu-action:hover,\\n.react-list-table-menu-row:hover {\\n background: #f3f4f6 !important;\\n}\\n.react-list-table-custom-selection-copy {\\n transition: background-color 0.2s ease;\\n}\\n.react-list-table-custom-selection-copy:hover {\\n background: #4096ff !important;\\n}\\n.react-list-table-custom-selection-input > .canvas-react-input-number-handler-down {\\n display: none;\\n}\\n.react-list-table-menu-chevron {\\n width: 7px;\\n height: 7px;\\n flex: 0 0 auto;\\n margin-left: 8px;\\n border-top: 1.5px solid #9ca3af;\\n border-right: 1.5px solid #9ca3af;\\n transform: rotate(45deg);\\n transform-origin: center;\\n transition: transform 0.18s ease, border-color 0.18s ease;\\n}\\n.react-list-table-menu-action:hover .react-list-table-menu-chevron,\\n.react-list-table-menu-row:hover .react-list-table-menu-chevron {\\n border-color: #6b7280;\\n transform: rotate(135deg);\\n}\\n.react-list-table-menu-chevron-active {\\n border-color: #6b7280;\\n transform: rotate(135deg);\\n}\\n\")","import {\r\n Fragment,\r\n useEffect,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type ReactNode,\r\n} from \"react\";\r\nimport type {\r\n HeaderContextMenuColumnItem,\r\n HeaderContextMenuConfig,\r\n HeaderContextMenuDensity,\r\n ListTableDataFormat,\r\n ListTableDataFormatType,\r\n ListTableSummaryRoundingMode,\r\n} from \"@canvas-components/list-table\";\r\nimport {\r\n formatDateTimeValue,\r\n isDateTimeFormatPattern,\r\n} from \"@canvas-components/utils/date\";\r\nimport {\r\n formatCustomNumberPattern,\r\n formatNumberValue,\r\n formatPercentValue,\r\n formatScientificValue,\r\n} from \"@canvas-components/utils/number\";\r\nimport {\r\n ReactCheckbox,\r\n ReactInput,\r\n ReactInputNumber,\r\n ReactModal,\r\n ReactPopup,\r\n ReactSelect,\r\n} from \"@canvas-components/react-components\";\r\n\r\nconst CONTEXT_MENU_SURFACE_STYLE: CSSProperties = {\r\n padding: 8,\r\n background: \"#ffffff\",\r\n boxShadow: \"0 8px 24px rgba(15, 23, 42, 0.16)\",\r\n};\r\n\r\nexport function ReactTableContextMenuView(props: {\r\n request: HeaderContextMenuConfig | null;\r\n}) {\r\n const { request } = props;\r\n const [menuOpen, setMenuOpen] = useState(true);\r\n const [moreFormatRequest, setMoreFormatRequest] =\r\n useState<HeaderContextMenuConfig | null>(null);\r\n const [customSelectionRequest, setCustomSelectionRequest] =\r\n useState<HeaderContextMenuConfig | null>(null);\r\n\r\n if (!request) {\r\n return (\r\n <>\r\n {moreFormatRequest ? (\r\n <MoreFormatDialog\r\n request={moreFormatRequest}\r\n onClose={() => setMoreFormatRequest(null)}\r\n />\r\n ) : null}\r\n {customSelectionRequest ? (\r\n <CustomSelectionDialog\r\n request={customSelectionRequest}\r\n onClose={() => {\r\n setCustomSelectionRequest(null);\r\n customSelectionRequest.onClose();\r\n }}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n }\r\n\r\n const surfaceStyle: CSSProperties = {\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n width: 260,\r\n };\r\n\r\n return (\r\n <>\r\n <ReactPopup\r\n open={menuOpen}\r\n anchorRect={{ x: request.x, y: request.y, width: 0, height: 0 }}\r\n minWidth={260}\r\n onOpenChange={(open) => {\r\n setMenuOpen(open);\r\n if (!open && !moreFormatRequest && !customSelectionRequest) {\r\n request.onClose();\r\n }\r\n }}\r\n surfaceStyle={surfaceStyle}\r\n >\r\n <div>\r\n <MenuSubmenu\r\n label=\"复制\"\r\n items={[\r\n {\r\n key: \"copy-cell\",\r\n label: \"复制单元格\",\r\n onClick: request.onCopyCell,\r\n },\r\n {\r\n key: \"copy-column\",\r\n label: \"复制整列\",\r\n onClick: request.onCopyColumn,\r\n },\r\n {\r\n key: \"copy-row-text\",\r\n label: \"复制当前行文本\",\r\n onClick: request.onCopyRowText,\r\n },\r\n {\r\n key: \"copy-row-json\",\r\n label: \"复制当前行 JSON\",\r\n onClick: request.onCopyRowJson,\r\n },\r\n {\r\n key: \"copy-selection\",\r\n label: \"复制选区\",\r\n onClick: request.onCopySelection,\r\n },\r\n ]}\r\n >\r\n <CustomSelectionMenu\r\n request={request}\r\n onOpen={() => {\r\n setCustomSelectionRequest(request);\r\n setMenuOpen(false);\r\n }}\r\n />\r\n </MenuSubmenu>\r\n <MenuAction label=\"查找\" onClick={request.onOpenSearch} />\r\n <MenuSubmenu\r\n label=\"导出\"\r\n items={[\r\n {\r\n key: \"export-txt\",\r\n label: \"导出 TXT\",\r\n onClick: request.onExportTxt,\r\n },\r\n {\r\n key: \"export-csv\",\r\n label: \"导出 CSV\",\r\n onClick: request.onExportCsv,\r\n },\r\n {\r\n key: \"export-xlsx\",\r\n label: \"导出 XLSX\",\r\n onClick: request.onExportXlsx,\r\n },\r\n {\r\n key: \"export-json\",\r\n label: \"导出 JSON\",\r\n onClick: request.onExportJson,\r\n },\r\n ]}\r\n />\r\n <MenuAction\r\n label={request.downloadContentLabel ?? \"\"}\r\n onClick={request.onDownloadContent}\r\n />\r\n <MenuAction\r\n label={request.toggleExpandRowLabel ?? \"\"}\r\n onClick={request.onToggleExpandRow}\r\n />\r\n <MenuAction\r\n label=\"取消全部折叠行\"\r\n onClick={request.onExpandAllCollapsedRows}\r\n />\r\n <MenuAction\r\n label={request.toggleColumnLabel ?? \"\"}\r\n onClick={request.onToggleCurrentColumn}\r\n />\r\n <MenuSubmenu\r\n label=\"自动调整列宽\"\r\n items={[\r\n {\r\n key: \"auto-fit-current\",\r\n label: \"当前列\",\r\n onClick: request.onAutoFitCurrentColumn,\r\n },\r\n {\r\n key: \"auto-fit-all\",\r\n label: \"全部列\",\r\n onClick: request.onAutoFitAllColumns,\r\n },\r\n ]}\r\n />\r\n <MenuAction\r\n label={request.groupingBarVisible ? \"隐藏分组栏\" : \"显示分组栏\"}\r\n onClick={request.onToggleGroupingBar}\r\n />\r\n <MenuAction\r\n label=\"取消全部折叠列\"\r\n onClick={request.onExpandAllCollapsedColumns}\r\n />\r\n <MenuAction\r\n label={request.summaryVisible ? \"隐藏汇总栏\" : \"显示汇总栏\"}\r\n onClick={request.onToggleSummary}\r\n />\r\n <SummaryMenu request={request} />\r\n <AlignmentMenu request={request} />\r\n <DataFormatMenu\r\n request={request}\r\n onOpenMoreFormat={() => {\r\n setMoreFormatRequest(request);\r\n setMenuOpen(false);\r\n }}\r\n />\r\n <MenuSubmenu\r\n label=\"冻结\"\r\n items={[\r\n {\r\n key: \"freeze-top\",\r\n label: \"冻结到顶部\",\r\n onClick: request.onFreezeRowTop,\r\n },\r\n {\r\n key: \"freeze-bottom\",\r\n label: \"冻结到底部\",\r\n onClick: request.onFreezeRowBottom,\r\n },\r\n {\r\n key: \"unfreeze\",\r\n label: \"取消冻结\",\r\n onClick: request.onUnfreezeRow,\r\n },\r\n ]}\r\n />\r\n <MenuSubmenu\r\n label=\"排序\"\r\n items={[\r\n {\r\n key: \"sort-ascend\",\r\n label: \"升序\",\r\n onClick: request.onSortAscend,\r\n },\r\n {\r\n key: \"sort-descend\",\r\n label: \"降序\",\r\n onClick: request.onSortDescend,\r\n },\r\n {\r\n key: \"sort-clear\",\r\n label: \"取消排序\",\r\n onClick: request.onClearSort,\r\n },\r\n ]}\r\n />\r\n <MenuSubmenu\r\n label=\"固定\"\r\n items={[\r\n {\r\n key: \"fix-left\",\r\n label: \"左侧\",\r\n onClick: request.onFixLeft,\r\n },\r\n {\r\n key: \"fix-right\",\r\n label: \"右侧\",\r\n onClick: request.onFixRight,\r\n },\r\n {\r\n key: \"unfix\",\r\n label: \"取消固定\",\r\n onClick: request.onUnfix,\r\n },\r\n ]}\r\n />\r\n <MenuSubmenu\r\n label=\"重置\"\r\n items={[\r\n {\r\n key: \"reset-filter\",\r\n label: \"重置筛选\",\r\n onClick: request.onResetFilter,\r\n },\r\n {\r\n key: \"reset-sort\",\r\n label: \"重置排序\",\r\n onClick: request.onResetSort,\r\n },\r\n {\r\n key: \"reset-header\",\r\n label: \"重置表头配置\",\r\n onClick: request.onResetHeader,\r\n },\r\n {\r\n key: \"reset-grouping\",\r\n label: \"重置分组\",\r\n onClick: request.onResetGrouping,\r\n },\r\n {\r\n key: \"reset-summary\",\r\n label: \"重置汇总\",\r\n onClick: request.onResetSummary,\r\n },\r\n {\r\n key: \"reset-alignment\",\r\n label: \"重置对齐\",\r\n onClick: request.onResetAlignment,\r\n },\r\n {\r\n key: \"reset-data-format\",\r\n label: \"重置格式\",\r\n onClick: request.onResetDataFormat,\r\n },\r\n ]}\r\n />\r\n <DensityMenu\r\n value={request.density ?? \"middle\"}\r\n onChange={request.onChangeDensity}\r\n />\r\n <ZoomMenu value={request.zoom ?? 1} onChange={request.onChangeZoom} />\r\n {request.columns?.length && request.onToggleColumn ? (\r\n <>\r\n <MenuDivider />\r\n <ColumnVisibilityMenu\r\n columns={request.columns}\r\n onToggle={request.onToggleColumn}\r\n />\r\n </>\r\n ) : null}\r\n </div>\r\n </ReactPopup>\r\n {moreFormatRequest ? (\r\n <MoreFormatDialog\r\n request={moreFormatRequest}\r\n onClose={() => {\r\n setMoreFormatRequest(null);\r\n request.onClose();\r\n }}\r\n />\r\n ) : null}\r\n {customSelectionRequest ? (\r\n <CustomSelectionDialog\r\n request={customSelectionRequest}\r\n onClose={() => {\r\n setCustomSelectionRequest(null);\r\n customSelectionRequest.onClose();\r\n }}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n\r\nfunction MenuAction(props: {\r\n label: string;\r\n preview?: string;\r\n onClick?: () => void;\r\n selected?: boolean;\r\n disabled?: boolean;\r\n reserveSelectionIcon?: boolean;\r\n}) {\r\n const { label, preview, onClick, selected, disabled, reserveSelectionIcon } =\r\n props;\r\n if (!onClick && !disabled) {\r\n return null;\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={disabled ? undefined : onClick}\r\n disabled={disabled}\r\n className=\"react-list-table-menu-action\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n height: 32,\r\n padding: \"0 10px\",\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: \"transparent\",\r\n color: disabled ? \"#9ca3af\" : \"#374151\",\r\n textAlign: \"left\",\r\n cursor: disabled ? \"default\" : \"pointer\",\r\n }}\r\n >\r\n {reserveSelectionIcon ? (\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n width: 16,\r\n flex: \"0 0 16px\",\r\n marginRight: 6,\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {selected ? \"✓\" : \"\"}\r\n </span>\r\n ) : null}\r\n <span style={{ flex: 1, whiteSpace: \"nowrap\" }}>{label}</span>\r\n {preview ? (\r\n <span\r\n style={{ marginLeft: 16, color: \"#9ca3af\", whiteSpace: \"nowrap\" }}\r\n >\r\n {preview}\r\n </span>\r\n ) : null}\r\n </button>\r\n );\r\n}\r\n\r\ninterface MenuSubmenuItem {\r\n key: string;\r\n label: string;\r\n preview?: string;\r\n selected?: boolean;\r\n disabled?: boolean;\r\n separatorBefore?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nfunction MenuSubmenu(props: {\r\n label: string;\r\n items: MenuSubmenuItem[];\r\n footer?: ReactNode;\r\n children?: ReactNode;\r\n minWidth?: number;\r\n}) {\r\n const { label, items, footer, children, minWidth = 220 } = props;\r\n const menuItems = items.filter((item) => item.onClick || item.disabled);\r\n const reserveSelectionIcon = menuItems.some(\r\n (item) => typeof item.selected === \"boolean\",\r\n );\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const closeTimerRef = useRef<number | null>(null);\r\n\r\n if (!menuItems.length && !footer && !children) {\r\n return null;\r\n }\r\n\r\n const clearCloseTimer = () => {\r\n if (closeTimerRef.current != null) {\r\n window.clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = null;\r\n }\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearCloseTimer();\r\n closeTimerRef.current = window.setTimeout(() => {\r\n setOpen(false);\r\n closeTimerRef.current = null;\r\n }, 120);\r\n };\r\n\r\n return (\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n setOpen(true);\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n <button\r\n ref={triggerRef}\r\n type=\"button\"\r\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n height: 32,\r\n padding: \"0 10px\",\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: \"transparent\",\r\n color: \"#374151\",\r\n textAlign: \"left\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <span>{label}</span>\r\n <span\r\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\r\n aria-hidden=\"true\"\r\n />\r\n </button>\r\n <ReactPopup\r\n open={open}\r\n anchorRef={triggerRef}\r\n placement=\"rightTop\"\r\n offset={2}\r\n minWidth={minWidth}\r\n onOpenChange={setOpen}\r\n surfaceStyle={{\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n width: minWidth,\r\n }}\r\n >\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n {menuItems.map((item) => (\r\n <Fragment key={item.key}>\r\n {item.separatorBefore ? <MenuDivider /> : null}\r\n <MenuAction\r\n label={item.label}\r\n preview={item.preview}\r\n onClick={item.onClick}\r\n selected={item.selected}\r\n disabled={item.disabled}\r\n reserveSelectionIcon={reserveSelectionIcon}\r\n />\r\n </Fragment>\r\n ))}\r\n {children}\r\n {footer}\r\n </div>\r\n </ReactPopup>\r\n </div>\r\n );\r\n}\r\n\r\nfunction DensityMenu(props: {\r\n value: HeaderContextMenuDensity;\r\n onChange?: (density: HeaderContextMenuDensity) => void;\r\n}) {\r\n const { value, onChange } = props;\r\n if (!onChange) {\r\n return null;\r\n }\r\n\r\n return (\r\n <MenuSubmenu\r\n label=\"表格密度\"\r\n items={[\r\n {\r\n key: \"density-comfortable\",\r\n label: \"宽松\",\r\n selected: value === \"comfortable\",\r\n onClick: () => {\r\n onChange(\"comfortable\");\r\n },\r\n },\r\n {\r\n key: \"density-middle\",\r\n label: \"中等\",\r\n selected: value === \"middle\",\r\n onClick: () => {\r\n onChange(\"middle\");\r\n },\r\n },\r\n {\n key: \"density-compact\",\n label: \"紧凑\",\n selected: value === \"compact\",\r\n onClick: () => {\r\n onChange(\"compact\");\n },\n },\n {\n key: \"density-auto\",\n label: \"自适应\",\n selected: value === \"auto\",\n onClick: () => {\n onChange(\"auto\");\n },\n },\n ]}\n />\r\n );\r\n}\r\n\r\nconst CONTEXT_MENU_ZOOM_MIN = 50;\r\nconst CONTEXT_MENU_ZOOM_MAX = 200;\r\nconst CONTEXT_MENU_ZOOM_STEP = 10;\r\n\r\nfunction ZoomMenu(props: { value: number; onChange?: (zoom: number) => void }) {\r\n const { value, onChange } = props;\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const closeTimerRef = useRef<number | null>(null);\r\n\r\n if (!onChange) {\r\n return null;\r\n }\r\n\r\n const percent = Math.round(value * 100);\r\n\r\n const clearCloseTimer = () => {\r\n if (closeTimerRef.current != null) {\r\n window.clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = null;\r\n }\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearCloseTimer();\r\n closeTimerRef.current = window.setTimeout(() => {\r\n setOpen(false);\r\n closeTimerRef.current = null;\r\n }, 120);\r\n };\r\n\r\n return (\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n setOpen(true);\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n <button\r\n ref={triggerRef}\r\n type=\"button\"\r\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n height: 32,\r\n padding: \"0 10px\",\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: \"transparent\",\r\n color: \"#374151\",\r\n textAlign: \"left\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <span>缩放</span>\r\n <span\r\n style={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n color: \"#6b7280\",\r\n fontSize: 12,\r\n }}\r\n >\r\n <span>{percent}%</span>\r\n <span\r\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\r\n aria-hidden=\"true\"\r\n />\r\n </span>\r\n </button>\r\n <ReactPopup\r\n open={open}\r\n anchorRef={triggerRef}\r\n placement=\"rightTop\"\r\n offset={2}\r\n minWidth={280}\r\n onOpenChange={setOpen}\r\n surfaceStyle={{\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n width: 280,\r\n }}\r\n >\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 8,\r\n padding: \"4px 2px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n color: \"#6b7280\",\r\n fontSize: 12,\r\n padding: \"0 8px\",\r\n }}\r\n >\r\n 表格缩放(50% - 200%)\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"stretch\",\r\n gap: 6,\r\n padding: \"0 8px 4px\",\r\n }}\r\n >\r\n <ReactInputNumber\r\n value={percent}\r\n min={CONTEXT_MENU_ZOOM_MIN}\r\n max={CONTEXT_MENU_ZOOM_MAX}\r\n step={CONTEXT_MENU_ZOOM_STEP}\r\n precision={0}\r\n addonAfter=\"%\"\r\n style={{ flex: \"1 1 auto\", minWidth: 0 }}\r\n onChange={(next) => {\r\n if (next == null || !Number.isFinite(next)) {\r\n return;\r\n }\r\n onChange(Math.round(next) / 100);\r\n }}\r\n />\r\n <button\r\n type=\"button\"\r\n disabled={percent === 100}\r\n onClick={() => {\r\n onChange(1);\r\n }}\r\n className=\"react-list-table-menu-action\"\r\n style={{\r\n flex: \"0 0 52px\",\r\n height: 32,\r\n padding: 0,\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 6,\r\n background: \"#ffffff\",\r\n color: percent === 100 ? \"#9ca3af\" : \"#374151\",\r\n textAlign: \"center\",\r\n cursor: percent === 100 ? \"not-allowed\" : \"pointer\",\r\n }}\r\n >\r\n 重置\r\n </button>\r\n </div>\r\n </div>\r\n </ReactPopup>\r\n </div>\r\n );\r\n}\r\n\r\nfunction ColumnVisibilityMenu(props: {\r\n columns: HeaderContextMenuColumnItem[];\r\n onToggle: (columnKey: string, visible: boolean) => void;\r\n}) {\r\n const { columns, onToggle } = props;\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const closeTimerRef = useRef<number | null>(null);\r\n\r\n const clearCloseTimer = () => {\r\n if (closeTimerRef.current != null) {\r\n window.clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = null;\r\n }\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearCloseTimer();\r\n closeTimerRef.current = window.setTimeout(() => {\r\n setOpen(false);\r\n closeTimerRef.current = null;\r\n }, 120);\r\n };\r\n\r\n return (\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n setOpen(true);\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n <button\r\n ref={triggerRef}\r\n type=\"button\"\r\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n height: 32,\r\n padding: \"0 10px\",\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: \"transparent\",\r\n color: \"#374151\",\r\n textAlign: \"left\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <span>列显示</span>\r\n <span\r\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\r\n aria-hidden=\"true\"\r\n />\r\n </button>\r\n <ReactPopup\r\n open={open}\r\n anchorRef={triggerRef}\r\n placement=\"rightTop\"\r\n offset={2}\r\n minWidth={220}\r\n onOpenChange={setOpen}\r\n surfaceStyle={{\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n maxHeight: 360,\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n {columns.map((column) => (\r\n <ColumnVisibilityItem\r\n key={column.key}\r\n item={column}\r\n onToggle={onToggle}\r\n />\r\n ))}\r\n </div>\r\n </ReactPopup>\r\n </div>\r\n );\r\n}\r\n\r\nfunction ColumnVisibilityItem(props: {\r\n item: HeaderContextMenuColumnItem;\r\n onToggle: (columnKey: string, visible: boolean) => void;\r\n}) {\r\n const { item, onToggle } = props;\r\n const triggerRef = useRef<HTMLDivElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const closeTimerRef = useRef<number | null>(null);\r\n const hasChildren = !!item.children?.length;\r\n\r\n const clearCloseTimer = () => {\r\n if (closeTimerRef.current != null) {\r\n window.clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = null;\r\n }\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearCloseTimer();\r\n closeTimerRef.current = window.setTimeout(() => {\r\n setOpen(false);\r\n closeTimerRef.current = null;\r\n }, 120);\r\n };\r\n\r\n return (\r\n <div\r\n ref={triggerRef}\r\n className=\"react-list-table-menu-row\"\r\n onMouseEnter={() => {\r\n if (hasChildren) {\r\n clearCloseTimer();\r\n setOpen(true);\r\n }\r\n }}\r\n onMouseLeave={() => {\r\n if (hasChildren) {\r\n scheduleClose();\r\n }\r\n }}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 8,\r\n minHeight: 32,\r\n padding: \"0 10px\",\r\n borderRadius: 8,\r\n color: item.disabled ? \"#9ca3af\" : \"#374151\",\r\n fontSize: 14,\r\n }}\r\n >\r\n <ReactCheckbox\r\n checked={item.checked}\r\n disabled={item.disabled}\r\n indeterminate={!!item.indeterminate}\r\n onChange={(event) => {\r\n onToggle(item.key, !!event.target.checked);\r\n }}\r\n >\r\n {item.title}\r\n </ReactCheckbox>\r\n {hasChildren ? (\r\n <span\r\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\r\n aria-hidden=\"true\"\r\n />\r\n ) : null}\r\n {hasChildren ? (\r\n <ReactPopup\r\n open={open}\r\n anchorRef={triggerRef}\r\n placement=\"rightTop\"\r\n offset={2}\r\n minWidth={220}\r\n onOpenChange={setOpen}\r\n surfaceStyle={{\r\n ...CONTEXT_MENU_SURFACE_STYLE,\r\n maxHeight: 320,\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <div\r\n onMouseEnter={() => {\r\n clearCloseTimer();\r\n }}\r\n onMouseLeave={() => {\r\n scheduleClose();\r\n }}\r\n >\r\n {item.children!.map((child) => (\r\n <ColumnVisibilityItem\r\n key={child.key}\r\n item={child}\r\n onToggle={onToggle}\r\n />\r\n ))}\r\n </div>\r\n </ReactPopup>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction MenuDivider() {\r\n return (\r\n <div\r\n style={{\r\n height: 1,\r\n margin: \"6px 0\",\r\n background: \"#f0f0f0\",\r\n }}\r\n />\r\n );\r\n}\r\n\r\nfunction CustomSelectionMenu(props: {\r\n request: HeaderContextMenuConfig;\r\n onOpen: () => void;\r\n}) {\r\n const { request } = props;\r\n if (!request.onCopyCustomSelection || !request.customSelection) {\r\n return null;\r\n }\r\n\r\n return (\r\n <MenuAction\r\n label=\"复制自定义选区\"\r\n onClick={props.onOpen}\r\n />\r\n );\r\n}\r\n\r\nfunction CustomSelectionDialog(props: {\r\n request: HeaderContextMenuConfig;\r\n onClose: () => void;\r\n}) {\r\n const { request } = props;\r\n const initial = request.customSelection ?? {\r\n startRow: 1,\r\n startColumn: 1,\r\n endRow: 1,\r\n endColumn: 1,\r\n rowCount: 0,\r\n columnCount: 0,\r\n };\r\n const [range, setRange] = useState(initial);\r\n\r\n useEffect(() => {\r\n setRange(initial);\r\n }, [\r\n initial.startRow,\r\n initial.startColumn,\r\n initial.endRow,\r\n initial.endColumn,\r\n ]);\r\n\r\n if (!request.onCopyCustomSelection || !request.customSelection) {\r\n return null;\r\n }\r\n\r\n const update = (key: keyof typeof range, value: number | null) => {\r\n setRange((current) => ({\r\n ...current,\r\n [key]: value == null ? 1 : Math.floor(value),\r\n }));\r\n };\r\n\r\n return (\r\n <ReactModal\r\n open\r\n title=\"复制自定义选区\"\r\n width={360}\r\n centered\r\n fullscreenable={false}\r\n onCancel={props.onClose}\r\n onOk={() => {\r\n request.onCopyCustomSelection?.({\r\n startRow: Math.max(range.startRow, 1),\r\n startColumn: Math.max(range.startColumn, 1),\r\n endRow: Math.max(range.endRow, 1),\r\n endColumn: Math.max(range.endColumn, 1),\r\n });\r\n props.onClose();\r\n }}\r\n bodyStyle={{ padding: \"4px 20px 18px\" }}\r\n >\r\n <div style={{ color: \"#6b7280\", fontSize: 12, marginBottom: 10 }}>\r\n 输入起始位置和结束位置\r\n </div>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"38px 1fr 1fr\",\r\n gap: 8,\r\n marginBottom: 6,\r\n color: \"#6b7280\",\r\n fontSize: 12,\r\n textAlign: \"center\",\r\n }}\r\n >\r\n <span />\r\n <span>行</span>\r\n <span>列</span>\r\n </div>\r\n <CustomSelectionRow\r\n label=\"起始\"\r\n row={range.startRow}\r\n column={range.startColumn}\r\n onRowChange={(value) => update(\"startRow\", value)}\r\n onColumnChange={(value) => update(\"startColumn\", value)}\r\n />\r\n <CustomSelectionRow\r\n label=\"结束\"\r\n row={range.endRow}\r\n column={range.endColumn}\r\n onRowChange={(value) => update(\"endRow\", value)}\r\n onColumnChange={(value) => update(\"endColumn\", value)}\r\n />\r\n </ReactModal>\r\n );\r\n}\r\n\r\nfunction CustomSelectionRow(props: {\r\n label: string;\r\n row: number;\r\n column: number;\r\n onRowChange: (value: number | null) => void;\r\n onColumnChange: (value: number | null) => void;\r\n}) {\r\n return (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"38px 1fr 1fr\",\r\n gap: 6,\r\n alignItems: \"center\",\r\n marginBottom: 6,\r\n }}\r\n >\r\n <span style={{ color: \"#374151\", fontSize: 12 }}>{props.label}</span>\r\n <ReactInputNumber\r\n className=\"react-list-table-custom-selection-input\"\r\n value={props.row}\r\n min={1}\r\n step={1}\r\n precision={0}\r\n placeholder=\"行\"\r\n onChange={props.onRowChange}\r\n />\r\n <ReactInputNumber\r\n className=\"react-list-table-custom-selection-input\"\r\n value={props.column}\r\n min={1}\r\n step={1}\r\n precision={0}\r\n placeholder=\"列\"\r\n onChange={props.onColumnChange}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nfunction SummaryMenu(props: { request: HeaderContextMenuConfig }) {\r\n const { request } = props;\r\n const [precision, setPrecision] = useState<number | null>(\r\n request.summaryPrecision ?? null,\r\n );\r\n const [roundingMode, setRoundingMode] =\r\n useState<ListTableSummaryRoundingMode>(\r\n request.summaryRoundingMode ?? \"round\",\r\n );\r\n const [preserveTrailingZeros, setPreserveTrailingZeros] = useState(\r\n request.summaryPreserveTrailingZeros ?? false,\r\n );\r\n\r\n useEffect(() => {\r\n setPrecision(request.summaryPrecision ?? null);\r\n setRoundingMode(request.summaryRoundingMode ?? \"round\");\r\n setPreserveTrailingZeros(request.summaryPreserveTrailingZeros ?? false);\r\n }, [\r\n request.summaryColumnKey,\r\n request.summaryPrecision,\r\n request.summaryRoundingMode,\r\n request.summaryPreserveTrailingZeros,\r\n ]);\r\n\r\n if (!request.summaryColumnKey) {\r\n return null;\r\n }\r\n\r\n const summaryTypes: Array<{\r\n key: string;\r\n label: string;\r\n value: NonNullable<HeaderContextMenuConfig[\"summaryType\"]>;\r\n }> = [\r\n { key: \"sum\", label: \"求和\", value: \"sum\" },\r\n { key: \"avg\", label: \"平均值\", value: \"avg\" },\r\n { key: \"count\", label: \"计数\", value: \"count\" },\r\n { key: \"unionCount\", label: \"去重计数\", value: \"unionCount\" },\r\n { key: \"rowCount\", label: \"行数\", value: \"rowCount\" },\r\n { key: \"mergedRowCount\", label: \"合并行数\", value: \"mergedRowCount\" },\r\n { key: \"min\", label: \"最小值\", value: \"min\" },\r\n { key: \"max\", label: \"最大值\", value: \"max\" },\r\n ];\r\n return (\r\n <MenuSubmenu\r\n label=\"汇总方式\"\r\n minWidth={268}\r\n items={summaryTypes.map((item) => ({\r\n key: item.key,\r\n label: item.label,\r\n selected: request.summaryType === item.value,\r\n onClick: () => request.onChangeSummaryType?.(item.value),\r\n }))}\r\n footer={\r\n request.onChangeSummaryPrecision ||\r\n request.onChangeSummaryRoundingMode ||\r\n request.onChangeSummaryPreserveTrailingZeros ? (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"72px 1fr\",\r\n gap: 8,\r\n alignItems: \"center\",\r\n marginTop: 4,\r\n padding: \"10px 10px 2px\",\r\n borderTop: \"1px solid #e5e7eb\",\r\n }}\r\n >\r\n {request.onChangeSummaryPrecision ? (\r\n <>\r\n <span style={{ color: \"#374151\", fontSize: 13 }}>小数位数</span>\r\n <ReactInputNumber\r\n value={precision}\r\n min={0}\r\n max={20}\r\n step={1}\r\n precision={0}\r\n placeholder=\"默认\"\r\n onChange={setPrecision}\r\n onCommit={(value) => {\r\n request.onChangeSummaryPrecision?.(value ?? undefined);\r\n }}\r\n />\r\n </>\r\n ) : null}\r\n {request.onChangeSummaryRoundingMode ? (\r\n <>\r\n <span style={{ color: \"#374151\", fontSize: 13 }}>取整方式</span>\r\n <ReactSelect\r\n value={roundingMode}\r\n options={[\r\n { label: \"四舍五入\", value: \"round\" },\r\n { label: \"向下取整\", value: \"floor\" },\r\n { label: \"向上取整\", value: \"ceil\" },\r\n { label: \"舍去不处理\", value: \"truncate\" },\r\n ]}\r\n onChange={(value) => {\r\n const mode = value as ListTableSummaryRoundingMode;\r\n setRoundingMode(mode);\r\n request.onChangeSummaryRoundingMode?.(mode);\r\n }}\r\n />\r\n </>\r\n ) : null}\r\n {request.onChangeSummaryPreserveTrailingZeros ? (\r\n <>\r\n <span style={{ color: \"#374151\", fontSize: 13 }}>保留无效零</span>\r\n <ReactSelect\r\n value={preserveTrailingZeros ? \"true\" : \"false\"}\r\n options={[\r\n { label: \"不保留\", value: \"false\" },\r\n { label: \"保留\", value: \"true\" },\r\n ]}\r\n onChange={(selectedValue) => {\r\n const value = selectedValue === \"true\";\r\n setPreserveTrailingZeros(value);\r\n request.onChangeSummaryPreserveTrailingZeros?.(value);\r\n }}\r\n />\r\n </>\r\n ) : null}\r\n </div>\r\n ) : undefined\r\n }\r\n />\r\n );\r\n}\r\n\r\nfunction AlignmentMenu(props: { request: HeaderContextMenuConfig }) {\r\n const { request } = props;\r\n if (!request.alignment || !request.onChangeAlignment) {\r\n return null;\r\n }\r\n\r\n return (\r\n <MenuSubmenu\r\n label=\"对齐方式\"\r\n items={[]}\r\n footer={\r\n <div style={{ display: \"grid\", gap: 10, padding: \"4px 8px\" }}>\r\n <AlignmentGroup\r\n label=\"表头\"\r\n horizontal={request.alignment.headerHorizontal}\r\n vertical={request.alignment.headerVertical}\r\n onHorizontalChange={(value) =>\r\n request.onChangeAlignment?.(\"header\", \"horizontal\", value)\r\n }\r\n onVerticalChange={(value) =>\r\n request.onChangeAlignment?.(\"header\", \"vertical\", value)\r\n }\r\n />\r\n <AlignmentGroup\r\n label=\"表体\"\r\n horizontal={request.alignment.bodyHorizontal}\r\n vertical={request.alignment.bodyVertical}\r\n onHorizontalChange={(value) =>\r\n request.onChangeAlignment?.(\"body\", \"horizontal\", value)\r\n }\r\n onVerticalChange={(value) =>\r\n request.onChangeAlignment?.(\"body\", \"vertical\", value)\r\n }\r\n />\r\n </div>\r\n }\r\n />\r\n );\r\n}\r\n\r\nfunction AlignmentGroup(props: {\r\n label: string;\r\n horizontal: \"left\" | \"center\" | \"right\";\r\n vertical: \"top\" | \"middle\" | \"bottom\";\r\n onHorizontalChange: (value: \"left\" | \"center\" | \"right\") => void;\r\n onVerticalChange: (value: \"top\" | \"middle\" | \"bottom\") => void;\r\n}) {\r\n return (\r\n <div style={{ display: \"grid\", gap: 6 }}>\r\n <strong style={{ color: \"#374151\", fontSize: 13 }}>{props.label}</strong>\r\n <AlignmentSegment\r\n label=\"水平\"\r\n value={props.horizontal}\r\n options={[\r\n { label: \"左\", value: \"left\" },\r\n { label: \"中\", value: \"center\" },\r\n { label: \"右\", value: \"right\" },\r\n ]}\r\n onChange={props.onHorizontalChange}\r\n />\r\n <AlignmentSegment\r\n label=\"垂直\"\r\n value={props.vertical}\r\n options={[\r\n { label: \"上\", value: \"top\" },\r\n { label: \"中\", value: \"middle\" },\r\n { label: \"下\", value: \"bottom\" },\r\n ]}\r\n onChange={props.onVerticalChange}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nfunction AlignmentSegment<Value extends string>(props: {\r\n label: string;\r\n value: Value;\r\n options: Array<{ label: string; value: Value }>;\r\n onChange: (value: Value) => void;\r\n}) {\r\n return (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"40px repeat(3, 1fr)\",\r\n gap: 4,\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <span style={{ color: \"#6b7280\", fontSize: 12 }}>{props.label}</span>\r\n {props.options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n className=\"react-list-table-menu-action\"\r\n style={{\r\n height: 28,\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 4,\r\n background: props.value === option.value ? \"#e8f3ff\" : \"#ffffff\",\r\n color: props.value === option.value ? \"#1677ff\" : \"#374151\",\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => props.onChange(option.value)}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nfunction DataFormatMenu(props: {\r\n request: HeaderContextMenuConfig;\r\n onOpenMoreFormat: () => void;\r\n}) {\r\n const { request } = props;\r\n\r\n if (!request.onChangeDataFormat) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <MenuSubmenu\r\n label=\"格式\"\r\n minWidth={340}\r\n items={(\r\n [\r\n { key: \"default\", label: \"常规\", value: \"default\" },\r\n { key: \"text\", label: \"纯文本\", value: \"text\" },\r\n {\r\n key: \"number\",\r\n label: \"数字\",\r\n preview: \"1024\",\r\n value: \"number\",\r\n separatorBefore: true,\r\n },\r\n {\r\n key: \"thousands\",\r\n label: \"数字(千分位)\",\r\n preview: \"1,024\",\r\n value: \"thousands\",\r\n },\r\n {\r\n key: \"decimal\",\r\n label: \"数字(千分位,小数点)\",\r\n preview: \"1,024.56\",\r\n value: \"decimal\",\r\n },\r\n {\r\n key: \"percent\",\r\n label: \"百分比\",\r\n preview: \"10%\",\r\n value: \"percent\",\r\n separatorBefore: true,\r\n },\r\n {\r\n key: \"percentDecimal\",\r\n label: \"百分比(小数点)\",\r\n preview: \"10.24%\",\r\n value: \"percentDecimal\",\r\n },\r\n {\r\n key: \"scientific\",\r\n label: \"科学记数\",\r\n preview: \"1.02E+003\",\r\n value: \"scientific\",\r\n },\r\n {\r\n key: \"numberToChineseUpper\",\r\n label: \"数字转大写\",\r\n preview: \"玖拾壹万捌仟\",\r\n value: \"numberToChineseUpper\",\r\n },\r\n {\r\n key: \"chineseUpperToNumber\",\r\n label: \"大写转数字\",\r\n preview: \"918000\",\r\n value: \"chineseUpperToNumber\",\r\n },\r\n {\r\n key: \"cny\",\r\n label: \"人民币\",\r\n preview: \"¥1,024\",\r\n value: \"cny\",\r\n separatorBefore: true,\r\n },\r\n {\r\n key: \"cnyDecimal\",\r\n label: \"人民币(小数点)\",\r\n preview: \"¥1,024.56\",\r\n value: \"cnyDecimal\",\r\n },\r\n {\r\n key: \"usd\",\r\n label: \"美元\",\r\n preview: \"$1,024\",\r\n value: \"usd\",\r\n },\r\n {\r\n key: \"usdDecimal\",\r\n label: \"美元(小数点)\",\r\n preview: \"$1,024.56\",\r\n value: \"usdDecimal\",\r\n },\r\n {\r\n key: \"dateSlash\",\r\n label: \"日期(斜杠)\",\r\n preview: \"2017/08/01\",\r\n value: \"dateSlash\",\r\n separatorBefore: true,\r\n },\r\n {\r\n key: \"dateDash\",\r\n label: \"日期(短横线)\",\r\n preview: \"2017-08-01\",\r\n value: \"dateDash\",\r\n },\r\n {\r\n key: \"dateFullCN\",\r\n label: \"日期(中文)\",\r\n preview: \"2017年8月1日\",\r\n value: \"dateFullCN\",\r\n },\r\n { key: \"time\", label: \"时间\", preview: \"23:24:25\", value: \"time\" },\r\n {\r\n key: \"timeShort\",\r\n label: \"时间(分)\",\r\n preview: \"23:24\",\r\n value: \"timeShort\",\r\n },\r\n {\r\n key: \"datetime\",\r\n label: \"日期时间\",\r\n preview: \"2017/08/01 23:24:25\",\r\n value: \"datetime\",\r\n },\r\n {\r\n key: \"datetime12\",\r\n label: \"日期时间(上下)\",\r\n preview: \"2017/08/01 下午11:24\",\r\n value: \"datetime12\",\r\n },\r\n {\r\n key: \"more\",\r\n label: \"更多格式\",\r\n separatorBefore: true,\r\n onClick: props.onOpenMoreFormat,\r\n },\r\n ] as const\r\n ).map((item) => ({\r\n key: `data-format-${item.key}`,\r\n label: item.label,\r\n preview: \"preview\" in item ? item.preview : undefined,\r\n separatorBefore:\r\n \"separatorBefore\" in item ? item.separatorBefore : undefined,\r\n disabled: \"disabled\" in item && item.disabled === true,\r\n selected: \"value\" in item && request.dataFormat === item.value,\r\n onClick:\r\n \"onClick\" in item\r\n ? item.onClick\r\n : \"value\" in item\r\n ? () => request.onChangeDataFormat?.(item.value)\r\n : undefined,\r\n }))}\r\n />\r\n </>\r\n );\r\n}\r\n\r\nfunction MoreFormatDialog(props: {\r\n request: HeaderContextMenuConfig;\r\n onClose: () => void;\r\n}) {\r\n const { request } = props;\r\n const [category, setCategory] = useState(() =>\r\n resolveMoreFormatCategory(request.dataFormat),\r\n );\r\n const [customPattern, setCustomPattern] = useState(() =>\r\n typeof request.dataFormat === \"object\" &&\r\n request.dataFormat.type === \"custom\"\r\n ? (request.dataFormat.pattern ?? \"#,##0.00\")\r\n : \"#,##0.00\",\r\n );\r\n const [decimalPlaces, setDecimalPlaces] = useState(() =>\r\n typeof request.dataFormat === \"object\"\r\n ? (request.dataFormat.decimalPlaces ?? 2)\r\n : 2,\r\n );\r\n const [useGrouping, setUseGrouping] = useState(() =>\r\n typeof request.dataFormat === \"object\"\r\n ? (request.dataFormat.useGrouping ?? false)\r\n : false,\r\n );\r\n const [currency, setCurrency] = useState(() =>\r\n typeof request.dataFormat === \"object\"\r\n ? (request.dataFormat.symbol ?? \"¥\")\r\n : \"¥\",\r\n );\r\n const [datePattern, setDatePattern] = useState(() =>\r\n resolveInitialFormatPattern(request.dataFormat, \"date\"),\r\n );\r\n const [timePattern, setTimePattern] = useState(() =>\r\n resolveInitialFormatPattern(request.dataFormat, \"time\"),\r\n );\r\n\r\n return (\r\n <ReactModal\r\n open\r\n title=\"设置单元格数字格式\"\r\n width={480}\r\n centered\r\n fullscreenable={false}\r\n onCancel={props.onClose}\r\n onOk={() => {\r\n request.onChangeDataFormat?.(\r\n resolveMoreFormatValue(\r\n category,\r\n customPattern,\r\n decimalPlaces,\r\n currency,\r\n datePattern,\r\n timePattern,\r\n useGrouping,\r\n ),\r\n );\r\n props.onClose();\r\n }}\r\n bodyStyle={{ padding: \"0 20px 18px\" }}\r\n >\r\n <MoreFormatDialogBody\r\n category={category}\r\n customPattern={customPattern}\r\n decimalPlaces={decimalPlaces}\r\n useGrouping={useGrouping}\r\n currency={currency}\r\n datePattern={datePattern}\r\n timePattern={timePattern}\r\n onCategoryChange={setCategory}\r\n onCustomPatternChange={setCustomPattern}\r\n onDecimalPlacesChange={setDecimalPlaces}\r\n onGroupingChange={setUseGrouping}\r\n onCurrencyChange={setCurrency}\r\n onDatePatternChange={setDatePattern}\r\n onTimePatternChange={setTimePattern}\r\n />\r\n </ReactModal>\r\n );\r\n}\r\n\r\ntype MoreFormatCategory =\r\n | \"general\"\r\n | \"number\"\r\n | \"currency\"\r\n | \"date\"\r\n | \"time\"\r\n | \"percent\"\r\n | \"scientific\"\r\n | \"text\"\r\n | \"custom\";\r\n\r\nconst MORE_FORMAT_CATEGORIES: Array<{\r\n key: MoreFormatCategory;\r\n label: string;\r\n}> = [\r\n { key: \"general\", label: \"常规\" },\r\n { key: \"number\", label: \"数值\" },\r\n { key: \"currency\", label: \"货币\" },\r\n { key: \"date\", label: \"日期\" },\r\n { key: \"time\", label: \"时间\" },\r\n { key: \"percent\", label: \"百分比\" },\r\n { key: \"scientific\", label: \"科学记数\" },\r\n { key: \"text\", label: \"文本\" },\r\n { key: \"custom\", label: \"自定义\" },\r\n];\r\n\r\nfunction MoreFormatDialogBody(props: {\r\n category: MoreFormatCategory;\r\n customPattern: string;\r\n decimalPlaces: number;\r\n useGrouping: boolean;\r\n currency: string;\r\n datePattern: string;\r\n timePattern: string;\r\n onCategoryChange: (category: MoreFormatCategory) => void;\r\n onCustomPatternChange: (pattern: string) => void;\r\n onDecimalPlacesChange: (value: number) => void;\r\n onGroupingChange: (value: boolean) => void;\r\n onCurrencyChange: (value: string) => void;\r\n onDatePatternChange: (value: string) => void;\r\n onTimePatternChange: (value: string) => void;\r\n}) {\r\n const sample = resolveMoreFormatSample(\r\n props.category,\r\n props.customPattern,\r\n props.decimalPlaces,\r\n props.currency,\r\n props.datePattern,\r\n props.timePattern,\r\n props.useGrouping,\r\n );\r\n return (\r\n <div style={{ display: \"grid\", gap: 14 }}>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"120px 1fr\",\r\n gap: 18,\r\n alignItems: \"stretch\",\r\n height: 320,\r\n }}\r\n >\r\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\r\n <div style={moreFormatLabelStyle}>类别</div>\r\n <div style={{ ...moreFormatCategoryListStyle, flex: 1 }}>\r\n {MORE_FORMAT_CATEGORIES.map((item) => (\r\n <button\r\n key={item.key}\r\n type=\"button\"\r\n onClick={() => props.onCategoryChange(item.key)}\r\n style={{\r\n ...moreFormatCategoryButtonStyle,\r\n ...(props.category === item.key\r\n ? moreFormatCategorySelectedStyle\r\n : null),\r\n }}\r\n >\r\n {item.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n <div>\r\n <div style={moreFormatLabelStyle}>示例</div>\r\n <div style={moreFormatExampleStyle}>{sample}</div>\r\n <MoreFormatOptions {...props} />\r\n </div>\r\n </div>\r\n <div style={moreFormatDescriptionStyle}>\r\n 常规单元格格式不包含任何特定的数字格式\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction MoreFormatOptions(props: Parameters<typeof MoreFormatDialogBody>[0]) {\r\n if (\r\n props.category === \"number\" ||\r\n props.category === \"percent\" ||\r\n props.category === \"scientific\"\r\n ) {\r\n return (\r\n <div style={moreFormatOptionsStyle}>\r\n <span style={moreFormatLabelStyle}>小数位数</span>\r\n <ReactInputNumber\r\n value={props.decimalPlaces}\r\n min={0}\r\n max={20}\r\n precision={0}\r\n onChange={(value) => props.onDecimalPlacesChange(value ?? 0)}\r\n style={{ width: 96 }}\r\n />\r\n {props.category === \"number\" ? (\r\n <ReactCheckbox\r\n checked={props.useGrouping}\r\n onChange={(event) => props.onGroupingChange(event.target.checked)}\r\n >\r\n 显示千分位分隔符(,)\r\n </ReactCheckbox>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n if (props.category === \"currency\") {\r\n return (\r\n <div style={moreFormatOptionsStyle}>\r\n <span style={moreFormatLabelStyle}>小数位数</span>\r\n <ReactInputNumber\r\n value={props.decimalPlaces}\r\n min={0}\r\n max={20}\r\n precision={0}\r\n onChange={(value) => props.onDecimalPlacesChange(value ?? 0)}\r\n style={{ width: 96 }}\r\n />\r\n <span style={moreFormatLabelStyle}>货币符号</span>\r\n <ReactSelect\r\n value={props.currency}\r\n options={[\r\n { label: \"¥\", value: \"¥\" },\r\n { label: \"$\", value: \"$\" },\r\n ]}\r\n onChange={props.onCurrencyChange}\r\n style={{ width: 150 }}\r\n />\r\n </div>\r\n );\r\n }\r\n if (props.category === \"date\") {\r\n return (\r\n <FormatChoiceList\r\n label=\"类型\"\r\n value={props.datePattern}\r\n options={DATE_FORMAT_OPTIONS}\r\n onChange={props.onDatePatternChange}\r\n allowInput\r\n inputLabel=\"自定义格式\"\r\n inputPlaceholder=\"例如:YYYY-MM-DD HH:mm:ss\"\r\n />\r\n );\r\n }\r\n if (props.category === \"time\") {\r\n return (\r\n <FormatChoiceList\r\n label=\"类型\"\r\n value={props.timePattern}\r\n options={TIME_FORMAT_OPTIONS}\r\n onChange={props.onTimePatternChange}\r\n />\r\n );\r\n }\r\n if (props.category === \"custom\") {\r\n return (\r\n <FormatChoiceList\r\n label=\"类型\"\r\n value={props.customPattern}\r\n options={[\r\n \"@\",\r\n \"G/通用格式\",\r\n '0,\"万\"',\r\n '0.0,\"万\"',\r\n '0.00,\"万\"',\r\n '\"**********\"',\r\n \"0\",\r\n \"0.0\",\r\n \"0.00\",\r\n \"0.000\",\r\n \"#,##0\",\r\n \"#,##0.0\",\r\n \"#,##0.00\",\r\n \"#,##0.000\",\r\n \"#,##0;[红色]-#,##0\",\r\n \"0%\",\r\n \"0.0%\",\r\n \"0.00%\",\r\n \"¥#,##0\",\r\n \"¥#,##0.00\",\r\n \"$#,##0\",\r\n \"$#,##0.00\",\r\n \"0.00E+00\",\r\n \"YYYY/M/D\",\r\n \"YYYY/MM/DD\",\r\n \"YYYY-MM-DD\",\r\n \"HH:mm\",\r\n \"HH:mm:ss\",\r\n \"Ah:mm\",\r\n \"Ah:mm:ss\",\r\n \"YYYY/M/D HH:mm\",\r\n \"YYYY-MM-DD HH:mm:ss\",\r\n ]}\r\n onChange={props.onCustomPatternChange}\r\n allowInput\r\n />\r\n );\r\n }\r\n return null;\r\n}\r\n\r\nfunction FormatChoiceList(props: {\r\n label: string;\r\n value: string;\r\n options: Array<string | { label: string; value: string }>;\r\n onChange: (value: string) => void;\r\n allowInput?: boolean;\r\n inputLabel?: string;\r\n inputPlaceholder?: string;\r\n}) {\r\n return (\r\n <div style={{ marginTop: 16 }}>\r\n {props.allowInput ? (\r\n <>\r\n <div style={moreFormatLabelStyle}>\r\n {props.inputLabel ?? props.label}\r\n </div>\r\n <ReactInput\r\n value={props.value}\r\n placeholder={props.inputPlaceholder}\r\n onChange={(event) => props.onChange(event.target.value)}\r\n />\r\n </>\r\n ) : null}\r\n <div\r\n style={{\r\n ...moreFormatLabelStyle,\r\n marginTop: props.allowInput ? 14 : 0,\r\n }}\r\n >\r\n {props.label}\r\n </div>\r\n <div style={moreFormatChoiceListStyle}>\r\n {props.options.map((option) => {\r\n const value = typeof option === \"string\" ? option : option.value;\r\n const label = typeof option === \"string\" ? option : option.label;\r\n return (\r\n <button\r\n key={value}\r\n type=\"button\"\r\n onClick={() => props.onChange(value)}\r\n style={{\r\n ...moreFormatChoiceStyle,\r\n ...(props.value === value\r\n ? moreFormatChoiceSelectedStyle\r\n : null),\r\n }}\r\n >\r\n {label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction resolveMoreFormatCategory(\r\n dataFormat: HeaderContextMenuConfig[\"dataFormat\"],\r\n): MoreFormatCategory {\r\n const type = typeof dataFormat === \"object\" ? dataFormat.type : dataFormat;\r\n if (type === \"custom\") return \"custom\";\r\n if (type === \"percent\" || type === \"percentDecimal\") return \"percent\";\r\n if (\r\n type === \"cny\" ||\r\n type === \"cnyDecimal\" ||\r\n type === \"usd\" ||\r\n type === \"usdDecimal\" ||\r\n type === \"money\"\r\n )\r\n return \"currency\";\r\n if (\r\n type === \"dateSlash\" ||\r\n type === \"dateDash\" ||\r\n type === \"dateFullCN\" ||\r\n type === \"dateYearMonthCN\" ||\r\n type === \"dateMonthDayCN\" ||\r\n type === \"dateSlashWeek\" ||\r\n type === \"dateDashWeek\" ||\r\n type === \"dateWeekdayCNFull\" ||\r\n type === \"dateWeekdayCNShort\" ||\r\n type === \"datetime\" ||\r\n type === \"datetime12\" ||\r\n type === \"datetime12Seconds\"\r\n )\r\n return \"date\";\r\n if (\r\n type === \"time\" ||\r\n type === \"timeShort\" ||\r\n type === \"time12\" ||\r\n type === \"time12Seconds\" ||\r\n type === \"timeMillisecond\" ||\r\n type === \"time12Millisecond\" ||\r\n type === \"timeChineseHour\" ||\r\n type === \"timeChineseSecond\" ||\r\n type === \"time12ChineseHour\" ||\r\n type === \"time12ChineseSecond\"\r\n )\r\n return \"time\";\r\n if (type === \"scientific\") return \"scientific\";\r\n if (type === \"text\") return \"text\";\r\n if (\r\n type === \"number\" ||\r\n type === \"thousands\" ||\r\n type === \"decimal\" ||\r\n type === \"numberToChineseUpper\" ||\r\n type === \"chineseUpperToNumber\"\r\n )\r\n return \"number\";\r\n return \"general\";\r\n}\r\n\r\ninterface DateTimeFormatOption {\r\n label: string;\r\n value: string;\r\n type: ListTableDataFormatType;\r\n}\r\n\r\nconst DATE_FORMAT_OPTIONS: DateTimeFormatOption[] = [\r\n { label: \"2012/3/14\", value: \"YYYY/M/D\", type: \"dateSlash\" },\r\n { label: \"2012/03/14\", value: \"YYYY/MM/DD\", type: \"dateSlash\" },\r\n { label: \"2012-3-14\", value: \"YYYY-M-D\", type: \"dateDash\" },\r\n { label: \"2012-03-14\", value: \"YYYY-MM-DD\", type: \"dateDash\" },\r\n { label: \"2012.03.14\", value: \"YYYY.MM.DD\", type: \"dateSlash\" },\r\n { label: \"14/03/2012\", value: \"DD/MM/YYYY\", type: \"dateSlash\" },\r\n { label: \"03/14/2012\", value: \"MM/DD/YYYY\", type: \"dateSlash\" },\r\n { label: \"12年3月14日\", value: \"YY年M月D日\", type: \"dateFullCN\" },\r\n { label: \"2012年3月14日\", value: \"YYYY年M月D日\", type: \"dateFullCN\" },\r\n { label: \"2012年3月\", value: \"YYYY年M月\", type: \"dateYearMonthCN\" },\r\n { label: \"3月14日\", value: \"M月D日\", type: \"dateMonthDayCN\" },\r\n { label: \"星期三\", value: \"dddd\", type: \"dateWeekdayCNFull\" },\r\n { label: \"周三\", value: \"ddd\", type: \"dateWeekdayCNShort\" },\r\n { label: \"2012/3/14 星期三\", value: \"YYYY/M/D dddd\", type: \"dateSlashWeek\" },\r\n {\r\n label: \"2012-03-14 星期三\",\r\n value: \"YYYY-MM-DD dddd\",\r\n type: \"dateDashWeek\",\r\n },\r\n { label: \"2012/3/14 14:30\", value: \"YYYY/M/D HH:mm\", type: \"datetime\" },\r\n { label: \"2012/3/14 14:30:55\", value: \"YYYY/M/D HH:mm:ss\", type: \"datetime\" },\r\n {\r\n label: \"2012-03-14 14:30:55\",\r\n value: \"YYYY-MM-DD HH:mm:ss\",\r\n type: \"datetime\",\r\n },\r\n { label: \"2012/3/14 下午2:30\", value: \"YYYY/M/D Ah:mm\", type: \"datetime12\" },\r\n {\r\n label: \"2012/3/14 下午2:30:55\",\r\n value: \"YYYY/M/D Ah:mm:ss\",\r\n type: \"datetime12Seconds\",\r\n },\r\n];\r\n\r\nconst TIME_FORMAT_OPTIONS: DateTimeFormatOption[] = [\r\n { label: \"14:30\", value: \"HH:mm\", type: \"timeShort\" },\r\n { label: \"14:30:55\", value: \"HH:mm:ss\", type: \"time\" },\r\n { label: \"14:30:55.123\", value: \"HH:mm:ss.SSS\", type: \"timeMillisecond\" },\r\n { label: \"下午2:30\", value: \"Ah:mm\", type: \"time12\" },\r\n { label: \"下午2:30:55\", value: \"Ah:mm:ss\", type: \"time12Seconds\" },\r\n {\r\n label: \"下午2:30:55.123\",\r\n value: \"Ah:mm:ss.SSS\",\r\n type: \"time12Millisecond\",\r\n },\r\n { label: \"14时30分\", value: \"H时mm分\", type: \"timeChineseHour\" },\r\n { label: \"14时30分55秒\", value: \"H时mm分ss秒\", type: \"timeChineseSecond\" },\r\n { label: \"下午2时30分\", value: \"Ah时mm分\", type: \"time12ChineseHour\" },\r\n {\r\n label: \"下午2时30分55秒\",\r\n value: \"Ah时mm分ss秒\",\r\n type: \"time12ChineseSecond\",\r\n },\r\n];\r\n\r\nconst DATE_TIME_FORMAT_SAMPLE = new Date(2012, 2, 14, 14, 30, 55, 123);\r\n\r\n/** 根据当前数据格式推导“更多格式”弹窗中日期/时间类型的初始选中项。 */\r\nfunction resolveInitialFormatPattern(\r\n dataFormat: HeaderContextMenuConfig[\"dataFormat\"],\r\n kind: \"date\" | \"time\",\r\n) {\r\n if (typeof dataFormat === \"object\" && dataFormat.pattern) {\r\n return dataFormat.pattern;\r\n }\r\n if (typeof dataFormat === \"string\") {\r\n const source = kind === \"date\" ? DATE_FORMAT_OPTIONS : TIME_FORMAT_OPTIONS;\r\n const match = source.find((option) => option.type === dataFormat);\r\n if (match) return match.value;\r\n }\r\n return kind === \"date\" ? \"YYYY/M/D\" : \"HH:mm\";\r\n}\r\n\r\nfunction resolveMoreFormatValue(\r\n category: MoreFormatCategory,\r\n customPattern: string,\r\n decimalPlaces = 2,\r\n currency = \"¥\",\r\n datePattern = \"YYYY/M/D\",\r\n timePattern = \"HH:mm\",\r\n useGrouping = false,\r\n): ListTableDataFormat {\r\n if (category === \"number\")\r\n return { type: \"number\", decimalPlaces, useGrouping };\r\n if (category === \"currency\") {\r\n return {\r\n type: currency === \"$\" ? \"usd\" : \"cny\",\r\n decimalPlaces,\r\n useGrouping: true,\r\n symbol: currency,\r\n };\r\n }\r\n if (category === \"date\") {\r\n return {\r\n type:\r\n DATE_FORMAT_OPTIONS.find((option) => option.value === datePattern)\r\n ?.type ?? \"datetime\",\r\n pattern: datePattern,\r\n };\r\n }\r\n if (category === \"time\") {\r\n return {\r\n type:\r\n TIME_FORMAT_OPTIONS.find((option) => option.value === timePattern)\r\n ?.type ?? \"time\",\r\n pattern: timePattern,\r\n };\r\n }\r\n if (category === \"percent\") return { type: \"percent\", decimalPlaces };\r\n if (category === \"scientific\") return { type: \"scientific\", decimalPlaces };\r\n if (category === \"text\") return \"text\";\r\n if (category === \"custom\") return { type: \"custom\", pattern: customPattern };\r\n return \"default\";\r\n}\r\n\r\nfunction resolveMoreFormatSample(\r\n category: MoreFormatCategory,\r\n customPattern: string,\r\n decimalPlaces = 2,\r\n currency = \"¥\",\r\n datePattern = \"YYYY/M/D\",\r\n timePattern = \"HH:mm\",\r\n useGrouping = false,\r\n) {\r\n if (category === \"date\") {\r\n return formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, datePattern) ?? \"\";\r\n }\r\n if (category === \"time\") {\r\n return formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, timePattern) ?? \"\";\r\n }\r\n if (category === \"number\") {\r\n return formatNumberValue(1024.56, {\r\n decimalPlaces,\r\n thousandsSeparator: useGrouping,\r\n });\r\n }\r\n if (category === \"currency\") {\r\n return formatNumberValue(1024.56, {\r\n decimalPlaces,\r\n thousandsSeparator: true,\r\n symbol: currency,\r\n });\r\n }\r\n if (category === \"percent\") return formatPercentValue(0.1024, decimalPlaces);\r\n if (category === \"scientific\") {\r\n return formatScientificValue(1024, decimalPlaces);\r\n }\r\n if (category === \"custom\") {\r\n return isDateTimeFormatPattern(customPattern)\r\n ? (formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, customPattern) ?? \"\")\r\n : formatCustomNumberPattern(1024.56, customPattern);\r\n }\r\n const format = resolveMoreFormatValue(\r\n category,\r\n customPattern,\r\n decimalPlaces,\r\n currency,\r\n datePattern,\r\n );\r\n const samples: Record<string, string> = {\r\n default: \"\",\r\n text: \"1024\",\r\n number: \"1024\",\r\n thousands: \"1,024\",\r\n decimal: \"1,024.56\",\r\n percent: \"10%\",\r\n percentDecimal: \"10.24%\",\r\n scientific: \"1.02E+003\",\r\n numberToChineseUpper: \"玖拾壹万捌仟\",\r\n chineseUpperToNumber: \"918000\",\r\n cny: \"¥1,024\",\r\n cnyDecimal: \"¥1,024.56\",\r\n usd: \"$1,024\",\r\n usdDecimal: \"$1,024.56\",\r\n dateSlash: \"2017/08/01\",\r\n dateDash: \"2017-08-01\",\r\n dateFullCN: \"2017年8月1日\",\r\n dateYearMonthCN: \"2017年8月\",\r\n dateMonthDayCN: \"8月1日\",\r\n dateSlashWeek: \"2017/08/01 星期二\",\r\n dateDashWeek: \"2017-08-01 星期二\",\r\n dateWeekdayCNFull: \"星期二\",\r\n dateWeekdayCNShort: \"周二\",\r\n time: \"23:24:25\",\r\n timeShort: \"23:24\",\r\n time12: \"下午11:24\",\r\n time12Seconds: \"下午11:24:25\",\r\n timeMillisecond: \"23:24:25.123\",\r\n time12Millisecond: \"下午11:24:25.123\",\r\n timeChineseHour: \"23时24分\",\r\n timeChineseSecond: \"23时24分25秒\",\r\n time12ChineseHour: \"下午11时24分\",\r\n time12ChineseSecond: \"下午11时24分25秒\",\r\n datetime: \"2017/08/01 23:24:25\",\r\n datetime12: \"2017/08/01 下午11:24\",\r\n datetime12Seconds: \"2017/08/01 下午11:24:25\",\r\n money: \"1,024.00\",\r\n };\r\n return samples[typeof format === \"string\" ? format : format.type] ?? \"\";\r\n}\r\n\r\nconst moreFormatLabelStyle = {\r\n marginBottom: 6,\r\n color: \"#4b5563\",\r\n fontSize: 12,\r\n};\r\nconst moreFormatCategoryListStyle = {\r\n display: \"grid\",\r\n gap: 2,\r\n padding: 4,\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 4,\r\n};\r\nconst moreFormatCategoryButtonStyle = {\r\n height: 28,\r\n padding: \"0 8px\",\r\n border: 0,\r\n borderRadius: 4,\r\n background: \"transparent\",\r\n color: \"#374151\",\r\n textAlign: \"left\" as const,\r\n cursor: \"pointer\",\r\n};\r\nconst moreFormatCategorySelectedStyle = {\r\n background: \"#dbeafe\",\r\n color: \"#1677ff\",\r\n};\r\nconst moreFormatExampleStyle = {\r\n height: 32,\r\n padding: \"0 10px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 4,\r\n color: \"#374151\",\r\n background: \"#f8fafc\",\r\n};\r\nconst moreFormatDescriptionStyle = {\r\n color: \"#6b7280\",\r\n fontSize: 12,\r\n};\r\nconst moreFormatOptionsStyle = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\" as const,\r\n gap: 8,\r\n marginTop: 16,\r\n};\r\nconst moreFormatChoiceListStyle = {\r\n display: \"grid\",\r\n gap: 2,\r\n maxHeight: 150,\r\n overflow: \"auto\",\r\n padding: 4,\r\n border: \"1px solid #d1d5db\",\r\n borderRadius: 4,\r\n};\r\nconst moreFormatChoiceStyle = {\r\n minHeight: 26,\r\n padding: \"3px 8px\",\r\n border: 0,\r\n borderRadius: 3,\r\n background: \"transparent\",\r\n color: \"#1f2937\",\r\n textAlign: \"left\" as const,\r\n cursor: \"pointer\",\r\n};\r\nconst moreFormatChoiceSelectedStyle = {\r\n background: \"#f3f4f6\",\r\n color: \"#1677ff\",\r\n};\r\n","import { useEffect, useState, type CSSProperties } from \"react\";\nimport type { ListTableSearchRequest } from \"@canvas-components/list-table\";\nimport { ReactInput, ReactModal } from \"@canvas-components/react-components\";\n\nconst SEARCH_MODAL_BODY_STYLE: CSSProperties = {\n padding: 12,\n};\n\n/** ListTable 的无遮罩查找弹窗。 */\nexport function ReactListTableSearchDialog(props: {\n request: ListTableSearchRequest;\n}) {\n const { request } = props;\n const [keyword, setKeyword] = useState(request.keyword);\n\n useEffect(() => {\n setKeyword(request.keyword);\n }, [request.keyword]);\n\n const matchText =\n request.matchCount > 0\n ? `${request.currentIndex + 1} / ${request.matchCount}`\n : \"未找到\";\n\n return (\n <ReactModal\n open\n title=\"查找\"\n width={360}\n mask={false}\n centered={false}\n draggable\n fullscreenable={false}\n footer={false}\n onCancel={request.onClose}\n bodyStyle={SEARCH_MODAL_BODY_STYLE}\n style={{ marginTop: 96 }}\n >\n <div style={searchContentStyle}>\n <ReactInput\n autoFocus\n value={keyword}\n placeholder=\"查找内容\"\n onChange={(event) => {\n const value = event.target.value;\n setKeyword(value);\n }}\n onPressEnter={() => {\n request.onSubmit(keyword);\n }}\n />\n <span style={matchTextStyle}>{matchText}</span>\n <button\n type=\"button\"\n title=\"上一个\"\n onClick={() => {\n if (keyword !== request.keyword) {\n request.onSubmit(keyword);\n } else {\n request.onNavigate(\"previous\");\n }\n }}\n disabled={request.matchCount === 0 && keyword === request.keyword}\n style={toolButtonStyle}\n >\n ‹\n </button>\n <button\n type=\"button\"\n title=\"下一个\"\n onClick={() => {\n if (keyword !== request.keyword) {\n request.onSubmit(keyword);\n } else {\n request.onNavigate(\"next\");\n }\n }}\n disabled={request.matchCount === 0 && keyword === request.keyword}\n style={toolButtonStyle}\n >\n ›\n </button>\n </div>\n </ReactModal>\n );\n}\n\nconst searchContentStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n};\n\nconst matchTextStyle: CSSProperties = {\n minWidth: 58,\n color: \"#64748b\",\n fontSize: 12,\n whiteSpace: \"nowrap\",\n};\n\nconst toolButtonStyle: CSSProperties = {\n width: 28,\n height: 28,\n padding: 0,\n border: \"1px solid #d1d5db\",\n borderRadius: 4,\n background: \"#ffffff\",\n color: \"#475569\",\n fontSize: 18,\n lineHeight: 1,\n cursor: \"pointer\",\n};\n","import type { ListTableEditorRequest } from \"@canvas-components/list-table\";\n\nexport function toNumberValue(value: unknown) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n const nextValue = Number(value);\n return Number.isFinite(nextValue) ? nextValue : null;\n }\n return null;\n}\n\nexport function toNumericProp(value?: string | number) {\n if (typeof value === \"number\") {\n return value;\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n const nextValue = Number(value);\n return Number.isFinite(nextValue) ? nextValue : undefined;\n }\n return undefined;\n}\n\nfunction resolvePadding(value: number | undefined, fallback = 0) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0\n ? value\n : fallback;\n}\n\nfunction resolveEditorControlSize(request: ListTableEditorRequest) {\n const targetRect = request.hostRect ?? request.rect;\n const height = Math.max(targetRect.height - 2, 1);\n const fontSize =\n typeof request.theme.fontSize === \"number\" &&\n Number.isFinite(request.theme.fontSize) &&\n request.theme.fontSize > 0\n ? request.theme.fontSize\n : undefined;\n const paddingInline = resolvePadding(request.theme.paddingInline);\n const paddingBlock = resolvePadding(request.theme.paddingBlock);\n const contentZoom =\n typeof request.theme.contentZoom === \"number\" &&\n Number.isFinite(request.theme.contentZoom) &&\n request.theme.contentZoom > 0\n ? request.theme.contentZoom\n : 1;\n return { height, fontSize, paddingInline, paddingBlock, contentZoom };\n}\n\n/**\n * 编辑表单控件样式:使用缩放后的像素尺寸覆盖默认 32px 控件高度。\n * 时间 / 颜色 / 下拉等嵌套组件不能依赖 `height: 100%` 的 CSS 变量回退。\n */\nexport function getEditorInputStyle(request: ListTableEditorRequest) {\n const { height, fontSize, paddingInline, paddingBlock, contentZoom } =\n resolveEditorControlSize(request);\n\n return {\n width: \"100%\",\n height,\n minHeight: height,\n color: request.theme.cellColor ?? request.theme.textColor,\n fontFamily: request.theme.fontFamily,\n fontSize,\n // 用像素 token,确保 select/time/color 触发器与内部 Input 同步缩放。\n [\"--canvas-react-control-height\" as string]: `${height}px`,\n [\"--canvas-react-font-size\" as string]:\n fontSize != null ? `${fontSize}px` : undefined,\n [\"--canvas-react-control-padding-inline\" as string]: `${paddingInline}px`,\n [\"--canvas-react-control-padding-block\" as string]: `${paddingBlock}px`,\n [\"--canvas-react-content-zoom\" as string]: String(contentZoom),\n [\"--canvas-react-radius-sm\" as string]: \"0px\",\n borderRadius: 0,\n boxSizing: \"border-box\" as const,\n };\n}\n\n/**\n * 编辑浮层容器样式。\n * 尺寸跟随单元格(含缩放后的 hostRect),并注入表单组件 CSS 变量。\n */\nexport function resolveEditorOverlayStyle(params: {\n rect: ListTableEditorRequest[\"rect\"];\n hostRect?: ListTableEditorRequest[\"hostRect\"];\n fontSize?: number;\n paddingInline?: number;\n paddingBlock?: number;\n contentZoom?: number;\n}) {\n const { rect, hostRect, fontSize, paddingInline, paddingBlock, contentZoom } =\n params;\n const targetRect = hostRect ?? rect;\n const height = Math.max(targetRect.height - 2, 1);\n const resolvedFontSize =\n typeof fontSize === \"number\" && Number.isFinite(fontSize) && fontSize > 0\n ? fontSize\n : undefined;\n const resolvedPaddingInline = resolvePadding(paddingInline);\n const resolvedPaddingBlock = resolvePadding(paddingBlock);\n const resolvedContentZoom =\n typeof contentZoom === \"number\" &&\n Number.isFinite(contentZoom) &&\n contentZoom > 0\n ? contentZoom\n : 1;\n\n return {\n position: hostRect ? (\"absolute\" as const) : (\"fixed\" as const),\n left: targetRect.x,\n top: targetRect.y + 1,\n width: Math.max(targetRect.width, 1),\n height,\n minHeight: height,\n zIndex: 1200,\n boxSizing: \"border-box\" as const,\n // 覆盖表单组件 token,使输入框高度/字号/内边距跟随表格缩放。\n [\"--canvas-react-control-height\" as string]: `${height}px`,\n [\"--canvas-react-control-padding-inline\" as string]: `${resolvedPaddingInline}px`,\n [\"--canvas-react-control-padding-block\" as string]: `${resolvedPaddingBlock}px`,\n [\"--canvas-react-content-zoom\" as string]: String(resolvedContentZoom),\n [\"--canvas-react-radius-sm\" as string]: \"0px\",\n borderRadius: 0,\n ...(resolvedFontSize != null\n ? {\n [\"--canvas-react-font-size\" as string]: `${resolvedFontSize}px`,\n fontSize: resolvedFontSize,\n }\n : null),\n };\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n} from \"react\";\nimport type {\n ListTableEditorNavigateDirection,\n ListTableEditorRequest,\n} from \"@canvas-components/list-table\";\nimport {\n ReactContentScaleProvider,\n ReactDatePicker,\n ReactDateRangePicker,\n ReactDateTimePicker,\n ReactDateTimeRangePicker,\n ReactColorPicker,\n ReactAutoComplete,\n ReactInput,\n ReactInputRange,\n ReactMonthPicker,\n ReactNumberInput,\n ReactQuarterPicker,\n ReactSelect,\n ReactTimePicker,\n ReactTimeRangePicker,\n ReactYearPicker,\n} from \"@canvas-components/react-components\";\nimport {\n getEditorInputStyle,\n resolveEditorOverlayStyle,\n toNumberValue,\n toNumericProp,\n} from \"./utils\";\n\nexport function ReactTableEditorOverlay(props: {\n request: ListTableEditorRequest;\n}) {\n const { request } = props;\n const editorHostRef = useRef<HTMLDivElement | null>(null);\n const style = resolveEditorOverlayStyle({\n rect: request.rect,\n hostRect: request.hostRect,\n fontSize: request.theme.fontSize,\n paddingInline: request.theme.paddingInline,\n paddingBlock: request.theme.paddingBlock,\n contentZoom: request.theme.contentZoom,\n });\n const contentZoom =\n typeof request.theme.contentZoom === \"number\" &&\n Number.isFinite(request.theme.contentZoom) &&\n request.theme.contentZoom > 0\n ? request.theme.contentZoom\n : 1;\n\n useLayoutEffect(() => {\n const input =\n editorHostRef.current?.querySelector<HTMLInputElement>(\"input\");\n if (!input) {\n return;\n }\n focusAndSelectEditorInput(input);\n }, [request]);\n\n // 弹层挂载到 document.body,需要通过 ContentScale 同步表格缩放。\n return (\n <ReactContentScaleProvider scale={contentZoom}>\n <div key={request.editorKey} ref={editorHostRef}>\n {renderEditorByType(request, style)}\n </div>\n </ReactContentScaleProvider>\n );\n}\n\nfunction renderEditorByType(\n request: ListTableEditorRequest,\n style: CSSProperties,\n) {\n switch (request.config.valueType ?? \"text\") {\n case \"number\":\n return <NumberEditor request={request} style={style} />;\n case \"input-range\":\n return <InputRangeEditor request={request} style={style} />;\n case \"year\":\n return <YearEditor request={request} style={style} />;\n case \"quarter\":\n return <QuarterEditor request={request} style={style} />;\n case \"month\":\n return <MonthEditor request={request} style={style} />;\n case \"date\":\n return <DateEditor request={request} style={style} />;\n case \"date-range\":\n return <DateRangeEditor request={request} style={style} />;\n case \"time\":\n return <TimeEditor request={request} style={style} />;\n case \"datetime\":\n return <DateTimeEditor request={request} style={style} />;\n case \"datetime-range\":\n return <DateTimeRangeEditor request={request} style={style} />;\n case \"timerange\":\n return <TimeRangeEditor request={request} style={style} />;\n case \"color\":\n return <ColorEditor request={request} style={style} />;\n case \"select\":\n return <SelectEditor request={request} style={style} />;\n case \"auto-complete\":\n return <AutoCompleteEditor request={request} style={style} />;\n default:\n return <TextEditor request={request} style={style} />;\n }\n}\n\nfunction TextEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(String(request.value ?? \"\"));\n const hostRef = useRef<HTMLDivElement | null>(null);\n const skipBlurCommitRef = useRef(false);\n\n useLayoutEffect(() => {\n const input = hostRef.current?.querySelector<HTMLInputElement>(\"input\");\n focusAndSelectEditorInput(input);\n }, [request]);\n\n useEffect(() => {\n setValue(String(request.value ?? \"\"));\n }, [request.value]);\n\n return (\n <div ref={hostRef} style={style}>\n <ReactInput\n value={value}\n placeholder={request.config.placeholder ?? \"\"}\n onChange={(event) => {\n const nextValue = event.target.value;\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction NumberEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<number | null>(\n toNumberValue(request.value),\n );\n const hostRef = useRef<HTMLDivElement | null>(null);\n const skipBlurCommitRef = useRef(false);\n\n useLayoutEffect(() => {\n const input = hostRef.current?.querySelector<HTMLInputElement>(\"input\");\n focusAndSelectEditorInput(input);\n }, [request]);\n\n useEffect(() => {\n setValue(toNumberValue(request.value));\n }, [request.value]);\n\n return (\n <div ref={hostRef} style={style}>\n <ReactNumberInput\n value={value}\n min={toNumericProp(request.config.min)}\n max={toNumericProp(request.config.max)}\n step={toNumericProp(request.config.step)}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction InputRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<[number | null, number | null]>(\n toNumberRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toNumberRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactInputRange\n value={value}\n autoFocus\n min={toNumericProp(request.config.min)}\n max={toNumericProp(request.config.max)}\n step={toNumericProp(request.config.step)}\n rangeSeparator={request.config.rangeSeparator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction YearEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactYearPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction QuarterEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactQuarterPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction MonthEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactMonthPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactDatePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction SelectEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const options = request.config.options ?? [];\n const [value, setValue] = useState<string | undefined>(\n request.value == null ? undefined : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? undefined : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactSelect\n value={value}\n autoFocus\n showArrow={false}\n showSearch={request.config.showSearch}\n filterOption={request.config.filterOption}\n options={options}\n onChange={(nextValue, info) => {\n const resolvedValue = String(nextValue);\n setValue(resolvedValue);\n request.onChange(\n options.find((option) => String(option.value) === resolvedValue)\n ?.value ?? resolvedValue,\n );\n if (info.trigger === \"mouse\") {\n request.onCommit();\n }\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction AutoCompleteEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<string | number>(\n request.value == null ? \"\" : String(request.value),\n );\n const [options, setOptions] = useState(request.config.options ?? []);\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactAutoComplete\n value={value}\n autoFocus\n showArrow={false}\n options={options}\n placeholder={request.config.placeholder ?? \"\"}\n onChange={(nextValue, info) => {\n setValue(nextValue);\n request.onChange(nextValue);\n if (info.trigger === \"mouse\") {\n request.onCommit();\n }\n }}\n onPressEnter={async (input) => {\n const nextOptions = await request.config.onPressEnter?.(input);\n if (nextOptions) {\n setOptions(nextOptions);\n }\n return nextOptions;\n }}\n onBlur={() => {\n if (!skipBlurCommitRef.current) request.onCommit();\n skipBlurCommitRef.current = false;\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction ColorEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactColorPicker\n value={value}\n autoFocus\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactDateRangePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction TimeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactTimePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateTimeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactDateTimePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateTimeRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactDateTimeRangePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction TimeRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactTimeRangePicker\n value={value}\n autoFocus\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction handleEditorNavigationKey(\n event: KeyboardEvent<HTMLInputElement>,\n request: ListTableEditorRequest,\n skipBlurCommitRef: { current: boolean },\n) {\n const direction = resolveNavigationDirection(event);\n if (!direction || !request.onNavigate) {\n return false;\n }\n\n event.preventDefault();\n skipBlurCommitRef.current = true;\n request.onNavigate(direction);\n return true;\n}\n\nfunction handleRangeInputTab(event: KeyboardEvent<HTMLInputElement>) {\n if (event.key !== \"Tab\") {\n return false;\n }\n const host = event.currentTarget.closest<HTMLElement>(\n \"[data-list-table-range-editor]\",\n );\n const inputs = Array.from(\n host?.querySelectorAll<HTMLInputElement>(\"input\") ?? [],\n );\n const currentIndex = inputs.indexOf(event.currentTarget);\n const nextIndex = event.shiftKey ? currentIndex - 1 : currentIndex + 1;\n const nextInput = inputs[nextIndex];\n if (!nextInput) {\n return false;\n }\n\n event.preventDefault();\n focusAndSelectEditorInput(nextInput);\n return true;\n}\n\nfunction focusAndSelectEditorInput(input?: HTMLInputElement | null) {\n if (!input) {\n return;\n }\n input.focus();\n try {\n input.select();\n } catch {\n // number 等输入类型不支持文本选择,但仍需保持焦点。\n }\n}\n\nfunction handleEditorEscapeKey(\n event: KeyboardEvent<HTMLInputElement>,\n request: ListTableEditorRequest,\n) {\n if (event.key !== \"Escape\") {\n return;\n }\n\n event.preventDefault();\n request.onCancel();\n}\n\nfunction toRangeTuple(value: unknown): [string, string] {\n if (!Array.isArray(value)) {\n return [\"\", \"\"];\n }\n\n return [String(value[0] ?? \"\"), String(value[1] ?? \"\")];\n}\n\nfunction toNumberRangeTuple(value: unknown): [number | null, number | null] {\n if (!Array.isArray(value)) {\n return [null, null];\n }\n return [toNumberValue(value[0]), toNumberValue(value[1])];\n}\n\nfunction handleEditorBlur(\n _event: FocusEvent<HTMLInputElement>,\n skipBlurCommitRef: { current: boolean },\n request: ListTableEditorRequest,\n) {\n if (skipBlurCommitRef.current) {\n skipBlurCommitRef.current = false;\n return;\n }\n\n request.onCommit();\n}\n\nfunction resolveNavigationDirection(\n event: KeyboardEvent<HTMLInputElement>,\n): ListTableEditorNavigateDirection | null {\n if (event.key === \"ArrowUp\") {\n return \"up\";\n }\n\n if (event.key === \"ArrowDown\") {\n return \"down\";\n }\n\n if (event.key === \"Tab\") {\n return event.shiftKey ? \"prev\" : \"next\";\n }\n\n return null;\n}\n","import { useState, type CSSProperties } from \"react\";\r\nimport type { FixedPopupConfig } from \"@canvas-components/list-table\";\r\nimport { ReactPopup } from \"@canvas-components/react-components\";\r\n\r\nexport function ReactTableFixedPopupView(props: {\r\n request: FixedPopupConfig | null;\r\n}) {\r\n const { request } = props;\r\n\r\n if (!request) {\r\n return null;\r\n }\r\n\r\n const surfaceStyle: CSSProperties = {\r\n minWidth: 160,\r\n padding: 8,\r\n };\r\n\r\n return (\r\n <ReactPopup\r\n open\r\n anchorRect={request.anchorRect}\r\n offset={8}\r\n minWidth={160}\r\n onOpenChange={(open) => {\r\n if (!open) {\r\n request.onClose();\r\n }\r\n }}\r\n surfaceStyle={surfaceStyle}\r\n >\r\n <div>\r\n <PopupAction\r\n active={request.currentFixed === \"left\"}\r\n onClick={() => request.onSelect(\"left\")}\r\n >\r\n 固定到左侧\r\n </PopupAction>\r\n <PopupAction\r\n active={request.currentFixed === \"right\"}\r\n onClick={() => request.onSelect(\"right\")}\r\n >\r\n 固定到右侧\r\n </PopupAction>\r\n <PopupAction onClick={() => request.onSelect(\"none\")}>取消固定</PopupAction>\r\n </div>\r\n </ReactPopup>\r\n );\r\n}\r\n\r\nfunction PopupAction(props: {\r\n active?: boolean;\r\n onClick: () => void;\r\n children: string;\r\n}) {\r\n const { active = false, onClick, children } = props;\r\n const [hovered, setHovered] = useState(false);\r\n const backgroundColor = active\r\n ? hovered\r\n ? \"#bae0ff\"\r\n : \"#e6f4ff\"\r\n : hovered\r\n ? \"#f5faff\"\r\n : \"transparent\";\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={onClick}\r\n onMouseEnter={() => {\r\n setHovered(true);\r\n }}\r\n onMouseLeave={() => {\r\n setHovered(false);\r\n }}\r\n style={{\r\n display: \"block\",\r\n width: \"100%\",\r\n height: 32,\r\n marginBottom: 4,\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: backgroundColor,\r\n color: active ? \"#1677ff\" : \"#374151\",\r\n textAlign: \"left\",\r\n padding: \"0 10px\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\n","import type { FilterPanelConfig } from \"@canvas-components/list-table\";\nimport {\n ReactFilterPanel,\n type ReactFilterPanelRequest,\n} from \"@canvas-components/react-components\";\n\n/** 将 ListTable 过滤请求接入共享过滤面板。 */\nexport function ReactTableFilterPanelView(props: {\n request: FilterPanelConfig | null;\n}) {\n return (\n <ReactFilterPanel\n request={props.request as ReactFilterPanelRequest | null}\n />\n );\n}\n","import type { PaginationConfig } from \"@canvas-components/list-table\";\r\nimport { ReactPagination } from \"@canvas-components/react-components\";\r\n\r\nexport function ReactTablePaginationView(props: {\r\n config: PaginationConfig | null;\r\n}) {\r\n const { config } = props;\r\n\r\n if (!config) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n paddingTop: 12,\r\n }}\r\n >\r\n <ReactPagination\r\n current={config.current}\r\n total={config.total}\r\n pageSize={config.pageSize}\r\n pageSizeOptions={config.pageSizeOptions}\r\n disabled={config.disabled}\r\n showSizeChanger={config.showSizeChanger}\r\n showQuickJumper={config.showQuickJumper}\r\n showLessItems={config.showLessItems}\r\n simple={config.simple}\r\n showTotal={config.showTotal}\r\n onChange={(page, pageSize) => {\r\n config.onChange?.(page, pageSize);\r\n }}\r\n onPageSizeChange={(page, pageSize) => {\r\n config.onPageSizeChange?.(page, pageSize);\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useRef } from \"react\";\r\nimport type { ListTableDangerConfirmRequest } from \"@canvas-components/list-table\";\r\nimport { ReactPopconfirm } from \"@canvas-components/react-components\";\r\n\r\nexport function ReactTableDangerConfirmView(props: {\r\n request: ListTableDangerConfirmRequest | null;\r\n onClose: () => void;\r\n}) {\r\n const { request, onClose } = props;\r\n const confirmingRef = useRef(false);\r\n\r\n useEffect(() => {\r\n confirmingRef.current = false;\r\n }, [request]);\r\n\r\n if (!request) {\r\n return null;\r\n }\r\n\r\n return (\r\n <ReactPopconfirm\r\n open\r\n title={request.title}\r\n description={request.description}\r\n okText={request.okText}\r\n cancelText={request.cancelText}\r\n placement=\"topLeft\"\r\n onConfirm={() => {\r\n confirmingRef.current = true;\r\n try {\r\n request.onConfirm();\r\n } finally {\r\n onClose();\r\n }\r\n }}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n return;\r\n }\r\n if (confirmingRef.current) {\r\n confirmingRef.current = false;\r\n return;\r\n }\r\n request.onCancel();\r\n onClose();\r\n }}\r\n style={{\r\n position: \"fixed\",\r\n left: request.anchorRect.x,\r\n top: request.anchorRect.y,\r\n width: Math.max(request.anchorRect.width, 1),\r\n height: Math.max(request.anchorRect.height, 1),\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <span aria-hidden=\"true\" />\r\n </ReactPopconfirm>\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\r\nimport type { ListTableTooltipRequest } from \"@canvas-components/list-table\";\r\n\r\n/**\r\n * 表格 tooltip 视图,字号与内边距跟随表格 contentZoom。\r\n */\r\nexport function ReactTableTooltipView(props: {\r\n request: ListTableTooltipRequest | null;\r\n}) {\r\n const { request } = props;\r\n if (!request) {\r\n return null;\r\n }\r\n\r\n const zoom =\r\n typeof request.contentZoom === \"number\" &&\r\n Number.isFinite(request.contentZoom) &&\r\n request.contentZoom > 0\r\n ? request.contentZoom\r\n : 1;\r\n const fontSize = 12 * zoom;\r\n const paddingBlock = 6 * zoom;\r\n const paddingInline = 10 * zoom;\r\n const borderRadius = 6 * zoom;\r\n const maxWidth = 320 * zoom;\r\n\r\n const style: CSSProperties = {\r\n position: \"fixed\",\r\n left: request.x,\r\n top: request.y,\r\n transform: \"translate(-50%, 0)\",\r\n maxWidth,\r\n padding: `${paddingBlock}px ${paddingInline}px`,\r\n borderRadius,\r\n background:\r\n request.variant === \"error\" ? \"#ffffff\" : \"rgba(17, 24, 39, 0.92)\",\r\n color: request.variant === \"error\" ? \"#ff4d4f\" : \"#fff\",\r\n fontSize,\r\n lineHeight: 1.5,\r\n boxShadow:\r\n request.variant === \"error\"\r\n ? \"0 10px 30px rgba(255, 77, 79, 0.16)\"\r\n : \"0 10px 30px rgba(15, 23, 42, 0.18)\",\r\n border:\r\n request.variant === \"error\" ? \"1px solid rgba(255, 77, 79, 0.2)\" : \"none\",\r\n pointerEvents: \"none\",\r\n zIndex: 1200,\r\n whiteSpace: \"pre-wrap\",\r\n wordBreak: \"break-word\",\r\n };\r\n\r\n return <div style={style}>{request.content}</div>;\r\n}\r\n","import type { SVGProps } from \"react\";\r\n\r\nfunction ToolbarIcon(props: SVGProps<SVGSVGElement> & { path: string }) {\r\n const { path, ...svgProps } = props;\r\n return (\r\n <svg\r\n viewBox=\"64 64 896 896\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n {...svgProps}\r\n >\r\n <path d={path} />\r\n </svg>\r\n );\r\n}\r\n\r\nexport function FullscreenOutlined() {\r\n return <ToolbarIcon path=\"M290 236.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0013.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 000 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 00-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\" />;\r\n}\r\n\r\nexport function FullscreenExitOutlined() {\r\n return <ToolbarIcon path=\"M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 000 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 00391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 00-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\" />;\r\n}\r\n\r\nexport function ReloadOutlined() {\r\n return <ToolbarIcon path=\"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z\" />;\r\n}\r\n\r\nexport function ExportOutlined() {\r\n return <ToolbarIcon path=\"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM770.87 199.13l-52.2-52.2a8.01 8.01 0 014.7-13.6l179.4-21c5.1-.6 9.5 3.7 8.9 8.9l-21 179.4c-.8 6.6-8.9 9.4-13.6 4.7l-52.4-52.4-256.2 256.2a8.03 8.03 0 01-11.3 0l-42.4-42.4a8.03 8.03 0 010-11.3l256.1-256.3z\" />;\r\n}\r\n\r\nexport function ColumnHeightOutlined() {\r\n return <ToolbarIcon path=\"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 00-11.3 0L403.6 366.3a7.23 7.23 0 005.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z\" />;\r\n}\r\n\r\nexport function SettingOutlined() {\r\n return <ToolbarIcon path=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" />;\r\n}\r\n\r\nexport function HolderOutlined() {\r\n return (\r\n <ToolbarIcon path=\"M300 276.5a56 56 0 1056-97 56 56 0 00-56 97zm0 284a56 56 0 1056-97 56 56 0 00-56 97zM640 228a56 56 0 10112 0 56 56 0 00-112 0zm0 284a56 56 0 10112 0 56 56 0 00-112 0zM300 844.5a56 56 0 1056-97 56 56 0 00-56 97zM640 796a56 56 0 10112 0 56 56 0 00-112 0z\" />\r\n );\r\n}\r\n","import {\r\n useEffect,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type PointerEvent as ReactPointerEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nexport interface SortableListItem {\r\n key: string;\r\n parentKey: string;\r\n label: ReactNode;\r\n}\r\n\r\nexport function SortableList<T extends SortableListItem>(props: {\r\n items: T[];\r\n onOrderChange: (parentKey: string, orderedKeys: string[]) => void;\r\n renderItem: (\r\n item: T,\r\n handleProps: {\r\n onPointerDown: (event: ReactPointerEvent<HTMLElement>) => void;\r\n },\r\n ) => ReactNode;\r\n}) {\r\n const { items, onOrderChange } = props;\r\n const rootRef = useRef<HTMLDivElement | null>(null);\r\n const dragRef = useRef<{\r\n source: T;\r\n target: T;\r\n layouts: SortableItemLayout[];\r\n offsetY: number;\r\n width: number;\r\n left: number;\r\n height: number;\r\n } | null>(null);\r\n const [dragState, setDragState] = useState<{\r\n sourceKey: string;\r\n targetKey: string;\r\n pointerY: number;\r\n } | null>(null);\r\n\r\n useEffect(\r\n () => () => {\r\n document.body.classList.remove(\"react-list-table-sorting\");\r\n document.body.style.removeProperty(\"user-select\");\r\n },\r\n [],\r\n );\r\n\r\n useEffect(() => {\r\n if (!dragState) return;\r\n const handleMove = (event: PointerEvent) => {\r\n const current = dragRef.current;\r\n if (!current) return;\r\n const target = resolveClosestSortableItem({\r\n items,\r\n parentKey: current.source.parentKey,\r\n layouts: current.layouts,\r\n overlayCenterY: event.clientY - current.offsetY + current.height / 2,\r\n });\r\n if (target) {\r\n current.target = target;\r\n }\r\n setDragState({\r\n sourceKey: current.source.key,\r\n targetKey: current.target.key,\r\n pointerY: event.clientY,\r\n });\r\n };\r\n const handleEnd = () => {\r\n const current = dragRef.current;\r\n if (current && current.source.key !== current.target.key) {\r\n const siblings = items.filter(\r\n (item) => item.parentKey === current.source.parentKey,\r\n );\r\n const orderedKeys = resolveNextSortableOrder(\r\n siblings.map((item) => item.key),\r\n current.source.key,\r\n current.target.key,\r\n );\r\n if (orderedKeys) {\r\n onOrderChange(current.source.parentKey, orderedKeys);\r\n }\r\n }\r\n dragRef.current = null;\r\n setDragState(null);\r\n document.body.classList.remove(\"react-list-table-sorting\");\r\n document.body.style.removeProperty(\"user-select\");\r\n };\r\n window.addEventListener(\"pointermove\", handleMove);\r\n window.addEventListener(\"pointerup\", handleEnd, { once: true });\r\n window.addEventListener(\"pointercancel\", handleEnd, { once: true });\r\n return () => {\r\n window.removeEventListener(\"pointermove\", handleMove);\r\n window.removeEventListener(\"pointerup\", handleEnd);\r\n window.removeEventListener(\"pointercancel\", handleEnd);\r\n };\r\n }, [dragState != null, items, onOrderChange]);\r\n\r\n const sourceIndex = dragState\r\n ? items.findIndex((item) => item.key === dragState.sourceKey)\r\n : -1;\r\n const targetIndex = dragState\r\n ? items.findIndex((item) => item.key === dragState.targetKey)\r\n : -1;\r\n\r\n return (\r\n <div ref={rootRef}>\r\n {items.map((item, index) => {\r\n const style = resolveSortableTransform(\r\n index,\r\n sourceIndex,\r\n targetIndex,\r\n dragRef.current?.height ?? 0,\r\n );\r\n return (\r\n <div\r\n key={item.key}\r\n data-sortable-key={item.key}\r\n className={dragState?.sourceKey === item.key ? \"dragging\" : \"\"}\r\n style={style}\r\n >\r\n {props.renderItem(item, {\r\n onPointerDown: (event) => {\r\n if (event.button !== 0) return;\r\n const row = event.currentTarget.closest<HTMLElement>(\r\n \"[data-sortable-key]\",\r\n );\r\n if (!row) return;\r\n const rect = row.getBoundingClientRect();\r\n dragRef.current = {\r\n source: item,\r\n target: item,\r\n layouts: collectSortableItemLayouts(rootRef.current),\r\n offsetY: event.clientY - rect.top,\r\n width: rect.width,\r\n left: rect.left,\r\n height: rect.height,\r\n };\r\n setDragState({\r\n sourceKey: item.key,\r\n targetKey: item.key,\r\n pointerY: event.clientY,\r\n });\r\n document.body.classList.add(\"react-list-table-sorting\");\r\n document.body.style.userSelect = \"none\";\r\n event.preventDefault();\r\n },\r\n })}\r\n </div>\r\n );\r\n })}\r\n {dragState && dragRef.current\r\n ? createPortal(\r\n <div\r\n className=\"react-list-table-sort-overlay\"\r\n style={{\r\n left: dragRef.current.left,\r\n top: dragState.pointerY - dragRef.current.offsetY,\r\n width: dragRef.current.width,\r\n height: dragRef.current.height,\r\n }}\r\n >\r\n {props.renderItem(dragRef.current.source, {\r\n onPointerDown: (event) => event.preventDefault(),\r\n })}\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n\r\nexport function resolveNextSortableOrder(\r\n currentKeys: string[],\r\n sourceKey: string,\r\n targetKey: string,\r\n) {\r\n const sourceIndex = currentKeys.indexOf(sourceKey);\r\n const targetIndex = currentKeys.indexOf(targetKey);\r\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\r\n return null;\r\n }\r\n const nextKeys = [...currentKeys];\r\n const [source] = nextKeys.splice(sourceIndex, 1);\r\n nextKeys.splice(targetIndex, 0, source);\r\n return nextKeys;\r\n}\r\n\r\ninterface SortableItemLayout {\r\n key: string;\r\n centerY: number;\r\n}\r\n\r\nfunction collectSortableItemLayouts(root: HTMLDivElement | null) {\r\n if (!root) return [];\r\n return Array.from(\r\n root.querySelectorAll<HTMLElement>(\"[data-sortable-key]\"),\r\n ).map((element) => {\r\n const rect = element.getBoundingClientRect();\r\n return {\r\n key: element.dataset.sortableKey ?? \"\",\r\n centerY: rect.top + rect.height / 2,\r\n };\r\n });\r\n}\r\n\r\nexport function resolveClosestSortableItem<T extends SortableListItem>(params: {\r\n items: T[];\r\n parentKey: string;\r\n layouts: SortableItemLayout[];\r\n overlayCenterY: number;\r\n}) {\r\n let closestItem: T | null = null;\r\n let closestDistance = Number.POSITIVE_INFINITY;\r\n params.layouts.forEach((layout) => {\r\n const item = params.items.find((candidate) => candidate.key === layout.key);\r\n if (!item || item.parentKey !== params.parentKey) return;\r\n const distance = Math.abs(params.overlayCenterY - layout.centerY);\r\n if (distance < closestDistance) {\r\n closestDistance = distance;\r\n closestItem = item;\r\n }\r\n });\r\n return closestItem;\r\n}\r\n\r\nfunction resolveSortableTransform(\r\n index: number,\r\n sourceIndex: number,\r\n targetIndex: number,\r\n height: number,\r\n): CSSProperties {\r\n let translateY = 0;\r\n if (sourceIndex < targetIndex && index > sourceIndex && index <= targetIndex) {\r\n translateY = -height;\r\n } else if (\r\n sourceIndex > targetIndex &&\r\n index >= targetIndex &&\r\n index < sourceIndex\r\n ) {\r\n translateY = height;\r\n }\r\n return {\r\n transform: translateY ? `translate3d(0, ${translateY}px, 0)` : undefined,\r\n transition: sourceIndex >= 0 ? \"transform 180ms ease\" : undefined,\r\n };\r\n}\r\n","import styleInject from '#style-inject';styleInject(\".react-list-table-shell {\\n background: #fff;\\n}\\n.react-list-table-titlebar {\\n height: 44px;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 12px 0;\\n box-sizing: border-box;\\n background: #fff;\\n}\\n.react-list-table-shell-fullscreen {\\n width: 100% !important;\\n height: 100% !important;\\n}\\n.react-list-table-shell-fullscreen .canvas-list-table-root {\\n height: 100% !important;\\n}\\n.react-list-table-title {\\n min-width: 0;\\n color: #1f2937;\\n font-size: 14px;\\n font-weight: 600;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.react-list-table-tools {\\n display: flex;\\n align-items: center;\\n gap: 14px;\\n color: #475569;\\n}\\n.react-list-table-tool-wrap {\\n position: relative;\\n display: inline-flex;\\n}\\n.react-list-table-tool {\\n width: 20px;\\n height: 24px;\\n padding: 0;\\n border: 0;\\n color: inherit;\\n background: transparent;\\n font: 16px/24px sans-serif;\\n cursor: pointer;\\n}\\n.react-list-table-tool:hover {\\n color: #1677ff;\\n}\\n.react-list-table-tool-menu,\\n.react-list-table-column-setting {\\n position: absolute;\\n z-index: 120;\\n top: 28px;\\n right: 0;\\n min-width: 112px;\\n padding: 6px;\\n border: 1px solid #e5e7eb;\\n border-radius: 6px;\\n background: #fff;\\n box-shadow: 0 8px 24px rgba(15, 23, 42, .14);\\n}\\n.react-list-table-tool-menu button {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n width: 100%;\\n padding: 6px 10px;\\n border: 0;\\n border-radius: 4px;\\n background: transparent;\\n text-align: left;\\n cursor: pointer;\\n}\\n.react-list-table-tool-menu button.active::after {\\n content: \\\"\\\\2713\\\";\\n margin-left: 12px;\\n font-size: 12px;\\n}\\n.react-list-table-tool-menu button:hover,\\n.react-list-table-tool-menu button.active {\\n color: #1677ff;\\n background: #e6f4ff;\\n}\\n.react-list-table-column-setting {\\n width: 328px;\\n max-height: 360px;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n}\\n.react-list-table-column-setting-head {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 4px 6px 8px;\\n border-bottom: 1px solid #f0f0f0;\\n flex: 0 0 auto;\\n}\\n.react-list-table-column-setting-head button {\\n border: 0;\\n color: #1677ff;\\n background: transparent;\\n cursor: pointer;\\n}\\n.react-list-table-column-setting-body {\\n flex: 1 1 auto;\\n min-height: 0;\\n overflow: auto;\\n}\\n.react-list-table-column-item {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n justify-content: space-between;\\n padding: 7px 6px;\\n box-sizing: border-box;\\n cursor: pointer;\\n}\\n.react-list-table-column-main,\\n.react-list-table-column-actions {\\n display: inline-flex;\\n align-items: center;\\n gap: 8px;\\n}\\n.react-list-table-column-main {\\n min-width: 0;\\n}\\n.react-list-table-column-actions {\\n flex: 0 0 auto;\\n}\\n.react-list-table-column-actions > .canvas-react-select-wrap {\\n flex: 0 0 96px;\\n width: 96px;\\n height: 24px;\\n}\\n.react-list-table-column-label {\\n min-width: 64px;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.react-list-table-column-width-input {\\n height: 22px;\\n padding-inline: 5px;\\n}\\n.react-list-table-column-fixed-input {\\n height: 22px;\\n padding-inline: 6px;\\n font-size: 12px;\\n}\\n.react-list-table-column-setting label.dragging {\\n opacity: 0.45;\\n background: #e6f4ff;\\n}\\n.react-list-table-column-setting [data-sortable-key].dragging {\\n opacity: 0.28;\\n}\\n.react-list-table-column-drag {\\n color: #94a3b8;\\n display: inline-flex;\\n font-size: 14px;\\n cursor: grab;\\n user-select: none;\\n}\\nbody.react-list-table-sorting,\\nbody.react-list-table-sorting * {\\n cursor: grabbing !important;\\n}\\n.react-list-table-sort-overlay {\\n position: fixed;\\n z-index: 1400;\\n display: block;\\n padding: 0;\\n box-sizing: border-box;\\n color: #334155;\\n background: #fff;\\n border: 1px solid #91caff;\\n border-radius: 6px;\\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.18);\\n pointer-events: none;\\n}\\n.react-list-table-sort-overlay .react-list-table-column-item {\\n width: 100%;\\n height: 100%;\\n}\\n\")","import { useEffect, useRef, useState, type ReactNode } from \"react\";\nimport {\n ColumnHeightOutlined,\n ExportOutlined,\n FullscreenExitOutlined,\n FullscreenOutlined,\n HolderOutlined,\n ReloadOutlined,\n SettingOutlined,\n} from \"./toolbar-icons\";\nimport type {\n ListTableColumn,\n ListTableExportXlsxOptions,\n} from \"@canvas-components/list-table\";\nimport {\n ReactNumberInput,\n ReactSelect,\n} from \"@canvas-components/react-components\";\nimport type { ReactListTableToolbarOptions } from \"../../types\";\nimport { SortableList } from \"./sortable-list\";\nimport \"./style.css\";\n\nexport function ReactTableToolbar<RecordType>(props: {\n title?: ReactNode;\n toolbar?: false | ReactListTableToolbarOptions;\n columns: ListTableColumn<RecordType>[];\n density: number | \"auto\" | undefined;\n hostRef: React.RefObject<HTMLDivElement | null>;\n onFullscreenChange?: (isFullscreen: boolean) => void;\n onDensityChange: (rowHeight: 32 | 48 | 56) => void;\n onExport: (options?: ListTableExportXlsxOptions) => void;\n onColumnVisibilityChange: (columnKey: string, visible: boolean) => void;\n onColumnWidthChange: (columnKey: string, width: number) => void;\n onColumnFixedChange: (\n columnKey: string,\n fixed: \"left\" | \"right\" | undefined,\n ) => void;\n onColumnOrderChange: (parentKey: string, orderedKeys: string[]) => void;\n onResetColumns: () => void;\n}) {\n const { toolbar, title } = props;\n const [densityOpen, setDensityOpen] = useState(false);\n const [settingOpen, setSettingOpen] = useState(false);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const hasToolbar = toolbar !== undefined && toolbar !== false;\n\n useEffect(() => {\n const close = (event: MouseEvent) => {\n if (\n (event.target as HTMLElement | null)?.closest(\".canvas-react-popup\")\n ) {\n return;\n }\n if (!rootRef.current?.contains(event.target as Node)) {\n setDensityOpen(false);\n setSettingOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", close);\n return () => document.removeEventListener(\"mousedown\", close);\n }, []);\n\n useEffect(() => {\n const handleFullscreenChange = () => {\n const fullscreenNode =\n (typeof toolbar === \"object\" ? toolbar.getFullscreenNode?.() : null) ??\n props.hostRef.current;\n const nextIsFullscreen = document.fullscreenElement === fullscreenNode;\n setIsFullscreen(nextIsFullscreen);\n props.onFullscreenChange?.(nextIsFullscreen);\n };\n handleFullscreenChange();\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () =>\n document.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n }, [props.hostRef, props.onFullscreenChange, toolbar]);\n\n if (!title && !hasToolbar) return null;\n const config: ReactListTableToolbarOptions =\n typeof toolbar === \"object\" ? toolbar : {};\n return (\n <div className=\"react-list-table-titlebar\" ref={rootRef}>\n <div className=\"react-list-table-title\">{title}</div>\n {hasToolbar ? (\n <div className=\"react-list-table-tools\">\n {config.extra}\n {config.showFullscreen !== false ? (\n <ToolButton\n label={isFullscreen ? \"退出全屏\" : \"全屏\"}\n onClick={() => {\n if (isFullscreen) {\n void document.exitFullscreen?.();\n } else {\n const fullscreenNode =\n config.getFullscreenNode?.() ?? props.hostRef.current;\n void fullscreenNode?.requestFullscreen?.();\n }\n }}\n >\n {isFullscreen ? (\n <FullscreenExitOutlined />\n ) : (\n <FullscreenOutlined />\n )}\n </ToolButton>\n ) : null}\n {config.showRefresh !== false ? (\n <ToolButton\n label=\"刷新\"\n iconSize={14}\n onClick={() => config.onRefresh?.()}\n >\n <ReloadOutlined />\n </ToolButton>\n ) : null}\n {config.showExport ? (\n <ToolButton\n label=\"导出\"\n iconSize={14}\n onClick={() => {\n if (config.onExport) {\n config.onExport();\n } else {\n props.onExport(config.exportOptions);\n }\n }}\n >\n <ExportOutlined />\n </ToolButton>\n ) : null}\n {config.showDensity !== false ? (\n <div className=\"react-list-table-tool-wrap\">\n <ToolButton\n label=\"表格密度\"\n onClick={() => setDensityOpen((v) => !v)}\n >\n <ColumnHeightOutlined />\n </ToolButton>\n {densityOpen ? (\n <div className=\"react-list-table-tool-menu\">\n {([56, 48, 32] as const).map((height) => (\n <button\n type=\"button\"\n key={height}\n className={props.density === height ? \"active\" : \"\"}\n onClick={() => {\n props.onDensityChange(height);\n setDensityOpen(false);\n }}\n >\n {height === 56 ? \"宽松\" : height === 48 ? \"中等\" : \"紧凑\"}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ) : null}\n {config.showColumnSetting !== false ? (\n <div className=\"react-list-table-tool-wrap\">\n <ToolButton\n label=\"列设置\"\n onClick={() => setSettingOpen((v) => !v)}\n >\n <SettingOutlined />\n </ToolButton>\n {settingOpen ? (\n <div\n className=\"react-list-table-column-setting\"\n style={{ width: config.columnSettingWidth }}\n >\n <div className=\"react-list-table-column-setting-head\">\n <strong>列设置</strong>\n <span style={{ marginLeft: \"auto\" }}>\n {config.columnSettingHeaderExtra}\n </span>\n <button type=\"button\" onClick={props.onResetColumns}>\n 重置\n </button>\n </div>\n <div className=\"react-list-table-column-setting-body\">\n <SortableList\n items={flattenColumns(props.columns)}\n onOrderChange={props.onColumnOrderChange}\n renderItem={(column, handleProps) => (\n <div className=\"react-list-table-column-item\">\n <span\n className=\"react-list-table-column-main\"\n style={{ paddingLeft: column.level * 16 }}\n >\n <span\n className=\"react-list-table-column-drag\"\n {...handleProps}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n <HolderOutlined />\n </span>\n <input\n type=\"checkbox\"\n checked={!column.hidden}\n disabled={column.disableHide}\n onChange={(event) =>\n props.onColumnVisibilityChange(\n column.key,\n event.target.checked,\n )\n }\n />\n <span className=\"react-list-table-column-label\">\n {column.label}\n </span>\n </span>\n {!column.isGroup ? (\n <span className=\"react-list-table-column-actions\">\n <ReactNumberInput\n className=\"react-list-table-column-width-input\"\n min={column.minWidth}\n max={column.maxWidth}\n value={column.width}\n allowClear={false}\n aria-label={`${column.label}列宽`}\n style={{ width: 80, height: 24 }}\n onChange={(width) => {\n if (\n width != null &&\n Number.isFinite(width) &&\n width > 0 &&\n (column.minWidth == null ||\n width >= column.minWidth) &&\n (column.maxWidth == null ||\n width <= column.maxWidth)\n ) {\n props.onColumnWidthChange(\n column.key,\n width,\n );\n }\n }}\n />\n <ReactSelect\n className=\"react-list-table-column-fixed-input\"\n value={column.fixed ?? \"none\"}\n options={[\n { label: \"不固定\", value: \"none\" },\n { label: \"固定左侧\", value: \"left\" },\n { label: \"固定右侧\", value: \"right\" },\n ]}\n allowClear={false}\n showSearch={false}\n style={{ width: \"100%\", height: 24 }}\n aria-label={`${column.label}固定方向`}\n onChange={(value) => {\n props.onColumnFixedChange(\n column.key,\n value === \"left\" || value === \"right\"\n ? value\n : undefined,\n );\n }}\n />\n </span>\n ) : null}\n </div>\n )}\n />\n </div>\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction ToolButton(props: {\n label: string;\n children: ReactNode;\n iconSize?: number;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n className=\"react-list-table-tool\"\n style={{ fontSize: props.iconSize ?? 16 }}\n title={props.label}\n aria-label={props.label}\n onClick={props.onClick}\n >\n {props.children}\n </button>\n );\n}\n\nfunction flattenColumns<RecordType>(\n columns: ListTableColumn<RecordType>[],\n parentKey = \"root\",\n level = 0,\n): Array<{\n key: string;\n label: string;\n hidden: boolean;\n parentKey: string;\n width: number;\n minWidth?: number;\n maxWidth?: number;\n fixed?: \"left\" | \"right\";\n level: number;\n isGroup: boolean;\n disableHide: boolean;\n}> {\n return columns.flatMap((column) => {\n if (column.hideInSetting) {\n return [];\n }\n const key = String(column.key ?? column.dataIndex);\n const label =\n column.settingTitle ??\n (typeof column.title === \"string\" ? column.title : key);\n const current = {\n key,\n label,\n hidden: column.hidden === true,\n parentKey,\n width: Number(column.width) || 160,\n minWidth:\n typeof column.minWidth === \"number\" ? column.minWidth : undefined,\n maxWidth:\n typeof column.maxWidth === \"number\" ? column.maxWidth : undefined,\n fixed: column.fixed,\n level,\n isGroup: Boolean(column.children?.length),\n disableHide: column.disableHide === true,\n };\n return column.children?.length\n ? [current, ...flattenColumns(column.children, key, level + 1)]\n : [current];\n });\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n ListTableDangerConfirmRequest,\n ListTableEditorRequest,\n ListTableLoadingRequest,\n ListTableImagePreviewRequest,\n ListTableOptions,\n ListTableTooltipRequest,\n FixedPopupConfig,\n FilterPanelConfig,\n HeaderContextMenuConfig,\n ListTableSearchRequest,\n PaginationConfig,\n} from \"@canvas-components/list-table\";\nimport { ListTable } from \"@canvas-components/list-table\";\n\nexport function useReactListTableState<RecordType>(\n options: ListTableOptions<RecordType>,\n) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const tableRef = useRef<ListTable<RecordType> | null>(null);\n const [editorRequest, setEditorRequest] =\n useState<ListTableEditorRequest | null>(null);\n const [paginationConfig, setPaginationConfig] =\n useState<PaginationConfig | null>(null);\n const [tooltipRequest, setTooltipRequest] =\n useState<ListTableTooltipRequest | null>(null);\n const [loadingRequest, setLoadingRequest] =\n useState<ListTableLoadingRequest | null>(null);\n const [filterPanelRequest, setFilterPanelRequest] =\n useState<FilterPanelConfig | null>(null);\n const [fixedPopupRequest, setFixedPopupRequest] =\n useState<FixedPopupConfig | null>(null);\n const [headerContextMenuRequest, setHeaderContextMenuRequest] =\n useState<HeaderContextMenuConfig | null>(null);\n const [searchRequest, setSearchRequest] =\n useState<ListTableSearchRequest | null>(null);\n const [imagePreviewRequest, setImagePreviewRequest] =\n useState<ListTableImagePreviewRequest | null>(null);\n const [dangerConfirmRequest, setDangerConfirmRequest] =\n useState<ListTableDangerConfirmRequest | null>(null);\n\n const uiOptions = useMemo(\n () => ({\n ...options.ui,\n onEditorRequest: (request: ListTableEditorRequest | null) => {\n setEditorRequest(request);\n options.ui?.onEditorRequest?.(request);\n },\n onPaginationRender: (config: PaginationConfig | null) => {\n setPaginationConfig(config);\n options.ui?.onPaginationRender?.(config);\n },\n onTooltipRequest: (request: ListTableTooltipRequest | null) => {\n setTooltipRequest(request);\n options.ui?.onTooltipRequest?.(request);\n },\n onLoadingRequest: (request: ListTableLoadingRequest | null) => {\n setLoadingRequest(request);\n options.ui?.onLoadingRequest?.(request);\n },\n onFilterPanelRequest: (request: FilterPanelConfig | null) => {\n setFilterPanelRequest(request);\n options.ui?.onFilterPanelRequest?.(request);\n },\n onFixedPopupRequest: (request: FixedPopupConfig | null) => {\n setFixedPopupRequest(request);\n options.ui?.onFixedPopupRequest?.(request);\n },\n onHeaderContextMenuRequest: (request: HeaderContextMenuConfig | null) => {\n setHeaderContextMenuRequest(request);\n options.ui?.onHeaderContextMenuRequest?.(request);\n },\n onSearchRequest: (request: ListTableSearchRequest | null) => {\n setSearchRequest(request);\n options.ui?.onSearchRequest?.(request);\n },\n onImagePreviewRequest: (request: ListTableImagePreviewRequest | null) => {\n setImagePreviewRequest(request);\n options.ui?.onImagePreviewRequest?.(request);\n },\n onDangerConfirmRequest: (\n request: ListTableDangerConfirmRequest | null,\n ) => {\n setDangerConfirmRequest(request);\n options.ui?.onDangerConfirmRequest?.(request);\n },\n }),\n [options.ui],\n );\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const table = new ListTable(container, {\n ...options,\n ui: uiOptions,\n });\n table.mount();\n tableRef.current = table;\n\n return () => {\n table.destroy();\n tableRef.current = null;\n setEditorRequest(null);\n setPaginationConfig(null);\n setTooltipRequest(null);\n setLoadingRequest(null);\n setFilterPanelRequest(null);\n setFixedPopupRequest(null);\n setHeaderContextMenuRequest(null);\n setSearchRequest(null);\n setImagePreviewRequest(null);\n setDangerConfirmRequest(null);\n };\n }, []);\n\n useEffect(() => {\n tableRef.current?.updateOptions({\n ...options,\n ui: uiOptions,\n });\n }, [options, uiOptions]);\n\n return {\n containerRef,\n tableRef,\n editorRequest,\n paginationConfig,\n tooltipRequest,\n loadingRequest,\n filterPanelRequest,\n fixedPopupRequest,\n headerContextMenuRequest,\n searchRequest,\n imagePreviewRequest,\n dangerConfirmRequest,\n closeDangerConfirmRequest: () => {\n setDangerConfirmRequest(null);\n options.ui?.onDangerConfirmRequest?.(null);\n },\n };\n}\n","import type { ListTableOptions } from \"@canvas-components/list-table\";\r\nimport type { ReactListTableProps } from \"../types\";\n\n/**\n * 解析随密度切换的关联行高;自适应密度只接管未显式配置的高度。\n */\nexport function resolveDensityLinkedHeight(\n densityOverride: 32 | 48 | 56 | \"auto\" | null,\n configuredHeight: number | undefined,\n) {\n return typeof densityOverride === \"number\"\n ? densityOverride\n : configuredHeight;\n}\n\n/**\n * 全屏时使用宿主容器尺寸,退出全屏后恢复用户配置尺寸。\n */\nexport function resolveFullscreenTableSize(\n width: number | string | undefined,\n height: number | string | undefined,\n isFullscreen: boolean,\n) {\n return isFullscreen\n ? { width: \"100%\" as const, height: \"100%\" as const }\n : { width, height };\n}\n\nexport function buildListTableOptions<RecordType>(\n props: Omit<ReactListTableProps<RecordType>, \"className\" | \"style\">,\r\n): ListTableOptions<RecordType> {\r\n const {\r\n width,\r\n height,\r\n emptyText,\r\n scroll,\r\n locale,\r\n onChange,\r\n query,\r\n ...restProps\r\n } = props;\r\n\r\n return {\n type: \"list\",\n ...restProps,\n rowHeight: restProps.rowHeight ?? 32,\n width: scroll?.x === true ? \"100%\" : (scroll?.x ?? width),\n height: scroll?.y ?? height,\r\n emptyText: locale?.emptyText ?? emptyText,\r\n query: onChange\r\n ? {\r\n ...query,\r\n onChange,\r\n }\r\n : query,\r\n };\r\n}\r\n","import {\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type ForwardedRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { ReactImagePreview } from \"@canvas-components/react-components\";\nimport { resetListTableStoredColumnConfig } from \"@canvas-components/list-table\";\nimport { ReactTableContextMenuView } from \"../features/context-menu/context-menu-view\";\nimport { ReactListTableSearchDialog } from \"../features/search/search-dialog\";\nimport { ReactTableEditorOverlay } from \"../features/editor/editor-overlay\";\nimport { ReactTableFixedPopupView } from \"../features/fixed-popup/fixed-popup-view\";\nimport { ReactTableFilterPanelView } from \"../features/filter-panel/filter-panel-view\";\nimport { ReactTablePaginationView } from \"../features/pagination/pagination-view\";\nimport { ReactTableDangerConfirmView } from \"../features/popconfirm/popconfirm-view\";\nimport { ReactTableTooltipView } from \"../features/tooltip/tooltip-view\";\nimport { ReactTableToolbar } from \"../features/toolbar/table-toolbar\";\nimport { useReactListTableState } from \"../hooks/use-react-list-table-state\";\nimport type {\n ReactListTableColumnType,\n ReactListTableProps,\n ReactListTableRef,\n} from \"../types\";\nimport {\n buildListTableOptions,\n resolveDensityLinkedHeight,\n resolveFullscreenTableSize,\n} from \"./build-list-table-options\";\n\n/**\n * ListTable 的 React 宿主组件。\n */\nfunction ReactListTableInner<RecordType = Record<string, unknown>>(\n props: ReactListTableProps<RecordType>,\n ref: ForwardedRef<ReactListTableRef<RecordType>>,\n) {\n const {\n className,\n style,\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n columns,\n dataSource,\n onRow,\n theme,\n striped,\n highlightMode,\n contextMenu,\n grouping,\n rowHeight,\n headerRowHeight,\n summaryRowHeight,\n overscanRowCount,\n query,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n scrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n draggable,\n tableId,\n rowDrag,\n debug,\n title,\n toolbar,\n } = props;\n const shellRef = useRef<HTMLDivElement | null>(null);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [densityOverride, setDensityOverride] = useState<\n 32 | 48 | 56 | \"auto\" | null\n >(null);\n const [columnVisibility, setColumnVisibility] = useState<\n Map<string, boolean>\n >(() => new Map());\n const [columnOrders, setColumnOrders] = useState<Map<string, string[]>>(\n () => new Map(),\n );\n const [columnConfig, setColumnConfig] = useState<\n Map<string, { width?: number; fixed?: \"left\" | \"right\" | null }>\n >(() => new Map());\n const resolvedColumns = useMemo(\n () =>\n applyColumnManagerState(\n columns,\n columnVisibility,\n columnOrders,\n columnConfig,\n ),\n [columns, columnVisibility, columnOrders, columnConfig],\n );\n const resolvedRowHeight = densityOverride ?? rowHeight;\n const resolvedHeaderRowHeight = resolveDensityLinkedHeight(\n densityOverride,\n headerRowHeight,\n );\n const resolvedSummaryRowHeight = resolveDensityLinkedHeight(\n densityOverride,\n summaryRowHeight,\n );\n const options = useMemo(() => {\n const nextOptions = buildListTableOptions({\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n columns: resolvedColumns,\n dataSource,\n onRow,\n theme,\n striped,\n highlightMode,\n contextMenu,\n grouping,\n rowHeight: resolvedRowHeight,\n headerRowHeight: resolvedHeaderRowHeight,\n summaryRowHeight: resolvedSummaryRowHeight,\n overscanRowCount,\n query,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n scrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n draggable,\n tableId,\n rowDrag,\n debug,\n });\n const fullscreenSize = resolveFullscreenTableSize(\n nextOptions.width,\n nextOptions.height,\n isFullscreen,\n );\n return {\n ...nextOptions,\n ...fullscreenSize,\n ui: {\n ...nextOptions.ui,\n onDensityChange: setDensityOverride,\n },\n };\n }, [\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n resolvedColumns,\n dataSource,\n onRow,\n theme,\n striped,\n highlightMode,\n contextMenu,\n grouping,\n resolvedRowHeight,\n resolvedHeaderRowHeight,\n resolvedSummaryRowHeight,\n overscanRowCount,\n query,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n scrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n draggable,\n tableId,\n rowDrag,\n debug,\n isFullscreen,\n ]);\n const {\n containerRef,\n tableRef,\n editorRequest,\n paginationConfig,\n tooltipRequest,\n loadingRequest,\n filterPanelRequest,\n fixedPopupRequest,\n headerContextMenuRequest,\n searchRequest,\n imagePreviewRequest,\n dangerConfirmRequest,\n closeDangerConfirmRequest,\n } = useReactListTableState(options);\n const hasPagination = paginationConfig != null;\n\n useImperativeHandle(\n ref,\n () => ({\n validate: () => tableRef.current?.validate() ?? Promise.resolve([]),\n exportXlsx: (options) => {\n tableRef.current?.exportXlsx(options);\n },\n scrollTo: (options) => {\n tableRef.current?.scrollTo(options);\n },\n getDebugSnapshot: () => tableRef.current?.getDebugSnapshot() ?? null,\n resetSorter: () => {\n tableRef.current?.resetSorter();\n },\n resetFilter: () => {\n tableRef.current?.resetFilter();\n },\n }),\n [],\n );\n\n return (\n <>\n <div\n ref={shellRef}\n className={[\n \"react-list-table-shell\",\n isFullscreen ? \"react-list-table-shell-fullscreen\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n style={{\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n paddingBottom: hasPagination ? 44 : undefined,\n ...style,\n }}\n >\n <ReactTableToolbar\n title={title}\n toolbar={toolbar}\n columns={resolvedColumns}\n density={resolvedRowHeight ?? 32}\n hostRef={shellRef}\n onFullscreenChange={setIsFullscreen}\n onExport={(options) => tableRef.current?.exportXlsx(options)}\n onDensityChange={(density) => {\n tableRef.current?.changeDensity(density);\n setDensityOverride(density);\n if (toolbar) {\n toolbar.onDensityChange?.(density);\n }\n }}\n onColumnVisibilityChange={(columnKey, visible) => {\n setColumnVisibility((current) => {\n const next = new Map(current);\n next.set(columnKey, visible);\n return next;\n });\n }}\n onColumnOrderChange={(parentKey, orderedKeys) => {\n setColumnOrders((current) => {\n const next = new Map(current);\n next.set(parentKey, orderedKeys);\n return next;\n });\n }}\n onColumnWidthChange={(columnKey, width) => {\n setColumnConfig((current) => {\n const next = new Map(current);\n next.set(columnKey, {\n ...next.get(columnKey),\n width,\n });\n return next;\n });\n }}\n onColumnFixedChange={(columnKey, fixed) => {\n setColumnConfig((current) => {\n const next = new Map(current);\n next.set(columnKey, {\n ...next.get(columnKey),\n fixed: fixed ?? null,\n });\n return next;\n });\n }}\n onResetColumns={() => {\n const initialColumns = applyColumnManagerState(\n columns,\n new Map(),\n new Map(),\n new Map(),\n );\n void resetListTableStoredColumnConfig({\n storageKey,\n columns: initialColumns,\n }).finally(() => {\n setColumnVisibility(new Map());\n setColumnOrders(new Map());\n setColumnConfig(new Map());\n });\n }}\n />\n <div\n ref={containerRef}\n className=\"react-list-table-host\"\n style={{ flex: 1, minWidth: 0, width: \"100%\", minHeight: 0 }}\n >\n <ReactTablePaginationView config={paginationConfig} />\n </div>\n {loadingRequest ? (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"rgba(255, 255, 255, 0.68)\",\n color: \"#475569\",\n fontSize: 14,\n pointerEvents: \"auto\",\n cursor: \"progress\",\n }}\n >\n {loadingRequest.text ?? \"处理中…\"}\n </div>\n ) : null}\n </div>\n {tooltipRequest\n ? createPortal(\n <ReactTableTooltipView request={tooltipRequest} />,\n document.body,\n )\n : null}\n {filterPanelRequest\n ? createPortal(\n <ReactTableFilterPanelView request={filterPanelRequest} />,\n document.body,\n )\n : null}\n {fixedPopupRequest\n ? createPortal(\n <ReactTableFixedPopupView request={fixedPopupRequest} />,\n document.body,\n )\n : null}\n {headerContextMenuRequest\n ? createPortal(\n <ReactTableContextMenuView request={headerContextMenuRequest} />,\n document.body,\n )\n : null}\n {searchRequest\n ? createPortal(\n <ReactListTableSearchDialog request={searchRequest} />,\n document.body,\n )\n : null}\n {dangerConfirmRequest\n ? createPortal(\n <ReactTableDangerConfirmView\n request={dangerConfirmRequest}\n onClose={closeDangerConfirmRequest}\n />,\n document.body,\n )\n : null}\n {editorRequest\n ? createPortal(\n <ReactTableEditorOverlay request={editorRequest} />,\n editorRequest.hostElement ?? document.body,\n )\n : null}\n {imagePreviewRequest\n ? createPortal(\n <ReactImagePreview\n open\n src={imagePreviewRequest.src}\n alt={imagePreviewRequest.alt}\n onClose={imagePreviewRequest.onClose}\n />,\n document.body,\n )\n : null}\n </>\n );\n}\n\nfunction applyColumnManagerState<RecordType>(\n columns: ReactListTableProps<RecordType>[\"columns\"],\n visibility: Map<string, boolean>,\n orders: Map<string, string[]>,\n config: Map<string, { width?: number; fixed?: \"left\" | \"right\" | null }>,\n parentKey = \"root\",\n): ReactListTableProps<RecordType>[\"columns\"] {\n const order = orders.get(parentKey);\n const sortedColumns = order\n ? applyManagedColumnOrder(columns, order)\n : columns;\n return sortedColumns.map((column: ReactListTableColumnType<RecordType>) => {\n const key = resolveColumnKey(column);\n const managedConfig = config.get(key);\n return {\n ...column,\n hidden: visibility.has(key)\n ? visibility.get(key) === false\n : (column.hidden ?? column.initialHide),\n width: managedConfig?.width ?? column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n fixed:\n managedConfig?.fixed === null\n ? undefined\n : (managedConfig?.fixed ?? column.fixed),\n children: column.children\n ? applyColumnManagerState(\n column.children,\n visibility,\n orders,\n config,\n key,\n )\n : undefined,\n };\n });\n}\n\nfunction applyManagedColumnOrder<RecordType>(\n columns: ReactListTableProps<RecordType>[\"columns\"],\n orderedKeys: string[],\n) {\n const managedKeySet = new Set(orderedKeys);\n const managedSlots = columns\n .map((column, index) =>\n managedKeySet.has(resolveColumnKey(column)) ? index : -1,\n )\n .filter((index) => index >= 0);\n const columnByKey = new Map(\n columns.map((column) => [resolveColumnKey(column), column]),\n );\n const next = [...columns];\n\n orderedKeys.forEach((key, index) => {\n const slot = managedSlots[index];\n const column = columnByKey.get(key);\n if (slot != null && column) {\n next[slot] = column;\n }\n });\n\n return next;\n}\n\nfunction resolveColumnKey<RecordType>(\n column: ReactListTableProps<RecordType>[\"columns\"][number],\n) {\n return String(column.key ?? column.dataIndex);\n}\n\nexport const ReactListTable = forwardRef(ReactListTableInner) as <\n RecordType = Record<string, unknown>,\n>(\n props: ReactListTableProps<RecordType> & {\n ref?: ForwardedRef<ReactListTableRef<RecordType>>;\n },\n) => ReturnType<typeof ReactListTableInner>;\n"]}