arthub-table 0.0.3

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 (123) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/LICENSE +21 -0
  3. package/README.md +257 -0
  4. package/dist/arthub-table.common.js +2 -0
  5. package/dist/arthub-table.common.js.map +1 -0
  6. package/dist/arthub-table.css +1 -0
  7. package/dist/arthub-table.umd.js +2 -0
  8. package/dist/arthub-table.umd.js.map +1 -0
  9. package/dist/arthub-table.umd.min.js +2 -0
  10. package/dist/arthub-table.umd.min.js.map +1 -0
  11. package/dist/demo.html +1 -0
  12. package/dist/img/ah-icon_audio_pause.55c06fbf.svg +3 -0
  13. package/dist/img/ah-icon_closeshape.82e52181.svg +3 -0
  14. package/dist/img/icon_attachment.724d33ba.svg +3 -0
  15. package/dist/img/icon_default.9ef1a394.svg +5 -0
  16. package/dist/img/icon_edit.9966e699.svg +3 -0
  17. package/dist/img/icon_error_dark.2a057cdd.svg +17 -0
  18. package/dist/img/icon_error_light.ac6763e9.svg +17 -0
  19. package/dist/img/icon_failure_dark.f68723a7.svg +25 -0
  20. package/dist/img/icon_failure_light.489a7167.svg +25 -0
  21. package/dist/img/icon_folder.ea3efcce.svg +11 -0
  22. package/dist/img/icon_netdisc.d8bbe2e0.svg +4 -0
  23. package/dist/img/icon_singlearrowright.6adcd336.svg +4 -0
  24. package/dist/img/icon_totalNum.23a86d16.svg +3 -0
  25. package/dist/img/icon_transform_dark.033764ea.svg +26 -0
  26. package/dist/img/icon_transform_light.fa9fbcbd.svg +26 -0
  27. package/dist/img/img_3d.39b27128.svg +14 -0
  28. package/dist/img/img_aep.a898e3e7.svg +8 -0
  29. package/dist/img/img_ai.61f08a0a.svg +8 -0
  30. package/dist/img/img_audio.e4ada65c.svg +5 -0
  31. package/dist/img/img_enf.ad88f95d.svg +28 -0
  32. package/dist/img/img_excel.56663d85.svg +30 -0
  33. package/dist/img/img_exe.5e3fc198.svg +27 -0
  34. package/dist/img/img_img.ac2e0d0c.svg +8 -0
  35. package/dist/img/img_mcp.393ef169.svg +28 -0
  36. package/dist/img/img_pdf.f4da9922.svg +7 -0
  37. package/dist/img/img_ppt.d172780f.svg +26 -0
  38. package/dist/img/img_pxcook.7e9fce57.svg +18 -0
  39. package/dist/img/img_rarzip7z.e3b1de82.svg +28 -0
  40. package/dist/img/img_sketch.d49a9bd4.svg +32 -0
  41. package/dist/img/img_video.b6ac6198.svg +7 -0
  42. package/dist/img/img_word.0c1d3c88.svg +31 -0
  43. package/dist/img/img_x2d.6acc94f6.svg +28 -0
  44. package/dist/img/img_xd.cc23d09a.svg +28 -0
  45. package/dist/img/matrix-icon_finish.617f5d3e.svg +3 -0
  46. package/dist/img/matrix-icon_inprogress.3781156a.svg +3 -0
  47. package/dist/img/matrix-icon_supervise.edae43f0.svg +3 -0
  48. package/dist/types/assets/icon/iconBase64.d.ts +3 -0
  49. package/dist/types/components/Icon/index.d.ts +2 -0
  50. package/dist/types/components/clickoutside.d.ts +3 -0
  51. package/dist/types/core/Body.d.ts +142 -0
  52. package/dist/types/core/Cell.d.ts +94 -0
  53. package/dist/types/core/Clipboard.d.ts +16 -0
  54. package/dist/types/core/ColumnHeader.d.ts +24 -0
  55. package/dist/types/core/Context.d.ts +24 -0
  56. package/dist/types/core/DataGrid.d.ts +749 -0
  57. package/dist/types/core/EdgeScroller.d.ts +75 -0
  58. package/dist/types/core/Editor.d.ts +33 -0
  59. package/dist/types/core/Events.d.ts +25 -0
  60. package/dist/types/core/Footer.d.ts +37 -0
  61. package/dist/types/core/GifAnimationManager.d.ts +69 -0
  62. package/dist/types/core/GifOverlay.d.ts +33 -0
  63. package/dist/types/core/GroupRow.d.ts +80 -0
  64. package/dist/types/core/Header.d.ts +40 -0
  65. package/dist/types/core/History.d.ts +27 -0
  66. package/dist/types/core/ImageManager.d.ts +94 -0
  67. package/dist/types/core/NestedGrid.d.ts +177 -0
  68. package/dist/types/core/Paint.d.ts +101 -0
  69. package/dist/types/core/PerformanceMonitor.d.ts +96 -0
  70. package/dist/types/core/Row.d.ts +31 -0
  71. package/dist/types/core/RowHeader.d.ts +22 -0
  72. package/dist/types/core/Scroller.d.ts +33 -0
  73. package/dist/types/core/Selector.d.ts +9 -0
  74. package/dist/types/core/StyleManager.d.ts +108 -0
  75. package/dist/types/core/Tooltip.d.ts +28 -0
  76. package/dist/types/core/Validator.d.ts +26 -0
  77. package/dist/types/core/config.d.ts +5 -0
  78. package/dist/types/core/constants.d.ts +39 -0
  79. package/dist/types/core/element.d.ts +36 -0
  80. package/dist/types/core/extension-type-mapping.d.ts +5 -0
  81. package/dist/types/core/footer/utils.d.ts +7 -0
  82. package/dist/types/core/types.d.ts +399 -0
  83. package/dist/types/core/util.d.ts +17 -0
  84. package/dist/types/core/viewers/BooleanViewer.d.ts +46 -0
  85. package/dist/types/core/viewers/DatetimeViewer.d.ts +33 -0
  86. package/dist/types/core/viewers/DeliverableReviewViewer.d.ts +87 -0
  87. package/dist/types/core/viewers/FileStorageSpecViewer.d.ts +37 -0
  88. package/dist/types/core/viewers/FileViewer.d.ts +118 -0
  89. package/dist/types/core/viewers/GroupHeaderViewer.d.ts +73 -0
  90. package/dist/types/core/viewers/HyperlinkTextViewer.d.ts +80 -0
  91. package/dist/types/core/viewers/ImageViewer.d.ts +31 -0
  92. package/dist/types/core/viewers/ItfsPathViewer.d.ts +58 -0
  93. package/dist/types/core/viewers/ModuleViewer.d.ts +53 -0
  94. package/dist/types/core/viewers/NestedGridViewer.d.ts +47 -0
  95. package/dist/types/core/viewers/PersonViewer.d.ts +61 -0
  96. package/dist/types/core/viewers/PivotViewer.d.ts +43 -0
  97. package/dist/types/core/viewers/PriorityTextViewer.d.ts +35 -0
  98. package/dist/types/core/viewers/ProgressViewer.d.ts +68 -0
  99. package/dist/types/core/viewers/PunchTimingViewer.d.ts +42 -0
  100. package/dist/types/core/viewers/PunchViewer.d.ts +116 -0
  101. package/dist/types/core/viewers/RichTextViewer.d.ts +83 -0
  102. package/dist/types/core/viewers/SelectViewer.d.ts +57 -0
  103. package/dist/types/core/viewers/SeparatorRowViewer.d.ts +25 -0
  104. package/dist/types/core/viewers/StatusTextViewer.d.ts +40 -0
  105. package/dist/types/core/viewers/StatusViewer.d.ts +53 -0
  106. package/dist/types/core/viewers/TableActionButtonViewer.d.ts +77 -0
  107. package/dist/types/core/viewers/TaskNodeViewer.d.ts +106 -0
  108. package/dist/types/core/viewers/TextViewer.d.ts +37 -0
  109. package/dist/types/core/viewers/TextViewerWithSwitcher.d.ts +112 -0
  110. package/dist/types/core/viewers/ThemeViewer.d.ts +36 -0
  111. package/dist/types/core/viewers/TreeDropdownViewer.d.ts +55 -0
  112. package/dist/types/core/viewers/UpstreamViewer.d.ts +79 -0
  113. package/dist/types/core/viewers/ViewerRegistry.d.ts +76 -0
  114. package/dist/types/core/viewers/WfStateViewer.d.ts +76 -0
  115. package/dist/types/core/viewers/WorkflowViewer.d.ts +37 -0
  116. package/dist/types/core/viewers/index.d.ts +114 -0
  117. package/dist/types/core/viewers/types.d.ts +1097 -0
  118. package/dist/types/index.d.ts +37 -0
  119. package/dist/types/testing/SnapshotManager.d.ts +55 -0
  120. package/dist/types/testing/TestHooks.d.ts +275 -0
  121. package/dist/types/testing/index.d.ts +3 -0
  122. package/dist/types/testing/installTestHooks.d.ts +16 -0
  123. package/package.json +126 -0
@@ -0,0 +1,112 @@
1
+ /**
2
+ * TextViewerWithSwitcher - Tree-structured text viewer with expand/collapse
3
+ * Displays task names with tree hierarchy, expand/collapse buttons,
4
+ * task icons, child count badges, and error/warning indicators
5
+ */
6
+ import type { CellViewer, ViewerRenderContext, TextViewerWithSwitcherData } from './types';
7
+ /**
8
+ * TextViewerWithSwitcher renders task names with tree hierarchy
9
+ * Supports expand/collapse, task icons, child count, error indicators
10
+ */
11
+ declare class TextViewerWithSwitcher implements CellViewer<TextViewerWithSwitcherData> {
12
+ readonly type = "text-with-switcher";
13
+ private imageManager;
14
+ private arrowImage;
15
+ private totalNumImage;
16
+ private loadingAngle;
17
+ private lastLayoutBounds;
18
+ constructor();
19
+ /**
20
+ * Preload SVG icons
21
+ */
22
+ private preloadIcons;
23
+ /**
24
+ * Main draw method
25
+ */
26
+ draw(context: ViewerRenderContext, data: TextViewerWithSwitcherData): void;
27
+ /**
28
+ * Draw tree indent lines
29
+ * Only draws vertical dashed lines for each indent level (no horizontal connectors).
30
+ * - isLastLeafArr[i] === true: ancestor at level i still has siblings -> full height line
31
+ * - isLastLeafArr[i] === false: ancestor at level i is the last child -> half height line (top to middle)
32
+ * @returns New X position
33
+ */
34
+ private drawIndentLines;
35
+ /**
36
+ * Draw expand/collapse arrow or loading indicator
37
+ * @returns New X position
38
+ */
39
+ private drawExpandArrow;
40
+ /**
41
+ * Draw loading spinner animation
42
+ */
43
+ private drawLoadingSpinner;
44
+ /**
45
+ * Draw vertical dashed line below the expand icon (when node is expanded)
46
+ * This connects the expand arrow to its child nodes below.
47
+ * Mirrors DOM's .switch-icon-down-expand-line behavior.
48
+ */
49
+ private drawExpandDownLine;
50
+ /**
51
+ * Draw fallback triangle arrow (when SVG fails to load)
52
+ */
53
+ private drawFallbackArrow;
54
+ /**
55
+ * Draw task icon and optional link icon
56
+ * @returns New X position
57
+ */
58
+ private drawIcon;
59
+ /**
60
+ * Draw task name text with truncation, strikethrough, weaken, and markdown link support
61
+ * @returns New X position after text
62
+ */
63
+ private drawText;
64
+ /**
65
+ * Calculate right reserved width for totalNum, downstream, and error icons
66
+ */
67
+ private calcRightReservedWidth;
68
+ /**
69
+ * Draw right area: totalNum icon, downstream indicator, error/warning icon
70
+ */
71
+ private drawRightArea;
72
+ /**
73
+ * Draw totalNum icon and count
74
+ * @returns New right X position (moving leftward)
75
+ */
76
+ private drawTotalNum;
77
+ /**
78
+ * Draw downstream node indicator
79
+ * @returns New right X position (moving leftward)
80
+ */
81
+ private drawDownstreamIcon;
82
+ /**
83
+ * Draw error or warning icon
84
+ * @returns New right X position (moving leftward)
85
+ */
86
+ private drawErrorIcon;
87
+ /**
88
+ * Get display text from data
89
+ */
90
+ private getDisplayText;
91
+ /**
92
+ * Extract plain text from HTML/rich text
93
+ */
94
+ private extractPlainText;
95
+ /**
96
+ * Truncate text with ellipsis if exceeds max width
97
+ */
98
+ private truncateText;
99
+ /**
100
+ * Calculate layout bounds for a given data set (used by onClick/getInteractiveCursor)
101
+ */
102
+ private calcLayoutBounds;
103
+ /**
104
+ * Handle click events on the cell
105
+ */
106
+ onClick(context: ViewerRenderContext, data: TextViewerWithSwitcherData, localX: number, _localY: number): boolean;
107
+ /**
108
+ * Get interactive cursor for hover areas
109
+ */
110
+ getInteractiveCursor(context: ViewerRenderContext, data: TextViewerWithSwitcherData, localX: number, _localY: number): string | null;
111
+ }
112
+ export default TextViewerWithSwitcher;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * ThemeViewer - 主题文本渲染 viewer
3
+ * 用于展示主题标签(图标 + 主题名称 + 后缀),如 [🎨] 主题A 等2个
4
+ * 参考 AssetMatrix/src/views/components/ProgressPanel/ProgressPropsViewer/themeViewer.ts
5
+ */
6
+ import type { CellViewer, ViewerRenderContext, ThemeViewerData } from './types';
7
+ /**
8
+ * ThemeViewer 在单元格中渲染主题标签
9
+ * 展示形如 [图标] 主题名称 等N个 的内容
10
+ */
11
+ declare class ThemeViewer implements CellViewer<ThemeViewerData> {
12
+ readonly type = "theme";
13
+ /** 空值占位符 */
14
+ private readonly emptyValue;
15
+ /**
16
+ * 绘制主题内容
17
+ */
18
+ draw(context: ViewerRenderContext, data: ThemeViewerData): void;
19
+ /**
20
+ * 绘制主题内容(图标 + 名称 + 后缀)
21
+ */
22
+ private drawThemeContent;
23
+ /**
24
+ * 绘制主题图标(皮肤/调色板图标)
25
+ */
26
+ private drawThemeIcon;
27
+ /**
28
+ * 绘制空值占位文本
29
+ */
30
+ private drawEmptyText;
31
+ /**
32
+ * 截断文本并添加省略号
33
+ */
34
+ private truncateText;
35
+ }
36
+ export default ThemeViewer;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * TreeDropdownViewer - 树形下拉选择渲染 Viewer
3
+ * 将树形选中的路径值渲染为面包屑风格的标签
4
+ * 超出单元格宽度时文本截断打点显示
5
+ */
6
+ import type { CellViewer, ViewerRenderContext, TreeDropdownViewerData } from './types';
7
+ /**
8
+ * TreeDropdownViewer 渲染树形下拉选择结果
9
+ * 支持多选路径标签展示,如 "第二层"、"第二层/1"、"第二层/1/2"
10
+ * 超出单元格宽度时标签文本截断打点
11
+ */
12
+ declare class TreeDropdownViewer implements CellViewer<TreeDropdownViewerData> {
13
+ readonly type = "tree-dropdown";
14
+ /**
15
+ * Draw tree dropdown content in the cell
16
+ */
17
+ draw(context: ViewerRenderContext, data: TreeDropdownViewerData): void;
18
+ /**
19
+ * 根据 data 解析出需要展示的路径标签列表
20
+ */
21
+ private getPathLabels;
22
+ /**
23
+ * 获取路径的最后一段
24
+ */
25
+ private getLastSegment;
26
+ /**
27
+ * 绘制空状态
28
+ */
29
+ private drawEmptyState;
30
+ /**
31
+ * 绘制路径标签列表(标签紧凑左对齐,空间不足时等比缩小并截断打点)
32
+ */
33
+ private drawPathTags;
34
+ /**
35
+ * 计算标签宽度
36
+ */
37
+ private calculateTagWidth;
38
+ /**
39
+ * 绘制单个路径标签
40
+ */
41
+ private drawPathTag;
42
+ /**
43
+ * 绘制圆角矩形(填充)
44
+ */
45
+ private drawRoundedRect;
46
+ /**
47
+ * 绘制圆角矩形边框
48
+ */
49
+ private drawRoundedRectBorder;
50
+ /**
51
+ * 文本截断,超出宽度显示省略号,至少保留一个可见字符
52
+ */
53
+ private truncateText;
54
+ }
55
+ export default TreeDropdownViewer;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * UpstreamViewer - Upstream dependency status rendering viewer
3
+ * Displays upstream field view items with module tags, completion status,
4
+ * resource preview thumbnails, and reminder indicators.
5
+ *
6
+ * Layout per item: [ModuleTag] [DoneIcon + StatusText] [PreviewImages...]
7
+ * [ModuleTag] [ReminderTag]
8
+ * Empty state: "-"
9
+ */
10
+ import type { CellViewer, ViewerRenderContext, UpstreamViewerData } from './types';
11
+ declare class UpstreamViewer implements CellViewer<UpstreamViewerData> {
12
+ readonly type = "upstream";
13
+ private imageManager;
14
+ private failedImages;
15
+ private pendingLoads;
16
+ constructor();
17
+ /**
18
+ * Draw upstream cell content
19
+ */
20
+ draw(context: ViewerRenderContext, data: UpstreamViewerData): void;
21
+ /**
22
+ * Handle click events — detect clicks on preview images
23
+ */
24
+ onClick(context: ViewerRenderContext, data: UpstreamViewerData, localX: number, localY: number): boolean;
25
+ /**
26
+ * Get interactive cursor for preview images
27
+ */
28
+ getInteractiveCursor(context: ViewerRenderContext, data: UpstreamViewerData, localX: number, localY: number): string | null;
29
+ /**
30
+ * Draw empty state placeholder
31
+ */
32
+ private drawEmpty;
33
+ /**
34
+ * Draw module tag with background color
35
+ * @returns tag width drawn
36
+ */
37
+ private drawModuleTag;
38
+ /**
39
+ * Draw reminder tag for incomplete items
40
+ * @returns tag width drawn
41
+ */
42
+ private drawReminderTag;
43
+ /**
44
+ * Draw done status: checkmark icon + status text + preview images
45
+ * @returns new currentX after drawing
46
+ */
47
+ private drawDoneStatus;
48
+ /**
49
+ * Draw preview images for sync properties
50
+ * @returns new currentX after drawing
51
+ */
52
+ private drawPreviewImages;
53
+ /**
54
+ * Draw a single preview image with rounded corners
55
+ */
56
+ private drawPreviewImage;
57
+ /**
58
+ * Draw an SVG icon (for fallback / file type icons)
59
+ */
60
+ private drawSvgIcon;
61
+ /**
62
+ * Draw a checkmark icon
63
+ */
64
+ private drawCheckmark;
65
+ /**
66
+ * Calculate clickable areas for preview images
67
+ * Returns array of {x, y, width, height, imageUrl, assetId, index} in cell-local coords
68
+ */
69
+ private calculateClickAreas;
70
+ /**
71
+ * Draw a rounded rectangle
72
+ */
73
+ private drawRoundRect;
74
+ /**
75
+ * Clip to rounded rectangle path
76
+ */
77
+ private clipRoundRect;
78
+ }
79
+ export default UpstreamViewer;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * ViewerRegistry - Central registry for cell viewers
3
+ * Manages viewer registration and retrieval with fallback support
4
+ */
5
+ import type { CellViewer, CellViewerData, ViewerConstructor, ViewerFactory } from './types';
6
+ /**
7
+ * Central registry for cell viewers
8
+ * Uses singleton pattern to ensure consistent viewer management
9
+ */
10
+ declare class ViewerRegistry {
11
+ private static instance;
12
+ /** Map of viewer type to viewer instance */
13
+ private viewers;
14
+ /** Default viewer type for fallback */
15
+ private defaultViewerType;
16
+ /** Whether the registry has been initialized */
17
+ private initialized;
18
+ /** Track warned types to avoid repeated console.warn */
19
+ private warnedTypes;
20
+ private constructor();
21
+ /**
22
+ * Get the singleton instance of ViewerRegistry
23
+ */
24
+ static getInstance(): ViewerRegistry;
25
+ /**
26
+ * Register a viewer for a specific type
27
+ * @param type Viewer type identifier
28
+ * @param viewer Viewer instance, constructor, or factory function
29
+ */
30
+ register<T extends CellViewerData>(type: string, viewer: CellViewer<T> | ViewerConstructor<T> | ViewerFactory<T>): void;
31
+ /**
32
+ * Register multiple viewers at once
33
+ * @param viewers Object mapping types to viewers
34
+ */
35
+ registerAll(viewers: Record<string, CellViewer<any> | ViewerConstructor<any> | ViewerFactory<any>>): void;
36
+ /**
37
+ * Get a viewer by type
38
+ * Falls back to default viewer if type is not found
39
+ * @param type Viewer type identifier
40
+ * @returns Viewer instance
41
+ */
42
+ get<T extends CellViewerData = CellViewerData>(type: string): CellViewer<T> | null;
43
+ /**
44
+ * Check if a viewer type is registered
45
+ * @param type Viewer type identifier
46
+ */
47
+ has(type: string): boolean;
48
+ /**
49
+ * Get all registered viewer types
50
+ */
51
+ getRegisteredTypes(): string[];
52
+ /**
53
+ * Set the default viewer type for fallback
54
+ * @param type Viewer type identifier
55
+ */
56
+ setDefaultViewerType(type: string): void;
57
+ /**
58
+ * Get the default viewer type
59
+ */
60
+ getDefaultViewerType(): string;
61
+ /**
62
+ * Unregister a viewer
63
+ * @param type Viewer type identifier
64
+ */
65
+ unregister(type: string): boolean;
66
+ /**
67
+ * Clear all registered viewers
68
+ */
69
+ clear(): void;
70
+ /**
71
+ * Get viewer count
72
+ */
73
+ get size(): number;
74
+ }
75
+ export declare const getViewerRegistry: () => ViewerRegistry;
76
+ export default ViewerRegistry;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * WfStateViewer - 工作流状态 Viewer
3
+ * 在 canvas 单元格中渲染工作流状态图标、名称文字、以及右上角的角标
4
+ */
5
+ import type { CellViewer, ViewerRenderContext, WfStateViewerData } from './types';
6
+ declare class WfStateViewer implements CellViewer<WfStateViewerData> {
7
+ readonly type = "wf-state";
8
+ private imageManager;
9
+ /** 记录加载失败的图标 URL,避免反复重试 */
10
+ private failedIcons;
11
+ constructor();
12
+ /**
13
+ * 绘制单元格内容
14
+ */
15
+ draw(context: ViewerRenderContext, data: WfStateViewerData): void;
16
+ /**
17
+ * 处理点击事件
18
+ */
19
+ onClick(context: ViewerRenderContext, data: WfStateViewerData, localX: number, localY: number): boolean;
20
+ /**
21
+ * 获取交互光标
22
+ */
23
+ getInteractiveCursor(context: ViewerRenderContext, data: WfStateViewerData, localX: number, localY: number): string | null;
24
+ /**
25
+ * 从 value 中提取状态类型
26
+ */
27
+ private parseValue;
28
+ /**
29
+ * 根据图标名称绘制对应 SVG 图标
30
+ * icon 值为 stateIcon 目录下的文件名(不含 .svg 后缀),未找到则兜底使用 ah-icon_supervise
31
+ */
32
+ private drawIcon;
33
+ /**
34
+ * 通用 SVG 图标绘制方法
35
+ * 通过 ImageManager 加载 SVG 图片并绘制到 Canvas 上
36
+ */
37
+ private drawSvgIcon;
38
+ /**
39
+ * 使用离屏 Canvas 对图片进行着色绘制
40
+ * 原理:先在离屏 Canvas 上绘制原图,再用 'source-in' 合成模式覆盖指定颜色
41
+ */
42
+ private drawTintedImage;
43
+ /**
44
+ * 绘制文字,支持截断省略
45
+ */
46
+ private drawText;
47
+ /**
48
+ * 绘制占位符文本
49
+ */
50
+ private drawPlaceholder;
51
+ /**
52
+ * 绘制角标(右上角三角形)
53
+ */
54
+ private drawCorner;
55
+ /**
56
+ * 判断是否应该显示角标
57
+ */
58
+ private hasValidCorner;
59
+ /**
60
+ * 检查坐标是否在角标区域内
61
+ */
62
+ private isInCornerArea;
63
+ /**
64
+ * 从 context 中判断鼠标是否在角标区域(用于 hover 检测)
65
+ */
66
+ private isInCornerAreaFromContext;
67
+ /**
68
+ * 截断文字并添加省略号
69
+ */
70
+ private truncateText;
71
+ /**
72
+ * 估算文字宽度(用于交互区域判断,不依赖 ctx)
73
+ */
74
+ private estimateTextWidth;
75
+ }
76
+ export default WfStateViewer;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * WorkflowViewer - 工作流 Viewer
3
+ * 在 canvas 单元格中渲染工作流名称列表,支持悬停下划线和点击交互
4
+ */
5
+ import type { CellViewer, ViewerRenderContext, WorkflowViewerData } from './types';
6
+ declare class WorkflowViewer implements CellViewer<WorkflowViewerData> {
7
+ readonly type = "workflow";
8
+ /**
9
+ * 解析 value,返回过滤后的 string[]
10
+ */
11
+ private parseValue;
12
+ /**
13
+ * 绘制单元格内容
14
+ */
15
+ draw(context: ViewerRenderContext, data: WorkflowViewerData): void;
16
+ /**
17
+ * 处理点击事件
18
+ */
19
+ onClick(context: ViewerRenderContext, data: WorkflowViewerData, localX: number, localY: number): boolean;
20
+ /**
21
+ * 获取交互光标
22
+ */
23
+ getInteractiveCursor(context: ViewerRenderContext, data: WorkflowViewerData, localX: number, localY: number): string | null;
24
+ /**
25
+ * 绘制占位符文本
26
+ */
27
+ private drawPlaceholder;
28
+ /**
29
+ * 截断文字并添加省略号
30
+ */
31
+ private truncateText;
32
+ /**
33
+ * 估算文字宽度(用于交互区域判断,不依赖 ctx)
34
+ */
35
+ private estimateTextWidth;
36
+ }
37
+ export default WorkflowViewer;
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Canvas-Table Viewers
3
+ * Central export for all viewer types and utilities
4
+ */
5
+ export * from './types';
6
+ export { default as ViewerRegistry, getViewerRegistry } from './ViewerRegistry';
7
+ export { default as TextViewer } from './TextViewer';
8
+ export { default as SelectViewer } from './SelectViewer';
9
+ export { default as ImageViewer } from './ImageViewer';
10
+ export { default as PersonViewer } from './PersonViewer';
11
+ export { default as ProgressViewer } from './ProgressViewer';
12
+ export { default as DatetimeViewer } from './DatetimeViewer';
13
+ export { default as BooleanViewer } from './BooleanViewer';
14
+ export { default as StatusViewer } from './StatusViewer';
15
+ export { default as GroupHeaderViewer } from './GroupHeaderViewer';
16
+ export { default as SeparatorRowViewer } from './SeparatorRowViewer';
17
+ export { default as NestedGridViewer } from './NestedGridViewer';
18
+ export { default as TreeDropdownViewer } from './TreeDropdownViewer';
19
+ export { default as PunchViewer } from './PunchViewer';
20
+ export { default as HyperlinkTextViewer } from './HyperlinkTextViewer';
21
+ export { default as FileViewer } from './FileViewer';
22
+ export { default as TaskNodeViewer } from './TaskNodeViewer';
23
+ export { default as WfStateViewer } from './WfStateViewer';
24
+ export { default as WorkflowViewer } from './WorkflowViewer';
25
+ export { default as FileStorageSpecViewer } from './FileStorageSpecViewer';
26
+ export { default as PivotViewer } from './PivotViewer';
27
+ export { default as ModuleViewer } from './ModuleViewer';
28
+ export { default as TextViewerWithSwitcher } from './TextViewerWithSwitcher';
29
+ export { default as UpstreamViewer } from './UpstreamViewer';
30
+ export { default as PunchTimingViewer } from './PunchTimingViewer';
31
+ export { TableActionButtonViewer } from './TableActionButtonViewer';
32
+ export { default as PriorityTextViewer } from './PriorityTextViewer';
33
+ export { default as StatusTextViewer } from './StatusTextViewer';
34
+ export { default as ThemeViewer } from './ThemeViewer';
35
+ export { default as ItfsPathViewer } from './ItfsPathViewer';
36
+ export { default as DeliverableReviewViewer } from './DeliverableReviewViewer';
37
+ export { default as RichTextViewer } from './RichTextViewer';
38
+ import TextViewer from './TextViewer';
39
+ import SelectViewer from './SelectViewer';
40
+ import ImageViewer from './ImageViewer';
41
+ import PersonViewer from './PersonViewer';
42
+ import ProgressViewer from './ProgressViewer';
43
+ import DatetimeViewer from './DatetimeViewer';
44
+ import BooleanViewer from './BooleanViewer';
45
+ import StatusViewer from './StatusViewer';
46
+ import GroupHeaderViewer from './GroupHeaderViewer';
47
+ import SeparatorRowViewer from './SeparatorRowViewer';
48
+ import NestedGridViewer from './NestedGridViewer';
49
+ import TreeDropdownViewer from './TreeDropdownViewer';
50
+ import PunchViewer from './PunchViewer';
51
+ import HyperlinkTextViewer from './HyperlinkTextViewer';
52
+ import FileViewer from './FileViewer';
53
+ import TaskNodeViewer from './TaskNodeViewer';
54
+ import WfStateViewer from './WfStateViewer';
55
+ import WorkflowViewer from './WorkflowViewer';
56
+ import FileStorageSpecViewer from './FileStorageSpecViewer';
57
+ import PivotViewer from './PivotViewer';
58
+ import ModuleViewer from './ModuleViewer';
59
+ import TextViewerWithSwitcher from './TextViewerWithSwitcher';
60
+ import UpstreamViewer from './UpstreamViewer';
61
+ import PunchTimingViewer from './PunchTimingViewer';
62
+ import { TableActionButtonViewer } from './TableActionButtonViewer';
63
+ import PriorityTextViewer from './PriorityTextViewer';
64
+ import StatusTextViewer from './StatusTextViewer';
65
+ import ThemeViewer from './ThemeViewer';
66
+ import ItfsPathViewer from './ItfsPathViewer';
67
+ import DeliverableReviewViewer from './DeliverableReviewViewer';
68
+ import RichTextViewer from './RichTextViewer';
69
+ /**
70
+ * Register all default viewers
71
+ * Call this function once during application initialization
72
+ */
73
+ export declare function registerDefaultViewers(): void;
74
+ /**
75
+ * Default viewer map for quick access
76
+ */
77
+ export declare const defaultViewers: {
78
+ text: typeof TextViewer;
79
+ number: typeof TextViewer;
80
+ select: typeof SelectViewer;
81
+ image: typeof ImageViewer;
82
+ person: typeof PersonViewer;
83
+ progress: typeof ProgressViewer;
84
+ datetime: typeof DatetimeViewer;
85
+ date: typeof DatetimeViewer;
86
+ time: typeof DatetimeViewer;
87
+ month: typeof DatetimeViewer;
88
+ boolean: typeof BooleanViewer;
89
+ checkbox: typeof BooleanViewer;
90
+ status: typeof StatusViewer;
91
+ 'group-header': typeof GroupHeaderViewer;
92
+ 'separator-row': typeof SeparatorRowViewer;
93
+ nested: typeof NestedGridViewer;
94
+ 'tree-dropdown': typeof TreeDropdownViewer;
95
+ punch: typeof PunchViewer;
96
+ hyperlink: typeof HyperlinkTextViewer;
97
+ file: typeof FileViewer;
98
+ 'task-node': typeof TaskNodeViewer;
99
+ 'wf-state': typeof WfStateViewer;
100
+ workflow: typeof WorkflowViewer;
101
+ 'file-storage-spec': typeof FileStorageSpecViewer;
102
+ pivot: typeof PivotViewer;
103
+ module: typeof ModuleViewer;
104
+ 'text-with-switcher': typeof TextViewerWithSwitcher;
105
+ upstream: typeof UpstreamViewer;
106
+ 'punch-timing': typeof PunchTimingViewer;
107
+ 'table-action-button': typeof TableActionButtonViewer;
108
+ 'priority-text': typeof PriorityTextViewer;
109
+ 'status-text': typeof StatusTextViewer;
110
+ theme: typeof ThemeViewer;
111
+ 'itfs-path': typeof ItfsPathViewer;
112
+ 'deliverable-review': typeof DeliverableReviewViewer;
113
+ 'rich-text': typeof RichTextViewer;
114
+ };