@hkyhy/marsun-components-core 0.1.33 → 0.1.35

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.
Files changed (58) hide show
  1. package/dist/components/AgentHub/Report/Detail/ReportMetaStrip/index.d.ts +19 -0
  2. package/dist/components/AgentHub/Report/Detail/ReportMetaStrip/index.js +46 -0
  3. package/dist/components/AgentHub/Report/Detail/ReportMetaStrip/index.js.map +1 -0
  4. package/dist/components/AgentHub/Report/Detail/ReportMetaStrip/style.module.scss.js +12 -0
  5. package/dist/components/AgentHub/Report/Detail/ReportMetaStrip/style.module.scss.js.map +1 -0
  6. package/dist/components/AgentHub/Report/Detail/ReportTemplate/index.d.ts +18 -0
  7. package/dist/components/AgentHub/Report/Detail/ReportTemplate/index.js +98 -0
  8. package/dist/components/AgentHub/Report/Detail/ReportTemplate/index.js.map +1 -0
  9. package/dist/components/AgentHub/Report/Detail/ReportTemplate/style.module.scss.js +14 -0
  10. package/dist/components/AgentHub/Report/Detail/ReportTemplate/style.module.scss.js.map +1 -0
  11. package/dist/components/AgentHub/Report/Detail/index.d.ts +4 -0
  12. package/dist/components/AgentHub/Report/index.d.ts +1 -0
  13. package/dist/components/Icons/index.d.ts +2 -1
  14. package/dist/components/Icons/index.js +158 -155
  15. package/dist/components/Icons/index.js.map +1 -1
  16. package/dist/components/InteractiveBlock/InteractiveBlock.d.ts +3 -0
  17. package/dist/components/InteractiveBlock/InteractiveBlock.js +49 -46
  18. package/dist/components/InteractiveBlock/InteractiveBlock.js.map +1 -1
  19. package/dist/components/InteractiveBlock/index.d.ts +1 -1
  20. package/dist/components/InteractiveBlock/style.module.scss.js +14 -13
  21. package/dist/components/InteractiveBlock/style.module.scss.js.map +1 -1
  22. package/dist/components/Modal/Modal/index.d.ts +6 -0
  23. package/dist/components/Modal/Modal/index.js +120 -0
  24. package/dist/components/Modal/Modal/index.js.map +1 -0
  25. package/dist/components/Modal/Modal/style.module.scss.js +17 -0
  26. package/dist/components/Modal/Modal/style.module.scss.js.map +1 -0
  27. package/dist/components/Modal/ModalTypes.d.ts +26 -0
  28. package/dist/components/Modal/StepModal/index.js +43 -41
  29. package/dist/components/Modal/StepModal/index.js.map +1 -1
  30. package/dist/components/Modal/index.d.ts +3 -0
  31. package/dist/components/Modal/utils/resolveModalSize.d.ts +22 -0
  32. package/dist/components/Modal/utils/resolveModalSize.js +28 -0
  33. package/dist/components/Modal/utils/resolveModalSize.js.map +1 -0
  34. package/dist/components/Table/ColumnConfigPanel.js +164 -137
  35. package/dist/components/Table/ColumnConfigPanel.js.map +1 -1
  36. package/dist/components/Table/Table.d.ts +26 -6
  37. package/dist/components/Table/Table.js +313 -100
  38. package/dist/components/Table/Table.js.map +1 -1
  39. package/dist/components/Table/columnConfig.module.scss.js +32 -28
  40. package/dist/components/Table/columnConfig.module.scss.js.map +1 -1
  41. package/dist/components/Table/columnConfigUtils.d.ts +8 -1
  42. package/dist/components/Table/columnConfigUtils.js +114 -84
  43. package/dist/components/Table/columnConfigUtils.js.map +1 -1
  44. package/dist/components/Table/index.d.ts +2 -2
  45. package/dist/components/Table/style.module.scss.js +16 -3
  46. package/dist/components/Table/style.module.scss.js.map +1 -1
  47. package/dist/components/Table/tablePrefsTypes.d.ts +12 -0
  48. package/dist/components/Table/tablePrefsTypes.js +7 -0
  49. package/dist/components/Table/tablePrefsTypes.js.map +1 -0
  50. package/dist/components/Table/tablePrefsUtils.d.ts +11 -0
  51. package/dist/components/Table/tablePrefsUtils.js +66 -0
  52. package/dist/components/Table/tablePrefsUtils.js.map +1 -0
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.js +405 -382
  55. package/dist/index.js.map +1 -1
  56. package/dist/marsun-components-core.css +1 -1
  57. package/dist/styles/global.css +1 -1
  58. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnConfigPanel.js","sources":["../../../src/components/Table/ColumnConfigPanel.tsx"],"sourcesContent":["import { useCallback, useMemo, useState, type DragEvent, type FC, type ReactNode } from 'react';\nimport { Button, Checkbox, Collapse, Empty, Input, Popover, Space, Tooltip } from 'antd';\nimport { Settings, Undo2 } from '../Icons';\nimport type { ColumnConfigPanelItem, TableColumnConfigItem } from './columnConfigTypes';\nimport { mergePanelWithConfig, panelItemsToConfig, splitVisibleHidden } from './columnConfigUtils';\nimport styles from './columnConfig.module.scss';\n\ntype ColumnConfigPanelProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n defaultItems: ColumnConfigPanelItem[];\n savedConfig: TableColumnConfigItem[] | null;\n onConfirm: (items: TableColumnConfigItem[]) => void | Promise<void>;\n children: ReactNode;\n};\n\nfunction flattenSearch(items: ColumnConfigPanelItem[], q: string): boolean {\n if (!q) return true;\n const lower = q.toLowerCase();\n return items.some(\n (it) =>\n it.label.toLowerCase().includes(lower) ||\n it.id.toLowerCase().includes(lower) ||\n (it.children ? flattenSearch(it.children, q) : false),\n );\n}\n\nconst DragList: FC<{\n items: ColumnConfigPanelItem[];\n search: string;\n onChange: (next: ColumnConfigPanelItem[]) => void;\n onToggle: (id: string, hidden: boolean) => void;\n depth?: number;\n}> = ({ items, search, onChange, onToggle, depth = 0 }) => {\n const [dragIndex, setDragIndex] = useState<number | null>(null);\n\n const filtered = useMemo(() => {\n if (!search.trim()) return items.map((it, i) => ({ it, i }));\n return items.map((it, i) => ({ it, i })).filter(({ it }) => flattenSearch([it], search.trim()));\n }, [items, search]);\n\n const onDragStart = (e: DragEvent, index: number) => {\n setDragIndex(index);\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('text/plain', String(index));\n };\n\n const onDrop = (e: DragEvent, toIndex: number) => {\n e.preventDefault();\n const from = dragIndex ?? Number(e.dataTransfer.getData('text/plain'));\n setDragIndex(null);\n if (!Number.isFinite(from) || from === toIndex) return;\n const next = [...items];\n const [moved] = next.splice(from, 1);\n if (!moved) return;\n next.splice(toIndex, 0, moved);\n onChange(next);\n };\n\n if (!filtered.length) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description=\"暂无数据\" />;\n }\n\n return (\n <ul className={styles.list} style={{ paddingLeft: depth ? 12 : 0 }}>\n {filtered.map(({ it, i }) => (\n <li key={it.id} className={styles.listItem}>\n <div\n className={styles.row}\n draggable={!search.trim()}\n onDragStart={(e) => onDragStart(e, i)}\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => onDrop(e, i)}\n >\n <span className={styles.grip} aria-hidden>\n ⠿\n </span>\n <Checkbox checked={!it.hidden} onChange={(e) => onToggle(it.id, !e.target.checked)}>\n <span className={styles.label}>{it.label || it.id}</span>\n </Checkbox>\n </div>\n {it.children?.length ? (\n <DragList\n items={it.children}\n search={search}\n depth={depth + 1}\n onChange={(childNext) => {\n const next = items.map((x) => (x.id === it.id ? { ...x, children: childNext } : x));\n onChange(next);\n }}\n onToggle={(cid, hidden) => {\n const next = items.map((x) => {\n if (x.id !== it.id || !x.children) return x;\n const children = x.children.map((c) =>\n c.id === cid\n ? { ...c, hidden }\n : c.children\n ? {\n ...c,\n children: toggleDeep(c.children, cid, hidden),\n }\n : c,\n );\n const allHidden = children.every((c) => c.hidden);\n return { ...x, children, hidden: allHidden ? true : hidden ? x.hidden : false };\n });\n onChange(next);\n }}\n />\n ) : null}\n </li>\n ))}\n </ul>\n );\n};\n\nfunction toggleDeep(\n items: ColumnConfigPanelItem[],\n id: string,\n hidden: boolean,\n): ColumnConfigPanelItem[] {\n return items.map((it) => {\n if (it.id === id) return { ...it, hidden };\n if (it.children) {\n const children = toggleDeep(it.children, id, hidden);\n return {\n ...it,\n children,\n hidden: children.every((c) => c.hidden) ? true : it.hidden && hidden,\n };\n }\n return it;\n });\n}\n\nfunction toggleInTree(\n items: ColumnConfigPanelItem[],\n id: string,\n hidden: boolean,\n): ColumnConfigPanelItem[] {\n return items.map((it) => {\n if (it.id === id) {\n const children = it.children?.map((c) => setHiddenDeep(c, hidden));\n return { ...it, hidden, children };\n }\n if (it.children) {\n const children = toggleInTree(it.children, id, hidden);\n const allHidden = children.every((c) => c.hidden);\n return {\n ...it,\n children,\n hidden: allHidden ? true : !hidden && it.id !== id ? false : it.hidden,\n };\n }\n return it;\n });\n}\n\nfunction setHiddenDeep(item: ColumnConfigPanelItem, hidden: boolean): ColumnConfigPanelItem {\n return {\n ...item,\n hidden,\n children: item.children?.map((c) => setHiddenDeep(c, hidden)),\n };\n}\n\n/** 将显隐两区合并回完整顺序:visible 在前,hidden 在后(保持各自内部拖拽序) */\nfunction mergeSections(\n visible: ColumnConfigPanelItem[],\n hidden: ColumnConfigPanelItem[],\n): ColumnConfigPanelItem[] {\n return [...visible, ...hidden];\n}\n\nexport const ColumnConfigPopover: FC<ColumnConfigPanelProps> = ({\n open,\n onOpenChange,\n defaultItems,\n savedConfig,\n onConfirm,\n children,\n}) => {\n const [draft, setDraft] = useState<ColumnConfigPanelItem[]>([]);\n const [searchVisible, setSearchVisible] = useState('');\n const [searchHidden, setSearchHidden] = useState('');\n const [saving, setSaving] = useState(false);\n\n const syncDraft = useCallback(() => {\n setDraft(mergePanelWithConfig(defaultItems, savedConfig));\n setSearchVisible('');\n setSearchHidden('');\n }, [defaultItems, savedConfig]);\n\n const handleOpenChange = (next: boolean) => {\n if (next) syncDraft();\n onOpenChange(next);\n };\n\n const { visible, hidden } = useMemo(() => splitVisibleHidden(draft), [draft]);\n\n const setVisibleList = (list: ColumnConfigPanelItem[]) => {\n setDraft(mergeSections(list, hidden));\n };\n const setHiddenList = (list: ColumnConfigPanelItem[]) => {\n setDraft(mergeSections(visible, list));\n };\n\n const onToggle = (id: string, nextHidden: boolean) => {\n setDraft((prev) => toggleInTree(prev, id, nextHidden));\n };\n\n const onReset = () => {\n setDraft(defaultItems.map((d) => ({ ...d, children: d.children?.map((c) => ({ ...c })) })));\n };\n\n const onOk = async () => {\n setSaving(true);\n try {\n await onConfirm(panelItemsToConfig(draft));\n onOpenChange(false);\n } finally {\n setSaving(false);\n }\n };\n\n const content = (\n <div className={styles.panel} data-ui=\"table-column-config\">\n <div className={styles.header}>\n <span className={styles.title}>编辑表格</span>\n <Tooltip title=\"恢复默认\">\n <button type=\"button\" className={styles.resetBtn} onClick={onReset} aria-label=\"恢复默认\">\n <Undo2 size={16} />\n </button>\n </Tooltip>\n </div>\n <Collapse\n className={styles.collapse}\n defaultActiveKey={['visible', 'hidden']}\n ghost\n items={[\n {\n key: 'visible',\n label: '显示的信息',\n children: (\n <>\n <Input\n allowClear\n size=\"small\"\n className={styles.search}\n placeholder=\"搜索\"\n value={searchVisible}\n onChange={(e) => setSearchVisible(e.target.value)}\n />\n <DragList\n items={visible}\n search={searchVisible}\n onChange={setVisibleList}\n onToggle={onToggle}\n />\n </>\n ),\n },\n {\n key: 'hidden',\n label: '隐藏的信息',\n children: (\n <>\n <Input\n allowClear\n size=\"small\"\n className={styles.search}\n placeholder=\"搜索\"\n value={searchHidden}\n onChange={(e) => setSearchHidden(e.target.value)}\n />\n <DragList\n items={hidden}\n search={searchHidden}\n onChange={setHiddenList}\n onToggle={onToggle}\n />\n </>\n ),\n },\n ]}\n />\n <div className={styles.footer}>\n <Space>\n <Button size=\"small\" onClick={() => onOpenChange(false)}>\n 取消\n </Button>\n <Button type=\"primary\" size=\"small\" loading={saving} onClick={() => void onOk()}>\n 确定\n </Button>\n </Space>\n </div>\n </div>\n );\n\n return (\n <Popover\n trigger=\"click\"\n placement=\"bottomRight\"\n open={open}\n onOpenChange={handleOpenChange}\n content={content}\n overlayClassName={styles.overlay}\n arrow={false}\n >\n {children}\n </Popover>\n );\n};\n\nexport function ColumnConfigTrigger({\n open,\n onOpenChange,\n defaultItems,\n savedConfig,\n onConfirm,\n}: Omit<ColumnConfigPanelProps, 'children'>) {\n return (\n <ColumnConfigPopover\n open={open}\n onOpenChange={onOpenChange}\n defaultItems={defaultItems}\n savedConfig={savedConfig}\n onConfirm={onConfirm}\n >\n <button\n type=\"button\"\n className={styles.gearBtn}\n aria-label=\"编辑表格\"\n onClick={(e) => e.stopPropagation()}\n >\n <Settings size={14} />\n </button>\n </ColumnConfigPopover>\n );\n}\n"],"names":["flattenSearch","items","q","lower","it","DragList","search","onChange","onToggle","depth","dragIndex","setDragIndex","useState","filtered","useMemo","i","onDragStart","e","index","onDrop","toIndex","from","next","moved","jsx","styles","jsxs","Checkbox","_a","childNext","x","cid","hidden","children","c","toggleDeep","allHidden","Empty","id","toggleInTree","setHiddenDeep","item","mergeSections","visible","ColumnConfigPopover","open","onOpenChange","defaultItems","savedConfig","onConfirm","draft","setDraft","searchVisible","setSearchVisible","searchHidden","setSearchHidden","saving","setSaving","syncDraft","useCallback","mergePanelWithConfig","handleOpenChange","splitVisibleHidden","setVisibleList","list","setHiddenList","nextHidden","prev","onReset","d","onOk","panelItemsToConfig","content","Tooltip","Undo2","Collapse","Fragment","Input","Space","Button","Popover","ColumnConfigTrigger","Settings"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnConfigPanel.js","sources":["../../../src/components/Table/ColumnConfigPanel.tsx"],"sourcesContent":["import { useCallback, useMemo, useState, type DragEvent, type FC, type ReactNode } from 'react';\nimport { Button, Checkbox, Collapse, Empty, Input, Popover, Space, Tooltip } from 'antd';\nimport { ChevronDown, ChevronRight, Settings, Undo2 } from '../Icons';\nimport type { ColumnConfigPanelItem, TableColumnConfigItem } from './columnConfigTypes';\nimport { mergePanelWithConfig, panelItemsToConfig, splitVisibleHidden } from './columnConfigUtils';\nimport styles from './columnConfig.module.scss';\n\ntype ColumnConfigPanelProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n defaultItems: ColumnConfigPanelItem[];\n savedConfig: TableColumnConfigItem[] | null;\n onConfirm: (items: TableColumnConfigItem[]) => void | Promise<void>;\n children: ReactNode;\n};\n\nfunction flattenSearch(items: ColumnConfigPanelItem[], q: string): boolean {\n if (!q) return true;\n const lower = q.toLowerCase();\n return items.some(\n (it) =>\n it.label.toLowerCase().includes(lower) ||\n it.id.toLowerCase().includes(lower) ||\n (it.children ? flattenSearch(it.children, q) : false),\n );\n}\n\nconst DragList: FC<{\n items: ColumnConfigPanelItem[];\n search: string;\n onChange: (next: ColumnConfigPanelItem[]) => void;\n onToggle: (id: string, hidden: boolean) => void;\n depth?: number;\n collapsedIds: Set<string>;\n onToggleCollapse: (id: string) => void;\n}> = ({ items, search, onChange, onToggle, depth = 0, collapsedIds, onToggleCollapse }) => {\n const [dragIndex, setDragIndex] = useState<number | null>(null);\n const searching = Boolean(search.trim());\n\n const filtered = useMemo(() => {\n if (!search.trim()) return items.map((it, i) => ({ it, i }));\n return items.map((it, i) => ({ it, i })).filter(({ it }) => flattenSearch([it], search.trim()));\n }, [items, search]);\n\n const onDragStart = (e: DragEvent, index: number) => {\n setDragIndex(index);\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('text/plain', String(index));\n };\n\n const onDrop = (e: DragEvent, toIndex: number) => {\n e.preventDefault();\n const from = dragIndex ?? Number(e.dataTransfer.getData('text/plain'));\n setDragIndex(null);\n if (!Number.isFinite(from) || from === toIndex) return;\n const next = [...items];\n const [moved] = next.splice(from, 1);\n if (!moved) return;\n next.splice(toIndex, 0, moved);\n onChange(next);\n };\n\n if (!filtered.length) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description=\"暂无数据\" />;\n }\n\n return (\n <ul className={styles.list} style={{ paddingLeft: depth ? 12 : 0 }}>\n {filtered.map(({ it, i }) => {\n const hasChildren = Boolean(it.children?.length);\n const expanded = searching || !collapsedIds.has(it.id);\n return (\n <li key={it.id} className={styles.listItem}>\n <div\n className={styles.row}\n draggable={!searching}\n onDragStart={(e) => onDragStart(e, i)}\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => onDrop(e, i)}\n >\n {hasChildren ? (\n <button\n type=\"button\"\n className={styles.foldBtn}\n aria-label={expanded ? '折叠' : '展开'}\n aria-expanded={expanded}\n onClick={(e) => {\n e.stopPropagation();\n onToggleCollapse(it.id);\n }}\n >\n {expanded ? <ChevronDown size={14} /> : <ChevronRight size={14} />}\n </button>\n ) : (\n <span className={styles.foldSpacer} aria-hidden />\n )}\n <span className={styles.grip} aria-hidden>\n ⠿\n </span>\n <Checkbox checked={!it.hidden} onChange={(e) => onToggle(it.id, !e.target.checked)}>\n <span className={styles.label}>{it.label || it.id}</span>\n </Checkbox>\n </div>\n {hasChildren && expanded ? (\n <DragList\n items={it.children!}\n search={search}\n depth={depth + 1}\n collapsedIds={collapsedIds}\n onToggleCollapse={onToggleCollapse}\n onChange={(childNext) => {\n const next = items.map((x) =>\n x.id === it.id ? { ...x, children: childNext } : x,\n );\n onChange(next);\n }}\n onToggle={(cid, hidden) => {\n const next = items.map((x) => {\n if (x.id !== it.id || !x.children) return x;\n const children = x.children.map((c) =>\n c.id === cid\n ? { ...c, hidden }\n : c.children\n ? {\n ...c,\n children: toggleDeep(c.children, cid, hidden),\n }\n : c,\n );\n const allHidden = children.every((c) => c.hidden);\n return { ...x, children, hidden: allHidden ? true : hidden ? x.hidden : false };\n });\n onChange(next);\n }}\n />\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n};\n\nfunction toggleDeep(\n items: ColumnConfigPanelItem[],\n id: string,\n hidden: boolean,\n): ColumnConfigPanelItem[] {\n return items.map((it) => {\n if (it.id === id) return { ...it, hidden };\n if (it.children) {\n const children = toggleDeep(it.children, id, hidden);\n return {\n ...it,\n children,\n hidden: children.every((c) => c.hidden) ? true : it.hidden && hidden,\n };\n }\n return it;\n });\n}\n\nfunction toggleInTree(\n items: ColumnConfigPanelItem[],\n id: string,\n hidden: boolean,\n): ColumnConfigPanelItem[] {\n return items.map((it) => {\n if (it.id === id) {\n const children = it.children?.map((c) => setHiddenDeep(c, hidden));\n return { ...it, hidden, children };\n }\n if (it.children) {\n const children = toggleInTree(it.children, id, hidden);\n const allHidden = children.every((c) => c.hidden);\n return {\n ...it,\n children,\n hidden: allHidden ? true : !hidden && it.id !== id ? false : it.hidden,\n };\n }\n return it;\n });\n}\n\nfunction setHiddenDeep(item: ColumnConfigPanelItem, hidden: boolean): ColumnConfigPanelItem {\n return {\n ...item,\n hidden,\n children: item.children?.map((c) => setHiddenDeep(c, hidden)),\n };\n}\n\n/** 将显隐两区合并回完整顺序:visible 在前,hidden 在后(保持各自内部拖拽序) */\nfunction mergeSections(\n visible: ColumnConfigPanelItem[],\n hidden: ColumnConfigPanelItem[],\n): ColumnConfigPanelItem[] {\n return [...visible, ...hidden];\n}\n\nexport const ColumnConfigPopover: FC<ColumnConfigPanelProps> = ({\n open,\n onOpenChange,\n defaultItems,\n savedConfig,\n onConfirm,\n children,\n}) => {\n const [draft, setDraft] = useState<ColumnConfigPanelItem[]>([]);\n const [searchVisible, setSearchVisible] = useState('');\n const [searchHidden, setSearchHidden] = useState('');\n const [saving, setSaving] = useState(false);\n const [collapsedIds, setCollapsedIds] = useState<Set<string>>(() => new Set());\n\n const syncDraft = useCallback(() => {\n setDraft(mergePanelWithConfig(defaultItems, savedConfig));\n setSearchVisible('');\n setSearchHidden('');\n setCollapsedIds(new Set());\n }, [defaultItems, savedConfig]);\n\n const handleOpenChange = (next: boolean) => {\n if (next) syncDraft();\n onOpenChange(next);\n };\n\n const { visible, hidden } = useMemo(() => splitVisibleHidden(draft), [draft]);\n\n const setVisibleList = (list: ColumnConfigPanelItem[]) => {\n setDraft(mergeSections(list, hidden));\n };\n const setHiddenList = (list: ColumnConfigPanelItem[]) => {\n setDraft(mergeSections(visible, list));\n };\n\n const onToggle = (id: string, nextHidden: boolean) => {\n setDraft((prev) => toggleInTree(prev, id, nextHidden));\n };\n\n const onToggleCollapse = useCallback((id: string) => {\n setCollapsedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n }, []);\n\n const onReset = () => {\n setDraft(defaultItems.map((d) => ({ ...d, children: d.children?.map((c) => ({ ...c })) })));\n setCollapsedIds(new Set());\n };\n\n const onOk = async () => {\n setSaving(true);\n try {\n await onConfirm(panelItemsToConfig(draft));\n onOpenChange(false);\n } finally {\n setSaving(false);\n }\n };\n\n const content = (\n <div className={styles.panel} data-ui=\"table-column-config\">\n <div className={styles.header}>\n <span className={styles.title}>编辑表格</span>\n <Tooltip title=\"恢复默认\">\n <button type=\"button\" className={styles.resetBtn} onClick={onReset} aria-label=\"恢复默认\">\n <Undo2 size={16} />\n </button>\n </Tooltip>\n </div>\n <Collapse\n className={styles.collapse}\n defaultActiveKey={['visible', 'hidden']}\n ghost\n items={[\n {\n key: 'visible',\n label: '显示的信息',\n children: (\n <>\n <Input\n allowClear\n size=\"small\"\n className={styles.search}\n placeholder=\"搜索\"\n value={searchVisible}\n onChange={(e) => setSearchVisible(e.target.value)}\n />\n <DragList\n items={visible}\n search={searchVisible}\n onChange={setVisibleList}\n onToggle={onToggle}\n collapsedIds={collapsedIds}\n onToggleCollapse={onToggleCollapse}\n />\n </>\n ),\n },\n {\n key: 'hidden',\n label: '隐藏的信息',\n children: (\n <>\n <Input\n allowClear\n size=\"small\"\n className={styles.search}\n placeholder=\"搜索\"\n value={searchHidden}\n onChange={(e) => setSearchHidden(e.target.value)}\n />\n <DragList\n items={hidden}\n search={searchHidden}\n onChange={setHiddenList}\n onToggle={onToggle}\n collapsedIds={collapsedIds}\n onToggleCollapse={onToggleCollapse}\n />\n </>\n ),\n },\n ]}\n />\n <div className={styles.footer}>\n <Space>\n <Button size=\"small\" onClick={() => onOpenChange(false)}>\n 取消\n </Button>\n <Button type=\"primary\" size=\"small\" loading={saving} onClick={() => void onOk()}>\n 确定\n </Button>\n </Space>\n </div>\n </div>\n );\n\n return (\n <Popover\n trigger=\"click\"\n placement=\"bottomRight\"\n open={open}\n onOpenChange={handleOpenChange}\n content={content}\n overlayClassName={styles.overlay}\n arrow={false}\n >\n {children}\n </Popover>\n );\n};\n\nexport function ColumnConfigTrigger({\n open,\n onOpenChange,\n defaultItems,\n savedConfig,\n onConfirm,\n}: Omit<ColumnConfigPanelProps, 'children'>) {\n return (\n <ColumnConfigPopover\n open={open}\n onOpenChange={onOpenChange}\n defaultItems={defaultItems}\n savedConfig={savedConfig}\n onConfirm={onConfirm}\n >\n <button\n type=\"button\"\n className={styles.gearBtn}\n aria-label=\"编辑表格\"\n onClick={(e) => e.stopPropagation()}\n >\n <Settings size={14} />\n </button>\n </ColumnConfigPopover>\n );\n}\n"],"names":["flattenSearch","items","q","lower","it","DragList","search","onChange","onToggle","depth","collapsedIds","onToggleCollapse","dragIndex","setDragIndex","useState","searching","filtered","useMemo","i","onDragStart","e","index","onDrop","toIndex","from","next","moved","styles","hasChildren","_a","expanded","jsxs","jsx","ChevronDown","ChevronRight","Checkbox","childNext","x","cid","hidden","children","c","toggleDeep","allHidden","Empty","id","toggleInTree","setHiddenDeep","item","mergeSections","visible","ColumnConfigPopover","open","onOpenChange","defaultItems","savedConfig","onConfirm","draft","setDraft","searchVisible","setSearchVisible","searchHidden","setSearchHidden","saving","setSaving","setCollapsedIds","syncDraft","useCallback","mergePanelWithConfig","handleOpenChange","splitVisibleHidden","setVisibleList","list","setHiddenList","nextHidden","prev","onReset","d","onOk","panelItemsToConfig","content","Tooltip","Undo2","Collapse","Fragment","Input","Space","Button","Popover","ColumnConfigTrigger","Settings"],"mappings":"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"}
@@ -1,22 +1,42 @@
1
+ import { Key, ReactNode } from 'react';
1
2
  import { TableProps as AntTableProps } from 'antd';
2
3
  import { TableColumnConfigFetcher, TableColumnConfigItem, TableColumnConfigSaver } from './columnConfigTypes';
3
- import { applyColumnConfig, columnsToConfig, COLUMN_CONFIG_COL_KEY } from './columnConfigUtils';
4
+ import { applyColumnConfig, columnsToConfig, COLUMN_CONFIG_COL_KEY, FLEX_SPACER_COL_KEY, hideColumnAtPath, isInternalColumnKey } from './columnConfigUtils';
5
+ import { TablePrefs, TablePrefsFetcher, TablePrefsSaver } from './tablePrefsTypes';
4
6
  export type { TableColumnConfigItem, TableColumnConfigFetcher, TableColumnConfigSaver };
7
+ export type { TablePrefs, TablePrefsFetcher, TablePrefsSaver };
5
8
  export type TableProps<RecordType extends object = Record<string, unknown>> = AntTableProps<RecordType> & {
6
9
  /** 稳定偏好 key;业务列表必填 */
7
10
  tableName?: string;
8
11
  /** 是否启用「编辑表格」列配置;默认 !!tableName */
9
12
  columnConfigEnabled?: boolean;
13
+ /** @deprecated 优先用 fetchTablePrefs;仍支持仅列配置 */
10
14
  fetchColumnConfig?: TableColumnConfigFetcher;
15
+ /** @deprecated 优先用 saveTablePrefs */
11
16
  saveColumnConfig?: TableColumnConfigSaver;
12
17
  onColumnConfigChange?: (items: TableColumnConfigItem[]) => void;
18
+ /** 读写 TablePrefs(仅 columns,经 user_key) */
19
+ fetchTablePrefs?: TablePrefsFetcher;
20
+ saveTablePrefs?: TablePrefsSaver;
21
+ onTablePrefsChange?: (prefs: TablePrefs) => void;
22
+ /** 启用行隐藏(会话内 state,不进 user_key);默认 false */
23
+ rowConfigEnabled?: boolean;
24
+ /** 不可隐藏的行 key(如主对标) */
25
+ lockedRowKeys?: Key[];
26
+ /** 受控隐藏行;不传则用组件内部会话 state */
27
+ hiddenRowKeys?: Key[];
28
+ onHiddenRowKeysChange?: (keys: string[]) => void;
29
+ /** 行隐藏工具条:传入当前勾选 key 以启用「隐藏选中行」 */
30
+ rowHideSelectedKeys?: Key[];
31
+ /** 自定义行隐藏工具条;默认内置按钮 */
32
+ rowConfigToolbar?: ReactNode | false;
13
33
  };
14
34
  /**
15
35
  * 基于 antd Table 的列表表格包装。
16
- * 默认:横向滚动 max-content、受控分页 showSizeChanger + showTotal、空态 Empty。
17
- * tableName + columnConfigEnabled 时在最右侧追加独立齿轮列(跨多级表头高度)。
36
+ * 列偏好经 user_key;行隐藏仅会话 state,不进 user_key。
18
37
  */
19
- declare function Table<RecordType extends object = Record<string, unknown>>({ className, scroll, pagination, locale, columns, tableName, columnConfigEnabled, fetchColumnConfig, saveColumnConfig, onColumnConfigChange, ...rest }: TableProps<RecordType>): import("react").JSX.Element;
38
+ declare function Table<RecordType extends object = Record<string, unknown>>({ className, style, scroll, pagination, locale, columns, dataSource, rowKey, tableName, columnConfigEnabled, fetchColumnConfig, saveColumnConfig, onColumnConfigChange, fetchTablePrefs, saveTablePrefs, onTablePrefsChange, rowConfigEnabled, lockedRowKeys, hiddenRowKeys: hiddenRowKeysProp, onHiddenRowKeysChange, rowHideSelectedKeys, rowConfigToolbar, rowSelection, ...rest }: TableProps<RecordType>): import("react").JSX.Element;
20
39
  export default Table;
21
- /** 导出工具:业务侧也可手动生成默认配置 */
22
- export { columnsToConfig, applyColumnConfig, COLUMN_CONFIG_COL_KEY };
40
+ export { columnsToConfig, applyColumnConfig, COLUMN_CONFIG_COL_KEY, FLEX_SPACER_COL_KEY, isInternalColumnKey, hideColumnAtPath, };
41
+ export { parseTablePrefs, serializeTablePrefs, mergeTablePrefs, applyHiddenRows, normalizeHiddenRowKeys, } from './tablePrefsUtils';
42
+ export { emptyTablePrefs } from './tablePrefsTypes';
@@ -1,117 +1,330 @@
1
- import { jsx as m } from "react/jsx-runtime";
2
- import { useRef as P, useState as T, useEffect as _, useMemo as y, useCallback as R } from "react";
3
- import { Table as j } from "antd";
4
- import k from "classnames";
5
- import { ColumnConfigTrigger as D } from "./ColumnConfigPanel.js";
6
- import { applyColumnConfig as G, columnsToPanelItems as U, COLUMN_CONFIG_COL_KEY as $ } from "./columnConfigUtils.js";
7
- import { columnsToConfig as oe } from "./columnConfigUtils.js";
8
- import v from "./style.module.scss.js";
9
- import w from "./columnConfig.module.scss.js";
10
- import z from "../Empty/Empty.js";
11
- const A = { x: "max-content" }, B = 40;
12
- function K(f) {
13
- return `共 ${f} 项`;
1
+ import { jsxs as A, jsx as d } from "react/jsx-runtime";
2
+ import { useRef as Nt, useState as U, useEffect as ot, useMemo as y, useCallback as O } from "react";
3
+ import { Space as kt, Button as dt, Tooltip as pt, Table as Et } from "antd";
4
+ import Q from "classnames";
5
+ import { Eye as ht } from "../Icons/index.js";
6
+ import { ColumnConfigTrigger as jt } from "./ColumnConfigPanel.js";
7
+ import { applyColumnConfig as Bt, columnsToPanelItems as $t, columnsToConfig as Dt, hideColumnAtPath as Mt, COLUMN_CONFIG_COL_KEY as Ut, isInternalColumnKey as yt, shortChildId as Gt } from "./columnConfigUtils.js";
8
+ import { FLEX_SPACER_COL_KEY as fn } from "./columnConfigUtils.js";
9
+ import { emptyTablePrefs as Pt } from "./tablePrefsTypes.js";
10
+ import { normalizeHiddenRowKeys as V, mergeTablePrefs as mt, applyHiddenRows as Xt } from "./tablePrefsUtils.js";
11
+ import { parseTablePrefs as hn, serializeTablePrefs as yn } from "./tablePrefsUtils.js";
12
+ import g from "./style.module.scss.js";
13
+ import ft from "./columnConfig.module.scss.js";
14
+ import Yt from "../Empty/Empty.js";
15
+ const qt = { x: "max-content" }, I = 40, Ct = 64;
16
+ function Jt(n) {
17
+ return `共 ${n} 项`;
14
18
  }
15
- function ee({
16
- className: f,
17
- scroll: O,
18
- pagination: s,
19
- locale: h,
20
- columns: r,
21
- tableName: t,
22
- columnConfigEnabled: C,
23
- fetchColumnConfig: c,
24
- saveColumnConfig: i,
25
- onColumnConfigChange: l,
26
- ...E
19
+ function gt(n) {
20
+ var i;
21
+ if (!(n != null && n.length)) return 0;
22
+ let l = 0;
23
+ for (const r of n) {
24
+ const u = r.key != null ? String(r.key) : "";
25
+ if (u && yt(u)) continue;
26
+ if ((i = r.children) != null && i.length) {
27
+ l += gt(r.children);
28
+ continue;
29
+ }
30
+ const s = r.width;
31
+ typeof s == "number" && Number.isFinite(s) && s > 0 ? l += s : l += Ct;
32
+ }
33
+ return l;
34
+ }
35
+ function Qt(n, l) {
36
+ return n.key != null && String(n.key) !== "" ? String(n.key) : n.dataIndex != null ? Array.isArray(n.dataIndex) ? n.dataIndex.join(".") : String(n.dataIndex) : `__col_${l}`;
37
+ }
38
+ function Vt(n, l, i) {
39
+ if (typeof i == "function") return String(i(n, l));
40
+ if (typeof i == "string" && i) {
41
+ const r = n[i];
42
+ if (r != null && r !== "") return String(r);
43
+ }
44
+ return String(l);
45
+ }
46
+ function Lt(n, l, i, r = []) {
47
+ return n.map((u, s) => {
48
+ var W;
49
+ const L = Qt(u, s);
50
+ if (yt(L)) return u;
51
+ const h = i ? Gt(i, L) : L, a = [...r, h], F = /* @__PURE__ */ A("span", { className: g.headerTitleWithEye, children: [
52
+ /* @__PURE__ */ d("span", { className: g.headerTitleText, children: u.title }),
53
+ /* @__PURE__ */ d(pt, { title: "隐藏此列", children: /* @__PURE__ */ d(
54
+ "button",
55
+ {
56
+ type: "button",
57
+ className: g.headerEyeBtn,
58
+ "aria-label": "隐藏此列",
59
+ onClick: (v) => {
60
+ v.stopPropagation(), l(a);
61
+ },
62
+ children: /* @__PURE__ */ d(ht, { size: 12 })
63
+ }
64
+ ) })
65
+ ] });
66
+ return (W = u.children) != null && W.length ? {
67
+ ...u,
68
+ title: F,
69
+ children: Lt(
70
+ u.children,
71
+ l,
72
+ L,
73
+ a
74
+ )
75
+ } : { ...u, title: F };
76
+ });
77
+ }
78
+ function on({
79
+ className: n,
80
+ style: l,
81
+ scroll: i,
82
+ pagination: r,
83
+ locale: u,
84
+ columns: s,
85
+ dataSource: L,
86
+ rowKey: h,
87
+ tableName: a,
88
+ columnConfigEnabled: F,
89
+ fetchColumnConfig: W,
90
+ saveColumnConfig: v,
91
+ onColumnConfigChange: N,
92
+ fetchTablePrefs: k,
93
+ saveTablePrefs: G,
94
+ onTablePrefsChange: E,
95
+ rowConfigEnabled: _ = !1,
96
+ lockedRowKeys: m,
97
+ hiddenRowKeys: H,
98
+ onHiddenRowKeysChange: j,
99
+ rowHideSelectedKeys: P,
100
+ rowConfigToolbar: B,
101
+ rowSelection: f,
102
+ ...St
27
103
  }) {
28
- const o = C ?? !!t, L = P(r), [n, u] = T(null), [x, b] = T(!1), [g, d] = T(!o);
29
- _(() => {
30
- L.current = r;
31
- }, [r]), _(() => {
32
- if (!o || !t || !c) {
33
- d(!0);
104
+ var lt;
105
+ const x = F ?? !!a, X = Nt(s), [c, $] = U(null), [Z, Wt] = U(!1), [R, Y] = U(!x), [K, _t] = U([]);
106
+ ot(() => {
107
+ X.current = s;
108
+ }, [s]), ot(() => {
109
+ if (!x || !a || !(k || W)) {
110
+ Y(!0);
34
111
  return;
35
112
  }
36
- let e = !1;
37
- return d(!1), c(t).then((a) => {
38
- e || u(a != null && a.length ? a : null);
39
- }).catch(() => {
40
- e || u(null);
41
- }).finally(() => {
42
- e || d(!0);
43
- }), () => {
44
- e = !0;
113
+ let t = !1;
114
+ return Y(!1), (async () => {
115
+ var p;
116
+ try {
117
+ if (k) {
118
+ const o = await k(a);
119
+ t || $((p = o == null ? void 0 : o.columns) != null && p.length ? o : null);
120
+ } else if (W) {
121
+ const o = await W(a);
122
+ t || $(o != null && o.length ? Pt(o) : null);
123
+ }
124
+ } catch {
125
+ t || $(null);
126
+ } finally {
127
+ t || Y(!0);
128
+ }
129
+ })(), () => {
130
+ t = !0;
45
131
  };
46
- }, [o, t, c]);
47
- const p = y(() => {
48
- const e = r || [];
49
- return o ? G(e, n) : e;
50
- }, [r, o, n]), I = y(
51
- () => U(
52
- L.current || r
132
+ }, [x, a, k, W]);
133
+ const D = (lt = c == null ? void 0 : c.columns) != null && lt.length ? c.columns : null, S = y(() => H !== void 0 ? V(H, m) : V(K, m), [H, K, m]), b = O(
134
+ (t) => {
135
+ const e = V(t, m);
136
+ H === void 0 && _t(e), j == null || j(e);
137
+ },
138
+ [H, m, j]
139
+ ), M = O(
140
+ async (t) => {
141
+ if ($(t), E == null || E(t), N == null || N(t.columns), a && G) {
142
+ await G(a, t);
143
+ return;
144
+ }
145
+ a && v && await v(a, t.columns);
146
+ },
147
+ [a, G, v, E, N]
148
+ ), w = y(() => {
149
+ const t = s || [];
150
+ return x ? Bt(t, D) : t;
151
+ }, [s, x, D]), tt = y(
152
+ () => $t(
153
+ X.current || s
53
154
  ),
54
155
  // eslint-disable-next-line react-hooks/exhaustive-deps -- 随 columns 结构变
55
- [r]
56
- ), S = R(
57
- async (e) => {
58
- t && i && await i(t, e), u(e), l == null || l(e);
156
+ [s]
157
+ ), nt = O(
158
+ async (t) => {
159
+ await M(mt(c, { columns: t }));
59
160
  },
60
- [t, i, l]
61
- ), F = y(() => {
62
- if (!o || !g) return p;
63
- const e = {
64
- key: $,
65
- width: B,
66
- fixed: "right",
67
- align: "center",
68
- className: w.configCol,
69
- onHeaderCell: () => ({ className: w.configColHeader }),
70
- title: /* @__PURE__ */ m(
71
- D,
72
- {
73
- open: x,
74
- onOpenChange: b,
75
- defaultItems: I,
76
- savedConfig: n,
77
- onConfirm: S
78
- }
79
- ),
80
- render: () => null
81
- };
82
- return [...p, e];
161
+ [c, M]
162
+ ), et = O(
163
+ async (t) => {
164
+ var p;
165
+ if (!t.length) return;
166
+ const e = (p = c == null ? void 0 : c.columns) != null && p.length && c.columns.length ? c.columns : Dt(
167
+ X.current || s
168
+ );
169
+ await M(mt(c, { columns: Mt(e, t) }));
170
+ },
171
+ [c, s, M]
172
+ ), xt = O(() => {
173
+ const t = (P || []).map(String);
174
+ t.length && b([...S, ...t]);
175
+ }, [P, S, b]), Ot = O(() => {
176
+ b([]);
177
+ }, [b]), rt = O(
178
+ (t) => {
179
+ const e = String(t);
180
+ e && ((m || []).map(String).includes(e) || b([...S, e]));
181
+ },
182
+ [m, S, b]
183
+ ), q = y(() => {
184
+ let t = w;
185
+ if (x && R) {
186
+ t = Lt(t, (p) => {
187
+ et(p);
188
+ });
189
+ const e = {
190
+ key: Ut,
191
+ width: I,
192
+ fixed: "right",
193
+ align: "center",
194
+ className: ft.configCol,
195
+ onHeaderCell: () => ({
196
+ className: ft.configColHeader,
197
+ style: {
198
+ width: I,
199
+ minWidth: I,
200
+ maxWidth: I
201
+ }
202
+ }),
203
+ onCell: () => ({
204
+ style: {
205
+ width: I,
206
+ minWidth: I,
207
+ maxWidth: I
208
+ }
209
+ }),
210
+ title: /* @__PURE__ */ d(
211
+ jt,
212
+ {
213
+ open: Z,
214
+ onOpenChange: Wt,
215
+ defaultItems: tt,
216
+ savedConfig: D,
217
+ onConfirm: nt
218
+ }
219
+ ),
220
+ render: () => null
221
+ };
222
+ t = [...t, e];
223
+ }
224
+ return t;
83
225
  }, [
84
- o,
85
- g,
86
- p,
87
226
  x,
88
- I,
89
- n,
90
- S
91
- ]), H = s === !1 ? !1 : {
227
+ R,
228
+ w,
229
+ Z,
230
+ tt,
231
+ D,
232
+ nt,
233
+ et
234
+ ]), It = y(() => _ ? Xt(L, S, typeof h == "function" || typeof h == "string" ? h : void 0, m) : L, [_, L, S, h, m]), bt = r === !1 ? !1 : {
92
235
  showSizeChanger: !0,
93
- showTotal: K,
94
- ...s && typeof s == "object" ? s : {}
95
- }, M = {
96
- emptyText: /* @__PURE__ */ m(z, { iconType: "simple", description: "暂无数据" }),
97
- ...h
98
- };
99
- return /* @__PURE__ */ m(
100
- j,
236
+ showTotal: Jt,
237
+ ...r && typeof r == "object" ? r : {}
238
+ }, vt = {
239
+ emptyText: /* @__PURE__ */ d(Yt, { iconType: "simple", description: "暂无数据" }),
240
+ ...u
241
+ }, C = y(() => new Set((m || []).map(String)), [m]), Ht = _ && (P || []).some((t) => {
242
+ const e = String(t);
243
+ return e && !C.has(e);
244
+ }), st = _ && S.length > 0, Tt = _ && B !== !1 ? /* @__PURE__ */ A(
245
+ kt,
101
246
  {
102
- className: k("marsun-table", v["marsun-table"], f),
103
- scroll: O === void 0 ? A : O,
104
- pagination: H,
105
- locale: M,
106
- columns: F,
107
- ...E
247
+ size: "small",
248
+ className: Q("marsun-table-row-config", g["marsun-table-row-config"]),
249
+ children: [
250
+ /* @__PURE__ */ d(dt, { size: "small", disabled: !Ht, onClick: xt, children: "隐藏选中行" }),
251
+ /* @__PURE__ */ A(dt, { size: "small", disabled: !st, onClick: Ot, children: [
252
+ "恢复隐藏行",
253
+ st ? `(${S.length})` : ""
254
+ ] })
255
+ ]
108
256
  }
109
- );
257
+ ) : null, it = B === !1 ? null : B !== void 0 ? B : Tt, T = y(() => {
258
+ if (!f || !_) return f;
259
+ const t = typeof f.columnWidth == "number" ? f.columnWidth : 48;
260
+ return {
261
+ ...f,
262
+ columnWidth: t + 20,
263
+ renderCell: (e, p, o, at) => {
264
+ var ut;
265
+ const At = ((ut = f.renderCell) == null ? void 0 : ut.call(f, e, p, o, at)) ?? at, ct = Vt(p, o, h), J = C.has(ct);
266
+ return /* @__PURE__ */ A("span", { className: g.rowSelectWithEye, children: [
267
+ At,
268
+ /* @__PURE__ */ d(pt, { title: J ? "主对标不可隐藏" : "隐藏此行", children: /* @__PURE__ */ d(
269
+ "button",
270
+ {
271
+ type: "button",
272
+ className: g.rowEyeBtn,
273
+ "aria-label": J ? "主对标不可隐藏" : "隐藏此行",
274
+ disabled: J,
275
+ onClick: (Ft) => {
276
+ Ft.stopPropagation(), rt(ct);
277
+ },
278
+ children: /* @__PURE__ */ d(ht, { size: 14 })
279
+ }
280
+ ) })
281
+ ] });
282
+ }
283
+ };
284
+ }, [f, _, h, C, rt]), z = y(() => {
285
+ const t = gt(q);
286
+ if (!t) return 0;
287
+ const e = T ? typeof T.columnWidth == "number" ? T.columnWidth : 48 : 0;
288
+ return t + e;
289
+ }, [q, T]), zt = y(() => {
290
+ const t = i === void 0 ? { ...qt } : { ...i };
291
+ return z > 0 ? { ...t, x: z } : t;
292
+ }, [i, z]);
293
+ return /* @__PURE__ */ A("div", { className: Q("marsun-table-shell", g["marsun-table-shell"]), children: [
294
+ it ? /* @__PURE__ */ d("div", { className: g["marsun-table-toolbar"], children: it }) : null,
295
+ /* @__PURE__ */ d(
296
+ Et,
297
+ {
298
+ className: Q("marsun-table", g["marsun-table"], n),
299
+ style: {
300
+ ...l,
301
+ ...z > 0 ? { "--marsun-table-scroll-x": `${z}px` } : null
302
+ },
303
+ scroll: zt,
304
+ pagination: bt,
305
+ locale: vt,
306
+ columns: q,
307
+ dataSource: It,
308
+ rowKey: h,
309
+ rowSelection: T,
310
+ ...St
311
+ }
312
+ )
313
+ ] });
110
314
  }
111
315
  export {
112
- $ as COLUMN_CONFIG_COL_KEY,
113
- G as applyColumnConfig,
114
- oe as columnsToConfig,
115
- ee as default
316
+ Ut as COLUMN_CONFIG_COL_KEY,
317
+ fn as FLEX_SPACER_COL_KEY,
318
+ Bt as applyColumnConfig,
319
+ Xt as applyHiddenRows,
320
+ Dt as columnsToConfig,
321
+ on as default,
322
+ Pt as emptyTablePrefs,
323
+ Mt as hideColumnAtPath,
324
+ yt as isInternalColumnKey,
325
+ mt as mergeTablePrefs,
326
+ V as normalizeHiddenRowKeys,
327
+ hn as parseTablePrefs,
328
+ yn as serializeTablePrefs
116
329
  };
117
330
  //# sourceMappingURL=Table.js.map