@ai-table/grid 0.0.73 → 0.1.1

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 (234) hide show
  1. package/angular-konva/components/container.component.d.ts.map +1 -1
  2. package/angular-konva/components/shape.component.d.ts.map +1 -1
  3. package/angular-konva/components/stage.component.d.ts.map +1 -1
  4. package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
  5. package/components/cell-editors/date/date-editor.component.d.ts.map +1 -1
  6. package/components/cell-editors/link/edit-link/edit-link.component.d.ts.map +1 -1
  7. package/components/cell-editors/link/link-editor.component.d.ts.map +1 -1
  8. package/components/cell-editors/number/number-editor.component.d.ts.map +1 -1
  9. package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
  10. package/components/cell-editors/text/text-editor.component.d.ts.map +1 -1
  11. package/components/cell-views/select/option.component.d.ts.map +1 -1
  12. package/components/context-menu/context-menu.component.d.ts.map +1 -1
  13. package/components/drag/drag.component.d.ts.map +1 -1
  14. package/components/field-menu/field-menu.component.d.ts.map +1 -1
  15. package/components/field-setting/field-setting.component.d.ts.map +1 -1
  16. package/core/context.d.ts +2 -0
  17. package/core/context.d.ts.map +1 -1
  18. package/core/types/ai-table.d.ts.map +1 -1
  19. package/core/utils/field.d.ts.map +1 -1
  20. package/core/utils/queries.d.ts.map +1 -1
  21. package/core/utils/short-id.d.ts.map +1 -1
  22. package/dom-grid.component.d.ts.map +1 -1
  23. package/fesm2022/ai-table-grid.mjs +347 -317
  24. package/fesm2022/ai-table-grid.mjs.map +1 -1
  25. package/grid-base.component.d.ts +3 -1
  26. package/grid-base.component.d.ts.map +1 -1
  27. package/grid.component.d.ts +1 -1
  28. package/grid.component.d.ts.map +1 -1
  29. package/package.json +3 -5
  30. package/pipes/grid.pipe.d.ts.map +1 -1
  31. package/renderer/components/action-icon.component.d.ts.map +1 -1
  32. package/renderer/components/add-field-column.component.d.ts.map +1 -1
  33. package/renderer/components/cells/attachment.component.d.ts.map +1 -1
  34. package/renderer/components/cells/link.component.d.ts.map +1 -1
  35. package/renderer/components/cells/progress.component.d.ts.map +1 -1
  36. package/renderer/components/cells/rate.component.d.ts.map +1 -1
  37. package/renderer/components/cells/rich-text.component.d.ts.map +1 -1
  38. package/renderer/components/cells.component.d.ts.map +1 -1
  39. package/renderer/components/field-head.component.d.ts +2 -2
  40. package/renderer/components/field-head.component.d.ts.map +1 -1
  41. package/renderer/components/field-icon.component.d.ts.map +1 -1
  42. package/renderer/components/frozen-cells.component.d.ts.map +1 -1
  43. package/renderer/components/frozen-heads.component.d.ts +1 -1
  44. package/renderer/components/frozen-heads.component.d.ts.map +1 -1
  45. package/renderer/components/frozen-placeholder-cells.component.d.ts.map +1 -1
  46. package/renderer/components/heads.component.d.ts +1 -1
  47. package/renderer/components/heads.component.d.ts.map +1 -1
  48. package/renderer/components/hover-cell.component.d.ts.map +1 -1
  49. package/renderer/components/hover-row-heads.component.d.ts.map +1 -1
  50. package/renderer/components/icon.component.d.ts.map +1 -1
  51. package/renderer/components/other-rows.component.d.ts.map +1 -1
  52. package/renderer/components/placeholder-cells.component.d.ts.map +1 -1
  53. package/renderer/components/text.component.d.ts.map +1 -1
  54. package/renderer/creations/create-active-cell-border.d.ts.map +1 -1
  55. package/renderer/creations/create-cells.d.ts.map +1 -1
  56. package/renderer/creations/create-heads.d.ts.map +1 -1
  57. package/renderer/drawers/add-row-layout-drawer.d.ts +1 -1
  58. package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -1
  59. package/renderer/drawers/cell-drawer.d.ts.map +1 -1
  60. package/renderer/drawers/drawer.d.ts +1 -1
  61. package/renderer/renderer.component.d.ts +7 -4
  62. package/renderer/renderer.component.d.ts.map +1 -1
  63. package/types/cell.d.ts +2 -0
  64. package/types/cell.d.ts.map +1 -1
  65. package/types/component-config.d.ts +2 -0
  66. package/types/component-config.d.ts.map +1 -1
  67. package/types/grid.d.ts +4 -0
  68. package/types/grid.d.ts.map +1 -1
  69. package/types/row.d.ts +1 -0
  70. package/types/row.d.ts.map +1 -1
  71. package/utils/build.d.ts.map +1 -1
  72. package/utils/clipboard/clipboard.d.ts.map +1 -1
  73. package/utils/clipboard/copy.d.ts.map +1 -1
  74. package/utils/clipboard/paste.d.ts +5 -1
  75. package/utils/clipboard/paste.d.ts.map +1 -1
  76. package/utils/common.d.ts.map +1 -1
  77. package/utils/field/model/date.d.ts.map +1 -1
  78. package/utils/field/model/link.d.ts.map +1 -1
  79. package/utils/field/model/progress.d.ts.map +1 -1
  80. package/utils/field/model/select.d.ts +4 -1
  81. package/utils/field/model/select.d.ts.map +1 -1
  82. package/utils/field/model/text.d.ts.map +1 -1
  83. package/utils/get-text-width.d.ts.map +1 -1
  84. package/utils/i18n.d.ts +2 -0
  85. package/utils/i18n.d.ts.map +1 -1
  86. package/utils/match-keywords.d.ts.map +1 -1
  87. package/utils/position.d.ts.map +1 -1
  88. package/utils/style.d.ts.map +1 -1
  89. package/utils/text-measure.d.ts.map +1 -1
  90. package/utils/visible-range.d.ts.map +1 -1
  91. package/esm2022/ai-table-grid.mjs +0 -5
  92. package/esm2022/angular-konva/components/container.component.mjs +0 -29
  93. package/esm2022/angular-konva/components/container.token.mjs +0 -3
  94. package/esm2022/angular-konva/components/index.mjs +0 -4
  95. package/esm2022/angular-konva/components/shape.component.mjs +0 -142
  96. package/esm2022/angular-konva/components/stage.component.mjs +0 -123
  97. package/esm2022/angular-konva/index.mjs +0 -5
  98. package/esm2022/angular-konva/interfaces/component.mjs +0 -4
  99. package/esm2022/angular-konva/interfaces/config.mjs +0 -2
  100. package/esm2022/angular-konva/interfaces/event-object.mjs +0 -2
  101. package/esm2022/angular-konva/interfaces/index.mjs +0 -5
  102. package/esm2022/angular-konva/interfaces/shape.mjs +0 -42
  103. package/esm2022/angular-konva/utils/apply-node-props.mjs +0 -67
  104. package/esm2022/angular-konva/utils/common.mjs +0 -48
  105. package/esm2022/angular-konva/utils/index.mjs +0 -5
  106. package/esm2022/angular-konva/utils/types.mjs +0 -2
  107. package/esm2022/angular-konva/utils/update-picture.mjs +0 -7
  108. package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +0 -56
  109. package/esm2022/components/cell-editors/date/date-editor.component.mjs +0 -87
  110. package/esm2022/components/cell-editors/link/edit-link/edit-link.component.mjs +0 -81
  111. package/esm2022/components/cell-editors/link/link-editor.component.mjs +0 -122
  112. package/esm2022/components/cell-editors/number/number-editor.component.mjs +0 -41
  113. package/esm2022/components/cell-editors/select/select-editor.component.mjs +0 -74
  114. package/esm2022/components/cell-editors/text/text-editor.component.mjs +0 -76
  115. package/esm2022/components/cell-views/select/option.component.mjs +0 -28
  116. package/esm2022/components/context-menu/context-menu.component.mjs +0 -42
  117. package/esm2022/components/drag/drag.component.mjs +0 -300
  118. package/esm2022/components/field-menu/field-menu.component.mjs +0 -47
  119. package/esm2022/components/field-setting/field-setting.component.mjs +0 -142
  120. package/esm2022/components/index.mjs +0 -10
  121. package/esm2022/constants/colors.mjs +0 -19
  122. package/esm2022/constants/editor.mjs +0 -11
  123. package/esm2022/constants/file-icon.mjs +0 -342
  124. package/esm2022/constants/grid.mjs +0 -35
  125. package/esm2022/constants/icon.mjs +0 -30
  126. package/esm2022/constants/index.mjs +0 -7
  127. package/esm2022/constants/table.mjs +0 -78
  128. package/esm2022/constants/text.mjs +0 -23
  129. package/esm2022/core/constants/field.mjs +0 -107
  130. package/esm2022/core/context.mjs +0 -29
  131. package/esm2022/core/coordinate.mjs +0 -222
  132. package/esm2022/core/index.mjs +0 -6
  133. package/esm2022/core/types/ai-table.mjs +0 -57
  134. package/esm2022/core/types/core.mjs +0 -2
  135. package/esm2022/core/types/index.mjs +0 -3
  136. package/esm2022/core/utils/common.mjs +0 -45
  137. package/esm2022/core/utils/field.mjs +0 -64
  138. package/esm2022/core/utils/id-creator.mjs +0 -21
  139. package/esm2022/core/utils/index.mjs +0 -5
  140. package/esm2022/core/utils/queries.mjs +0 -80
  141. package/esm2022/core/utils/short-id.mjs +0 -53
  142. package/esm2022/dom-grid.component.mjs +0 -80
  143. package/esm2022/grid-base.component.mjs +0 -145
  144. package/esm2022/grid.component.mjs +0 -649
  145. package/esm2022/index.mjs +0 -2
  146. package/esm2022/pipes/grid.pipe.mjs +0 -110
  147. package/esm2022/pipes/index.mjs +0 -2
  148. package/esm2022/public-api.mjs +0 -12
  149. package/esm2022/renderer/components/action-icon.component.mjs +0 -117
  150. package/esm2022/renderer/components/add-field-column.component.mjs +0 -88
  151. package/esm2022/renderer/components/cells/attachment.component.mjs +0 -107
  152. package/esm2022/renderer/components/cells/cells.mjs +0 -6
  153. package/esm2022/renderer/components/cells/index.mjs +0 -7
  154. package/esm2022/renderer/components/cells/link.component.mjs +0 -89
  155. package/esm2022/renderer/components/cells/progress.component.mjs +0 -268
  156. package/esm2022/renderer/components/cells/rate.component.mjs +0 -153
  157. package/esm2022/renderer/components/cells/rich-text.component.mjs +0 -95
  158. package/esm2022/renderer/components/cells.component.mjs +0 -35
  159. package/esm2022/renderer/components/field-head.component.mjs +0 -146
  160. package/esm2022/renderer/components/field-icon.component.mjs +0 -72
  161. package/esm2022/renderer/components/frozen-cells.component.mjs +0 -36
  162. package/esm2022/renderer/components/frozen-heads.component.mjs +0 -214
  163. package/esm2022/renderer/components/frozen-placeholder-cells.component.mjs +0 -38
  164. package/esm2022/renderer/components/heads.component.mjs +0 -38
  165. package/esm2022/renderer/components/hover-cell.component.mjs +0 -104
  166. package/esm2022/renderer/components/hover-row-heads.component.mjs +0 -132
  167. package/esm2022/renderer/components/icon.component.mjs +0 -84
  168. package/esm2022/renderer/components/index.mjs +0 -15
  169. package/esm2022/renderer/components/other-rows.component.mjs +0 -68
  170. package/esm2022/renderer/components/placeholder-cells.component.mjs +0 -33
  171. package/esm2022/renderer/components/text.component.mjs +0 -67
  172. package/esm2022/renderer/creations/create-active-cell-border.mjs +0 -70
  173. package/esm2022/renderer/creations/create-cells.mjs +0 -190
  174. package/esm2022/renderer/creations/create-heads.mjs +0 -51
  175. package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +0 -98
  176. package/esm2022/renderer/drawers/cell-drawer.mjs +0 -673
  177. package/esm2022/renderer/drawers/drawer.mjs +0 -947
  178. package/esm2022/renderer/drawers/layout-drawer.mjs +0 -64
  179. package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +0 -131
  180. package/esm2022/renderer/index.mjs +0 -4
  181. package/esm2022/renderer/interfaces/hover-cell.mjs +0 -4
  182. package/esm2022/renderer/interfaces/index.mjs +0 -2
  183. package/esm2022/renderer/renderer.component.mjs +0 -197
  184. package/esm2022/services/event.service.mjs +0 -241
  185. package/esm2022/services/field.service.mjs +0 -56
  186. package/esm2022/services/index.mjs +0 -4
  187. package/esm2022/services/selection.service.mjs +0 -151
  188. package/esm2022/types/avatar.mjs +0 -27
  189. package/esm2022/types/canvas.mjs +0 -2
  190. package/esm2022/types/cell.mjs +0 -2
  191. package/esm2022/types/clipboard.mjs +0 -2
  192. package/esm2022/types/component-config.mjs +0 -7
  193. package/esm2022/types/field.mjs +0 -2
  194. package/esm2022/types/grid.mjs +0 -17
  195. package/esm2022/types/index.mjs +0 -10
  196. package/esm2022/types/layout.mjs +0 -2
  197. package/esm2022/types/row.mjs +0 -6
  198. package/esm2022/utils/build.mjs +0 -39
  199. package/esm2022/utils/cell.mjs +0 -80
  200. package/esm2022/utils/clear-cells.mjs +0 -23
  201. package/esm2022/utils/clipboard/clipboard.mjs +0 -88
  202. package/esm2022/utils/clipboard/copy.mjs +0 -99
  203. package/esm2022/utils/clipboard/extract.mjs +0 -38
  204. package/esm2022/utils/clipboard/index.mjs +0 -5
  205. package/esm2022/utils/clipboard/paste.mjs +0 -188
  206. package/esm2022/utils/common.mjs +0 -50
  207. package/esm2022/utils/field/field-operable.mjs +0 -2
  208. package/esm2022/utils/field/field.mjs +0 -20
  209. package/esm2022/utils/field/index.mjs +0 -4
  210. package/esm2022/utils/field/model/attachment.mjs +0 -56
  211. package/esm2022/utils/field/model/date.mjs +0 -141
  212. package/esm2022/utils/field/model/index.mjs +0 -12
  213. package/esm2022/utils/field/model/link.mjs +0 -56
  214. package/esm2022/utils/field/model/member.mjs +0 -81
  215. package/esm2022/utils/field/model/number.mjs +0 -59
  216. package/esm2022/utils/field/model/progress.mjs +0 -69
  217. package/esm2022/utils/field/model/rate.mjs +0 -58
  218. package/esm2022/utils/field/model/rich-text.mjs +0 -39
  219. package/esm2022/utils/field/model/select.mjs +0 -131
  220. package/esm2022/utils/field/model/text.mjs +0 -32
  221. package/esm2022/utils/field/operate.mjs +0 -73
  222. package/esm2022/utils/file.mjs +0 -116
  223. package/esm2022/utils/get-placeholder-cells.mjs +0 -66
  224. package/esm2022/utils/get-text-width.mjs +0 -30
  225. package/esm2022/utils/hover-cell.mjs +0 -25
  226. package/esm2022/utils/i18n.mjs +0 -87
  227. package/esm2022/utils/image-cache.mjs +0 -57
  228. package/esm2022/utils/index.mjs +0 -19
  229. package/esm2022/utils/match-keywords.mjs +0 -15
  230. package/esm2022/utils/os.mjs +0 -16
  231. package/esm2022/utils/position.mjs +0 -48
  232. package/esm2022/utils/style.mjs +0 -37
  233. package/esm2022/utils/text-measure.mjs +0 -122
  234. package/esm2022/utils/visible-range.mjs +0 -42
@@ -1,190 +0,0 @@
1
- import { AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_OFFSET, AI_TABLE_ROW_ADD_BUTTON, DEFAULT_FONT_STYLE } from '../../constants';
2
- import { AITable, AITableQueries } from '../../core';
3
- import { AITableRowType } from '../../types';
4
- import { FieldModelMap, getCellHorizontalPosition, getHoverCell } from '../../utils';
5
- import { addRowLayout } from '../drawers/add-row-layout-drawer';
6
- import { cellDrawer } from '../drawers/cell-drawer';
7
- import { recordRowLayout } from '../drawers/record-row-layout-drawer';
8
- /**
9
- * 绘制单元格内容的函数
10
- * 利用 Canvas API 绘制每个单元格的背景颜色、文本以及其他可能的样式。这个函数通常用于自定义表格渲染,尤其是在处理大量数据时,通过直接操作 Canvas 来提高渲染性能
11
- * @param config
12
- */
13
- export const createCells = (config) => {
14
- const { aiTable, coordinate, references, ctx, rowStartIndex, rowStopIndex, columnStartIndex, columnStopIndex } = config;
15
- const context = aiTable.context;
16
- const { rowHeight, columnCount, rowCount } = coordinate;
17
- const colors = AITable.getColors();
18
- const visibleColumns = AITable.getVisibleFields(aiTable);
19
- // 初始化绘图上下文, 为后续的绘制操作做准备
20
- cellDrawer.initCtx(ctx);
21
- addRowLayout.initCtx(ctx);
22
- recordRowLayout.initCtx(ctx);
23
- const hoverCell = getHoverCell(aiTable);
24
- // 遍历列, 确定在哪些列上绘制单元格
25
- for (let columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {
26
- if (columnIndex > columnCount - 1)
27
- break;
28
- // 获取该列对应的 field,如果 field 不再展示范围,则跳过该列
29
- const field = visibleColumns[columnIndex];
30
- if (field == null)
31
- continue;
32
- // 获取该列对应的宽度
33
- const columnWidth = coordinate.getColumnWidth(columnIndex);
34
- const x = coordinate.getColumnOffset(columnIndex) + AI_TABLE_OFFSET;
35
- const isLastColumn = columnIndex === aiTable.gridData().fields?.length - 1;
36
- if (columnIndex === 1) {
37
- cellDrawer.initStyle(field, { fontWeight: DEFAULT_FONT_STYLE });
38
- }
39
- // 遍历行, 从 rowStartIndex 到 rowStopIndex 的所有行,决定将在哪些行上绘制单元格
40
- for (let rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {
41
- if (rowIndex > rowCount - 1)
42
- break;
43
- const row = context.linearRows()[rowIndex];
44
- const { _id: recordId, type } = row;
45
- const y = coordinate.getRowOffset(rowIndex) + AI_TABLE_OFFSET;
46
- const { rowIndex: pointRowIndex, targetName } = context.pointPosition();
47
- const isHover = pointRowIndex === rowIndex;
48
- switch (type) {
49
- case AITableRowType.add: {
50
- const isHoverRow = isHover && targetName === AI_TABLE_ROW_ADD_BUTTON;
51
- const isCheckedRow = aiTable.selection().selectedRecords.has(row._id);
52
- addRowLayout.init({
53
- x,
54
- y,
55
- rowIndex,
56
- columnIndex,
57
- columnWidth,
58
- rowHeight: AI_TABLE_FIELD_HEAD_HEIGHT,
59
- columnCount,
60
- containerWidth: coordinate.containerWidth,
61
- rowHeadWidth: context.rowHeadWidth(),
62
- hiddenIndexColumn: !!context.aiFieldConfig()?.hiddenIndexColumn
63
- });
64
- addRowLayout.render({
65
- isHoverRow,
66
- isCheckedRow
67
- });
68
- break;
69
- }
70
- case AITableRowType.record: {
71
- const fieldId = field._id;
72
- const cell = [recordId, fieldId];
73
- let background = getCellBackground(cell, isHover, targetName, aiTable);
74
- recordRowLayout.init({
75
- x,
76
- y,
77
- rowIndex,
78
- columnIndex,
79
- columnWidth,
80
- rowHeight,
81
- columnCount,
82
- containerWidth: coordinate.containerWidth,
83
- rowHeadWidth: context.rowHeadWidth(),
84
- hiddenIndexColumn: !!context.aiFieldConfig()?.hiddenIndexColumn
85
- });
86
- recordRowLayout.render({
87
- row,
88
- style: { fill: background },
89
- isHoverRow: isHoverRecord(isHover, targetName),
90
- isCheckedRow: isSelectedRecord(recordId, aiTable)
91
- });
92
- const { width, offset } = getCellHorizontalPosition({
93
- columnIndex,
94
- columnWidth,
95
- columnCount
96
- });
97
- const realX = x + offset + AI_TABLE_OFFSET;
98
- const realY = y + AI_TABLE_OFFSET;
99
- const style = { fontWeight: DEFAULT_FONT_STYLE };
100
- const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, fieldId]);
101
- const fieldModel = FieldModelMap[field.type];
102
- const transformValue = fieldModel.transformCellValue(cellValue, { aiTable, field });
103
- const render = {
104
- aiTable,
105
- x: realX,
106
- y: realY,
107
- columnWidth: width,
108
- rowHeight,
109
- recordId: recordId,
110
- field,
111
- cellValue,
112
- transformValue,
113
- references,
114
- isActive: isSelectedField(fieldId, aiTable),
115
- style,
116
- colors
117
- };
118
- // hover 组件渲染时,底层的 cell 渲染为空
119
- if (hoverCell && hoverCell.recordId === recordId && hoverCell.fieldId === fieldId) {
120
- render.cellValue = '';
121
- render.transformValue = '';
122
- }
123
- cellDrawer.initStyle(field, style);
124
- // 最后一列,且单元格内容存在,需要裁剪内容,以防止文本溢出单元格边界
125
- // 然后,根据计算好的样式和布局绘制单元格内容
126
- if (isLastColumn && cellValue != null) {
127
- ctx.save();
128
- ctx.rect(realX, realY, width, rowHeight);
129
- ctx.clip();
130
- cellDrawer.renderCell(render, ctx, columnWidth);
131
- ctx.restore();
132
- }
133
- else {
134
- cellDrawer.renderCell(render, ctx, columnWidth);
135
- }
136
- }
137
- }
138
- }
139
- }
140
- };
141
- const getCellBackground = (cell, isHover, targetName, aiTable) => {
142
- const colors = AITable.getColors();
143
- const [recordId, fieldId] = cell;
144
- let background = colors.white;
145
- const _isHoverRecord = isHoverRecord(isHover, targetName);
146
- const _isSelectedRecord = isSelectedRecord(recordId, aiTable);
147
- const _isSelectedField = isSelectedField(fieldId, aiTable);
148
- const _isSiblingCell = isSiblingCell(cell, aiTable);
149
- const _isActiveCell = isActiveCell(cell, aiTable);
150
- const _isSelectedCell = isSelectedCell(cell, aiTable);
151
- const _isKeywordsMatchedCell = isKeywordsMatchedCell(cell, aiTable);
152
- if (_isKeywordsMatchedCell) {
153
- background = colors.itemMatchBgColor;
154
- }
155
- else if (_isSelectedRecord || _isSelectedField || _isSiblingCell || (_isSelectedCell && !_isActiveCell)) {
156
- background = colors.itemActiveBgColor;
157
- }
158
- else if (_isHoverRecord && !_isActiveCell) {
159
- background = colors.gray80;
160
- }
161
- return background;
162
- };
163
- export const isActiveCell = (cell, aiTable) => {
164
- const [recordId, fieldId] = cell;
165
- const [activeRecordId, activeFieldId] = AITable.getActiveCell(aiTable) || [];
166
- return recordId === activeRecordId && fieldId === activeFieldId;
167
- };
168
- const isSiblingCell = (cell, aiTable) => {
169
- const [recordId, fieldId] = cell;
170
- const [activeRecordId, activeFieldId] = AITable.getActiveCell(aiTable) || [];
171
- return AITable.getActiveRecordIds(aiTable).length === 1 && recordId === activeRecordId && fieldId !== activeFieldId;
172
- };
173
- const isKeywordsMatchedCell = (cell, aiTable) => {
174
- const [recordId, fieldId] = cell;
175
- return aiTable.keywordsMatchedCells().has(`${recordId}:${fieldId}`);
176
- };
177
- const isSelectedCell = (cell, aiTable) => {
178
- const [recordId, fieldId] = cell;
179
- return aiTable.selection().selectedCells.has(`${recordId}:${fieldId}`);
180
- };
181
- export const isSelectedField = (fieldId, aiTable) => {
182
- return aiTable.selection().selectedFields.has(fieldId);
183
- };
184
- const isSelectedRecord = (recordId, aiTable) => {
185
- return aiTable.selection().selectedRecords.has(recordId);
186
- };
187
- const isHoverRecord = (isHover, targetName) => {
188
- return isHover && targetName !== AI_TABLE_FIELD_HEAD;
189
- };
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNlbGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvY3JlYXRpb25zL2NyZWF0ZS1jZWxscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUN0RSxPQUFPLEVBQTJDLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBZ0MsRUFBRSxFQUFFO0lBQzVELE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDeEgsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQTBCLENBQUM7SUFDbkQsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBVSxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsZ0JB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O0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQXlCLEVBQUUsT0FBZ0IsRUFBVyxFQUFFO0lBQ25GLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDeEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUF5QixFQUFFLE9BQWdCLEVBQVcsRUFBRTtJQUM1RSxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBZSxFQUFFLE9BQWdCLEVBQVcsRUFBRTtJQUMxRSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLE9BQWdCLEVBQVcsRUFBRTtJQUNyRSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxVQUFrQixFQUFXLEVBQUU7SUFDcEUsT0FBTyxPQUFPLElBQUksVUFBVSxLQUFLLG1CQUFtQixDQUFDO0FBQ3pELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJUmVjb3JkRmllbGRJZFBhdGggfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFELFxuICAgIEFJX1RBQkxFX0ZJRUxEX0hFQURfSEVJR0hULFxuICAgIEFJX1RBQkxFX09GRlNFVCxcbiAgICBBSV9UQUJMRV9ST1dfQUREX0JVVFRPTixcbiAgICBERUZBVUxUX0ZPTlRfU1RZTEVcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGUsIEFJVGFibGVRdWVyaWVzLCBSZW5kZXJlckNvbnRleHQgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVDZWxsc0RyYXdlckNvbmZpZywgQUlUYWJsZVJlbmRlciwgQUlUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGaWVsZE1vZGVsTWFwLCBnZXRDZWxsSG9yaXpvbnRhbFBvc2l0aW9uLCBnZXRIb3ZlckNlbGwgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBhZGRSb3dMYXlvdXQgfSBmcm9tICcuLi9kcmF3ZXJzL2FkZC1yb3ctbGF5b3V0LWRyYXdlcic7XG5pbXBvcnQgeyBjZWxsRHJhd2VyIH0gZnJvbSAnLi4vZHJhd2Vycy9jZWxsLWRyYXdlcic7XG5pbXBvcnQgeyByZWNvcmRSb3dMYXlvdXQgfSBmcm9tICcuLi9kcmF3ZXJzL3JlY29yZC1yb3ctbGF5b3V0LWRyYXdlcic7XG5cbi8qKlxuICog57uY5Yi25Y2V5YWD5qC85YaF5a6555qE5Ye95pWwXG4gKiDliKnnlKggQ2FudmFzIEFQSSDnu5jliLbmr4/kuKrljZXlhYPmoLznmoTog4zmma/popzoibLjgIHmlofmnKzku6Xlj4rlhbbku5blj6/og73nmoTmoLflvI/jgILov5nkuKrlh73mlbDpgJrluLjnlKjkuo7oh6rlrprkuYnooajmoLzmuLLmn5PvvIzlsKTlhbbmmK/lnKjlpITnkIblpKfph4/mlbDmja7ml7bvvIzpgJrov4fnm7TmjqXmk43kvZwgQ2FudmFzIOadpeaPkOmrmOa4suafk+aAp+iDvVxuICogQHBhcmFtIGNvbmZpZ1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQ2VsbHMgPSAoY29uZmlnOiBBSVRhYmxlQ2VsbHNEcmF3ZXJDb25maWcpID0+IHtcbiAgICBjb25zdCB7IGFpVGFibGUsIGNvb3JkaW5hdGUsIHJlZmVyZW5jZXMsIGN0eCwgcm93U3RhcnRJbmRleCwgcm93U3RvcEluZGV4LCBjb2x1bW5TdGFydEluZGV4LCBjb2x1bW5TdG9wSW5kZXggfSA9IGNvbmZpZztcbiAgICBjb25zdCBjb250ZXh0ID0gYWlUYWJsZS5jb250ZXh0IGFzIFJlbmRlcmVyQ29udGV4dDtcbiAgICBjb25zdCB7IHJvd0hlaWdodCwgY29sdW1uQ291bnQsIHJvd0NvdW50IH0gPSBjb29yZGluYXRlO1xuICAgIGNvbnN0IGNvbG9ycyA9IEFJVGFibGUuZ2V0Q29sb3JzKCk7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBBSVRhYmxlLmdldFZpc2libGVGaWVsZHMoYWlUYWJsZSk7XG5cbiAgICAvLyDliJ3lp4vljJbnu5jlm77kuIrkuIvmlocsIOS4uuWQjue7reeahOe7mOWItuaTjeS9nOWBmuWHhuWkh1xuICAgIGNlbGxEcmF3ZXIuaW5pdEN0eChjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcbiAgICBhZGRSb3dMYXlvdXQuaW5pdEN0eChjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcbiAgICByZWNvcmRSb3dMYXlvdXQuaW5pdEN0eChjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcblxuICAgIGNvbnN0IGhvdmVyQ2VsbCA9IGdldEhvdmVyQ2VsbChhaVRhYmxlKTtcblxuICAgIC8vIOmBjeWOhuWIlywg56Gu5a6a5Zyo5ZOq5Lqb5YiX5LiK57uY5Yi25Y2V5YWD5qC8XG4gICAgZm9yIChsZXQgY29sdW1uSW5kZXggPSBjb2x1bW5TdGFydEluZGV4OyBjb2x1bW5JbmRleCA8PSBjb2x1bW5TdG9wSW5kZXg7IGNvbHVtbkluZGV4KyspIHtcbiAgICAgICAgaWYgKGNvbHVtbkluZGV4ID4gY29sdW1uQ291bnQgLSAxKSBicmVhaztcblxuICAgICAgICAvLyDojrflj5bor6XliJflr7nlupTnmoQgZmllbGTvvIzlpoLmnpwgZmllbGQg5LiN5YaN5bGV56S66IyD5Zu077yM5YiZ6Lez6L+H6K+l5YiXXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdmlzaWJsZUNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICBpZiAoZmllbGQgPT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgICAgLy8g6I635Y+W6K+l5YiX5a+55bqU55qE5a695bqmXG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHggPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChjb2x1bW5JbmRleCkgKyBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgIGNvbnN0IGlzTGFzdENvbHVtbiA9IGNvbHVtbkluZGV4ID09PSBhaVRhYmxlLmdyaWREYXRhKCkuZmllbGRzPy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA9PT0gMSkge1xuICAgICAgICAgICAgY2VsbERyYXdlci5pbml0U3R5bGUoZmllbGQsIHsgZm9udFdlaWdodDogREVGQVVMVF9GT05UX1NUWUxFIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6YGN5Y6G6KGMLCDku44gcm93U3RhcnRJbmRleCDliLAgcm93U3RvcEluZGV4IOeahOaJgOacieihjO+8jOWGs+WumuWwhuWcqOWTquS6m+ihjOS4iue7mOWItuWNleWFg+agvFxuICAgICAgICBmb3IgKGxldCByb3dJbmRleCA9IHJvd1N0YXJ0SW5kZXg7IHJvd0luZGV4IDw9IHJvd1N0b3BJbmRleDsgcm93SW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKHJvd0luZGV4ID4gcm93Q291bnQgLSAxKSBicmVhaztcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IGNvbnRleHQubGluZWFyUm93cygpW3Jvd0luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHsgX2lkOiByZWNvcmRJZCwgdHlwZSB9ID0gcm93O1xuICAgICAgICAgICAgY29uc3QgeSA9IGNvb3JkaW5hdGUuZ2V0Um93T2Zmc2V0KHJvd0luZGV4KSArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgICAgIGNvbnN0IHsgcm93SW5kZXg6IHBvaW50Um93SW5kZXgsIHRhcmdldE5hbWUgfSA9IGNvbnRleHQucG9pbnRQb3NpdGlvbigpO1xuICAgICAgICAgICAgY29uc3QgaXNIb3ZlciA9IHBvaW50Um93SW5kZXggPT09IHJvd0luZGV4O1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEFJVGFibGVSb3dUeXBlLmFkZDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0hvdmVyUm93ID0gaXNIb3ZlciAmJiB0YXJnZXROYW1lID09PSBBSV9UQUJMRV9ST1dfQUREX0JVVFRPTjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDaGVja2VkUm93ID0gYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJlY29yZHMuaGFzKHJvdy5faWQpO1xuICAgICAgICAgICAgICAgICAgICBhZGRSb3dMYXlvdXQuaW5pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0hlaWdodDogQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBjb29yZGluYXRlLmNvbnRhaW5lcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93SGVhZFdpZHRoOiBjb250ZXh0LnJvd0hlYWRXaWR0aCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuSW5kZXhDb2x1bW46ICEhY29udGV4dC5haUZpZWxkQ29uZmlnKCk/LmhpZGRlbkluZGV4Q29sdW1uXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBhZGRSb3dMYXlvdXQucmVuZGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSG92ZXJSb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NoZWNrZWRSb3dcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFJVGFibGVSb3dUeXBlLnJlY29yZDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZElkID0gZmllbGQuX2lkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoID0gW3JlY29yZElkLCBmaWVsZElkXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJhY2tncm91bmQgPSBnZXRDZWxsQmFja2dyb3VuZChjZWxsLCBpc0hvdmVyLCB0YXJnZXROYW1lLCBhaVRhYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICByZWNvcmRSb3dMYXlvdXQuaW5pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyV2lkdGg6IGNvb3JkaW5hdGUuY29udGFpbmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dIZWFkV2lkdGg6IGNvbnRleHQucm93SGVhZFdpZHRoKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5JbmRleENvbHVtbjogISFjb250ZXh0LmFpRmllbGRDb25maWcoKT8uaGlkZGVuSW5kZXhDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFJvd0xheW91dC5yZW5kZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsgZmlsbDogYmFja2dyb3VuZCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3ZlclJvdzogaXNIb3ZlclJlY29yZChpc0hvdmVyLCB0YXJnZXROYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hlY2tlZFJvdzogaXNTZWxlY3RlZFJlY29yZChyZWNvcmRJZCwgYWlUYWJsZSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIG9mZnNldCB9ID0gZ2V0Q2VsbEhvcml6b250YWxQb3NpdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxYID0geCArIG9mZnNldCArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhbFkgPSB5ICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHlsZSA9IHsgZm9udFdlaWdodDogREVGQVVMVF9GT05UX1NUWUxFIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxWYWx1ZSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgW3JlY29yZElkLCBmaWVsZElkXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkTW9kZWwgPSBGaWVsZE1vZGVsTWFwW2ZpZWxkLnR5cGVdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1WYWx1ZSA9IGZpZWxkTW9kZWwudHJhbnNmb3JtQ2VsbFZhbHVlKGNlbGxWYWx1ZSwgeyBhaVRhYmxlLCBmaWVsZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHJlYWxYLFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogcmVhbFksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRJZDogcmVjb3JkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBpc1NlbGVjdGVkRmllbGQoZmllbGRJZCwgYWlUYWJsZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yc1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAvLyBob3ZlciDnu4Tku7bmuLLmn5Pml7bvvIzlupXlsYLnmoQgY2VsbCDmuLLmn5PkuLrnqbpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhvdmVyQ2VsbCAmJiBob3ZlckNlbGwucmVjb3JkSWQgPT09IHJlY29yZElkICYmIGhvdmVyQ2VsbC5maWVsZElkID09PSBmaWVsZElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIuY2VsbFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIudHJhbnNmb3JtVmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNlbGxEcmF3ZXIuaW5pdFN0eWxlKGZpZWxkLCBzdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIOacgOWQjuS4gOWIl++8jOS4lOWNleWFg+agvOWGheWuueWtmOWcqO+8jOmcgOimgeijgeWJquWGheWuue+8jOS7pemYsuatouaWh+acrOa6ouWHuuWNleWFg+agvOi+ueeVjFxuICAgICAgICAgICAgICAgICAgICAvLyDnhLblkI7vvIzmoLnmja7orqHnrpflpb3nmoTmoLflvI/lkozluIPlsYDnu5jliLbljZXlhYPmoLzlhoXlrrlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGFzdENvbHVtbiAmJiBjZWxsVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnNhdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5yZWN0KHJlYWxYLCByZWFsWSwgd2lkdGgsIHJvd0hlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHguY2xpcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbERyYXdlci5yZW5kZXJDZWxsKHJlbmRlciBhcyBBSVRhYmxlUmVuZGVyLCBjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBjb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbERyYXdlci5yZW5kZXJDZWxsKHJlbmRlciBhcyBBSVRhYmxlUmVuZGVyLCBjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBjb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5jb25zdCBnZXRDZWxsQmFja2dyb3VuZCA9IChjZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoLCBpc0hvdmVyOiBib29sZWFuLCB0YXJnZXROYW1lOiBzdHJpbmcsIGFpVGFibGU6IEFJVGFibGUpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IEFJVGFibGUuZ2V0Q29sb3JzKCk7XG4gICAgY29uc3QgW3JlY29yZElkLCBmaWVsZElkXSA9IGNlbGw7XG4gICAgbGV0IGJhY2tncm91bmQgPSBjb2xvcnMud2hpdGU7XG5cbiAgICBjb25zdCBfaXNIb3ZlclJlY29yZCA9IGlzSG92ZXJSZWNvcmQoaXNIb3ZlciwgdGFyZ2V0TmFtZSk7XG4gICAgY29uc3QgX2lzU2VsZWN0ZWRSZWNvcmQgPSBpc1NlbGVjdGVkUmVjb3JkKHJlY29yZElkLCBhaVRhYmxlKTtcbiAgICBjb25zdCBfaXNTZWxlY3RlZEZpZWxkID0gaXNTZWxlY3RlZEZpZWxkKGZpZWxkSWQsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc1NpYmxpbmdDZWxsID0gaXNTaWJsaW5nQ2VsbChjZWxsLCBhaVRhYmxlKTtcbiAgICBjb25zdCBfaXNBY3RpdmVDZWxsID0gaXNBY3RpdmVDZWxsKGNlbGwsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc1NlbGVjdGVkQ2VsbCA9IGlzU2VsZWN0ZWRDZWxsKGNlbGwsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc0tleXdvcmRzTWF0Y2hlZENlbGwgPSBpc0tleXdvcmRzTWF0Y2hlZENlbGwoY2VsbCwgYWlUYWJsZSk7XG5cbiAgICBpZiAoX2lzS2V5d29yZHNNYXRjaGVkQ2VsbCkge1xuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3JzLml0ZW1NYXRjaEJnQ29sb3I7XG4gICAgfSBlbHNlIGlmIChfaXNTZWxlY3RlZFJlY29yZCB8fCBfaXNTZWxlY3RlZEZpZWxkIHx8IF9pc1NpYmxpbmdDZWxsIHx8IChfaXNTZWxlY3RlZENlbGwgJiYgIV9pc0FjdGl2ZUNlbGwpKSB7XG4gICAgICAgIGJhY2tncm91bmQgPSBjb2xvcnMuaXRlbUFjdGl2ZUJnQ29sb3I7XG4gICAgfSBlbHNlIGlmIChfaXNIb3ZlclJlY29yZCAmJiAhX2lzQWN0aXZlQ2VsbCkge1xuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3JzLmdyYXk4MDtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFja2dyb3VuZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0FjdGl2ZUNlbGwgPSAoY2VsbDogQUlSZWNvcmRGaWVsZElkUGF0aCwgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBjZWxsO1xuICAgIGNvbnN0IFthY3RpdmVSZWNvcmRJZCwgYWN0aXZlRmllbGRJZF0gPSBBSVRhYmxlLmdldEFjdGl2ZUNlbGwoYWlUYWJsZSkgfHwgW107XG4gICAgcmV0dXJuIHJlY29yZElkID09PSBhY3RpdmVSZWNvcmRJZCAmJiBmaWVsZElkID09PSBhY3RpdmVGaWVsZElkO1xufTtcblxuY29uc3QgaXNTaWJsaW5nQ2VsbCA9IChjZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoLCBhaVRhYmxlOiBBSVRhYmxlKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgW3JlY29yZElkLCBmaWVsZElkXSA9IGNlbGw7XG4gICAgY29uc3QgW2FjdGl2ZVJlY29yZElkLCBhY3RpdmVGaWVsZElkXSA9IEFJVGFibGUuZ2V0QWN0aXZlQ2VsbChhaVRhYmxlKSB8fCBbXTtcbiAgICByZXR1cm4gQUlUYWJsZS5nZXRBY3RpdmVSZWNvcmRJZHMoYWlUYWJsZSkubGVuZ3RoID09PSAxICYmIHJlY29yZElkID09PSBhY3RpdmVSZWNvcmRJZCAmJiBmaWVsZElkICE9PSBhY3RpdmVGaWVsZElkO1xufTtcblxuY29uc3QgaXNLZXl3b3Jkc01hdGNoZWRDZWxsID0gKGNlbGw6IEFJUmVjb3JkRmllbGRJZFBhdGgsIGFpVGFibGU6IEFJVGFibGUpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBbcmVjb3JkSWQsIGZpZWxkSWRdID0gY2VsbDtcbiAgICByZXR1cm4gYWlUYWJsZS5rZXl3b3Jkc01hdGNoZWRDZWxscygpLmhhcyhgJHtyZWNvcmRJZH06JHtmaWVsZElkfWApO1xufTtcblxuY29uc3QgaXNTZWxlY3RlZENlbGwgPSAoY2VsbDogQUlSZWNvcmRGaWVsZElkUGF0aCwgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBjZWxsO1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkQ2VsbHMuaGFzKGAke3JlY29yZElkfToke2ZpZWxkSWR9YCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWxlY3RlZEZpZWxkID0gKGZpZWxkSWQ6IHN0cmluZywgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkRmllbGRzLmhhcyhmaWVsZElkKTtcbn07XG5cbmNvbnN0IGlzU2VsZWN0ZWRSZWNvcmQgPSAocmVjb3JkSWQ6IHN0cmluZywgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3Jkcy5oYXMocmVjb3JkSWQpO1xufTtcblxuY29uc3QgaXNIb3ZlclJlY29yZCA9IChpc0hvdmVyOiBib29sZWFuLCB0YXJnZXROYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gaXNIb3ZlciAmJiB0YXJnZXROYW1lICE9PSBBSV9UQUJMRV9GSUVMRF9IRUFEO1xufTtcbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_MORE, Colors } from '../../constants';
2
- export const createColumnHeads = (config) => {
3
- const { coordinate, columnStartIndex, columnStopIndex, pointPosition, aiTable } = config;
4
- const colors = Colors;
5
- const { columnCount, rowInitSize: fieldHeadHeight } = coordinate;
6
- const { columnIndex: pointColumnIndex, targetName: pointTargetName } = pointPosition;
7
- const fields = aiTable.gridData().fields;
8
- const getFieldHeadStatus = (fieldId) => {
9
- const iconVisible = [AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_MORE].includes(pointTargetName) && fields[pointColumnIndex]?._id === fieldId;
10
- const isHoverIcon = pointTargetName === AI_TABLE_FIELD_HEAD_MORE && fields[pointColumnIndex]?._id === fieldId;
11
- const isSelected = aiTable.selection().selectedFields.has(fieldId);
12
- return {
13
- iconVisible,
14
- isSelected,
15
- isHoverIcon
16
- };
17
- };
18
- const fieldHeads = [];
19
- const fieldMenuFn = config.aiTable.context?.aiFieldConfig()?.fieldMenus;
20
- const fieldMenus = (fieldMenuFn && fieldMenuFn(aiTable)) || [];
21
- let noMoreIcon = false;
22
- if (fieldMenus.length === 0) {
23
- noMoreIcon = true;
24
- }
25
- for (let columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {
26
- if (columnIndex > columnCount - 1)
27
- break;
28
- if (columnIndex < 0)
29
- continue;
30
- const field = fields[columnIndex];
31
- if (field == null)
32
- continue;
33
- const x = coordinate.getColumnOffset(columnIndex);
34
- const columnWidth = coordinate.getColumnWidth(columnIndex);
35
- const { iconVisible, isSelected, isHoverIcon } = getFieldHeadStatus(field._id);
36
- const fieldHead = {
37
- x,
38
- y: 0,
39
- width: columnWidth,
40
- height: fieldHeadHeight,
41
- field,
42
- stroke: columnIndex === 0 ? colors.transparent : undefined,
43
- iconVisible: noMoreIcon ? false : iconVisible,
44
- isSelected,
45
- isHoverIcon
46
- };
47
- fieldHeads.push(fieldHead);
48
- }
49
- return fieldHeads;
50
- };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWhlYWRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvY3JlYXRpb25zL2NyZWF0ZS1oZWFkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHeEYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7SUFDbEUsTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN6RixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdEIsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEdBQUcsVUFBVSxDQUFDO0lBQ2pFLE1BQU0sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLGFBQWEsQ0FBQztJQUNyRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO0lBRXpDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUMzQyxNQUFNLFdBQVcsR0FDYixDQUFDLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsS0FBSyxPQUFPLENBQUM7UUFDM0gsTUFBTSxXQUFXLEdBQUcsZUFBZSxLQUFLLHdCQUF3QixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsS0FBSyxPQUFPLENBQUM7UUFDOUcsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsT0FBTztZQUNILFdBQVc7WUFDWCxVQUFVO1lBQ1YsV0FBVztTQUNkLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBNkIsRUFBRSxDQUFDO0lBQ2hELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLFVBQVUsQ0FBQztJQUN4RSxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0QsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLElBQUksV0FBVyxHQUFHLGdCQUFnQixFQUFFLFdBQVcsSUFBSSxlQUFlLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNyRixJQUFJLFdBQVcsR0FBRyxXQUFXLEdBQUcsQ0FBQztZQUFFLE1BQU07UUFDekMsSUFBSSxXQUFXLEdBQUcsQ0FBQztZQUFFLFNBQVM7UUFDOUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxJQUFJLElBQUk7WUFBRSxTQUFTO1FBQzVCLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0UsTUFBTSxTQUFTLEdBQUc7WUFDZCxDQUFDO1lBQ0QsQ0FBQyxFQUFFLENBQUM7WUFDSixLQUFLLEVBQUUsV0FBVztZQUNsQixNQUFNLEVBQUUsZUFBZTtZQUN2QixLQUFLO1lBQ0wsTUFBTSxFQUFFLFdBQVcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDMUQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQzdDLFVBQVU7WUFDVixXQUFXO1NBQ2QsQ0FBQztRQUVGLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJX1RBQkxFX0ZJRUxEX0hFQUQsIEFJX1RBQkxFX0ZJRUxEX0hFQURfTU9SRSwgQ29sb3JzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGVDb2x1bW5IZWFkc0NvbmZpZywgQUlUYWJsZUZpZWxkSGVhZENvbmZpZyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbHVtbkhlYWRzID0gKGNvbmZpZzogQUlUYWJsZUNvbHVtbkhlYWRzQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlLCBjb2x1bW5TdGFydEluZGV4LCBjb2x1bW5TdG9wSW5kZXgsIHBvaW50UG9zaXRpb24sIGFpVGFibGUgfSA9IGNvbmZpZztcbiAgICBjb25zdCBjb2xvcnMgPSBDb2xvcnM7XG4gICAgY29uc3QgeyBjb2x1bW5Db3VudCwgcm93SW5pdFNpemU6IGZpZWxkSGVhZEhlaWdodCB9ID0gY29vcmRpbmF0ZTtcbiAgICBjb25zdCB7IGNvbHVtbkluZGV4OiBwb2ludENvbHVtbkluZGV4LCB0YXJnZXROYW1lOiBwb2ludFRhcmdldE5hbWUgfSA9IHBvaW50UG9zaXRpb247XG4gICAgY29uc3QgZmllbGRzID0gYWlUYWJsZS5ncmlkRGF0YSgpLmZpZWxkcztcblxuICAgIGNvbnN0IGdldEZpZWxkSGVhZFN0YXR1cyA9IChmaWVsZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaWNvblZpc2libGUgPVxuICAgICAgICAgICAgW0FJX1RBQkxFX0ZJRUxEX0hFQUQsIEFJX1RBQkxFX0ZJRUxEX0hFQURfTU9SRV0uaW5jbHVkZXMocG9pbnRUYXJnZXROYW1lKSAmJiBmaWVsZHNbcG9pbnRDb2x1bW5JbmRleF0/Ll9pZCA9PT0gZmllbGRJZDtcbiAgICAgICAgY29uc3QgaXNIb3Zlckljb24gPSBwb2ludFRhcmdldE5hbWUgPT09IEFJX1RBQkxFX0ZJRUxEX0hFQURfTU9SRSAmJiBmaWVsZHNbcG9pbnRDb2x1bW5JbmRleF0/Ll9pZCA9PT0gZmllbGRJZDtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRGaWVsZHMuaGFzKGZpZWxkSWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWNvblZpc2libGUsXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgaXNIb3Zlckljb25cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgZmllbGRIZWFkczogQUlUYWJsZUZpZWxkSGVhZENvbmZpZ1tdID0gW107XG4gICAgY29uc3QgZmllbGRNZW51Rm4gPSBjb25maWcuYWlUYWJsZS5jb250ZXh0Py5haUZpZWxkQ29uZmlnKCk/LmZpZWxkTWVudXM7XG4gICAgY29uc3QgZmllbGRNZW51cyA9IChmaWVsZE1lbnVGbiAmJiBmaWVsZE1lbnVGbihhaVRhYmxlKSkgfHwgW107XG4gICAgbGV0IG5vTW9yZUljb24gPSBmYWxzZTtcbiAgICBpZiAoZmllbGRNZW51cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbm9Nb3JlSWNvbiA9IHRydWU7XG4gICAgfVxuICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gY29sdW1uU3RhcnRJbmRleDsgY29sdW1uSW5kZXggPD0gY29sdW1uU3RvcEluZGV4OyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA+IGNvbHVtbkNvdW50IC0gMSkgYnJlYWs7XG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA8IDApIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkc1tjb2x1bW5JbmRleF07XG4gICAgICAgIGlmIChmaWVsZCA9PSBudWxsKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgeCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KGNvbHVtbkluZGV4KTtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBjb29yZGluYXRlLmdldENvbHVtbldpZHRoKGNvbHVtbkluZGV4KTtcbiAgICAgICAgY29uc3QgeyBpY29uVmlzaWJsZSwgaXNTZWxlY3RlZCwgaXNIb3Zlckljb24gfSA9IGdldEZpZWxkSGVhZFN0YXR1cyhmaWVsZC5faWQpO1xuICAgICAgICBjb25zdCBmaWVsZEhlYWQgPSB7XG4gICAgICAgICAgICB4LFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIHdpZHRoOiBjb2x1bW5XaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogZmllbGRIZWFkSGVpZ2h0LFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBzdHJva2U6IGNvbHVtbkluZGV4ID09PSAwID8gY29sb3JzLnRyYW5zcGFyZW50IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaWNvblZpc2libGU6IG5vTW9yZUljb24gPyBmYWxzZSA6IGljb25WaXNpYmxlLFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIGlzSG92ZXJJY29uXG4gICAgICAgIH07XG5cbiAgICAgICAgZmllbGRIZWFkcy5wdXNoKGZpZWxkSGVhZCk7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZEhlYWRzO1xufTtcbiJdfQ==
@@ -1,98 +0,0 @@
1
- import { AddOutlinedPath, AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_OFFSET, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD_SIZE } from '../../constants';
2
- import { Layout } from './layout-drawer';
3
- export class AddRowLayout extends Layout {
4
- renderAddFieldBlank({ isHoverRow, isCheckedRow }) {
5
- super.renderAddFieldBlank({ isHoverRow, isCheckedRow });
6
- const rowHeight = this.rowHeight;
7
- const defaultWidth = AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
8
- const width = this.containerWidth - this.x < defaultWidth ? defaultWidth : this.containerWidth - this.x;
9
- this.line({
10
- x: this.x + this.columnWidth,
11
- y: this.y,
12
- points: [0, rowHeight, width, rowHeight],
13
- stroke: this.colors.gray200
14
- });
15
- }
16
- renderCell({ width, isHoverRow }) {
17
- const x = this.x;
18
- const y = this.y;
19
- const rowHeight = this.rowHeight;
20
- const fill = isHoverRow ? this.colors.gray80 : this.colors.transparent;
21
- this.rect({
22
- x,
23
- y: y + AI_TABLE_OFFSET,
24
- width: width,
25
- height: rowHeight,
26
- fill
27
- });
28
- this.line({
29
- x,
30
- y: y + rowHeight,
31
- points: [0, 0, width, 0],
32
- stroke: this.colors.gray200
33
- });
34
- }
35
- renderFirstCell({ isHoverRow }) {
36
- if (!this.isFirst)
37
- return;
38
- const y = this.y;
39
- const rowHeight = this.rowHeight;
40
- const columnWidth = this.columnWidth;
41
- const frozenOffset = AI_TABLE_OFFSET;
42
- const fill = isHoverRow ? this.colors.gray80 : this.colors.transparent;
43
- this.rect({
44
- x: this.hiddenIndexColumn ? frozenOffset : frozenOffset + AI_TABLE_ROW_DRAG_ICON_WIDTH,
45
- y: y + AI_TABLE_OFFSET,
46
- width: columnWidth + this.rowHeadWidth - frozenOffset + 1,
47
- height: rowHeight,
48
- fill
49
- });
50
- this.line({
51
- x: this.hiddenIndexColumn ? frozenOffset : frozenOffset + AI_TABLE_ROW_DRAG_ICON_WIDTH,
52
- y,
53
- points: [0, rowHeight, columnWidth + this.rowHeadWidth - frozenOffset + 1, rowHeight],
54
- stroke: this.colors.gray200
55
- });
56
- this.path({
57
- x: this.hiddenIndexColumn ? AI_TABLE_CELL_PADDING : AI_TABLE_CELL_PADDING + AI_TABLE_ROW_DRAG_ICON_WIDTH,
58
- y: y + (rowHeight - AI_TABLE_ICON_COMMON_SIZE) / 2 - AI_TABLE_OFFSET,
59
- data: AddOutlinedPath,
60
- size: AI_TABLE_ROW_HEAD_SIZE,
61
- fill: this.colors.gray600
62
- });
63
- }
64
- renderLastCell({ isHoverRow, isCheckedRow }) {
65
- if (!this.isLast)
66
- return;
67
- const width = this.columnWidth;
68
- if (!this.isFirst) {
69
- this.renderCell({
70
- width,
71
- isHoverRow
72
- });
73
- }
74
- this.renderAddFieldBlank({ isHoverRow, isCheckedRow });
75
- }
76
- renderCommonCell({ isHoverRow }) {
77
- if (this.isFirst || this.isLast)
78
- return;
79
- this.renderCell({
80
- width: this.columnWidth,
81
- isHoverRow
82
- });
83
- }
84
- render({ isHoverRow, isCheckedRow }) {
85
- this.renderFirstCell({
86
- isHoverRow
87
- });
88
- this.renderCommonCell({
89
- isHoverRow
90
- });
91
- this.renderLastCell({
92
- isHoverRow,
93
- isCheckedRow
94
- });
95
- }
96
- }
97
- export const addRowLayout = new AddRowLayout();
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdy1sYXlvdXQtZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvZHJhd2Vycy9hZGQtcm93LWxheW91dC1kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZixxQkFBcUIsRUFDckIsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsNEJBQTRCLEVBQzVCLHNCQUFzQixFQUN6QixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxNQUFNLE9BQU8sWUFBYSxTQUFRLE1BQU07SUFDM0IsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFvRDtRQUN2RyxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLCtCQUErQixDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDTixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVztZQUM1QixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDVCxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUM7WUFDeEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztTQUM5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QUFFLFVBQVUsRUFBRSxZQUFZLEVBQW9EO1FBQ2pHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ1osS0FBSztnQkFDTCxVQUFVO2FBQ2IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsRUFBbUM7UUFDcEUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ1osS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3ZCLFVBQVU7U0FDYixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBb0Q7UUFDakYsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNqQixVQUFVO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ2xCLFVBQVU7U0FDYixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ2hCLFVBQVU7WUFDVixZQUFZO1NBQ2YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFkZE91dGxpbmVkUGF0aCxcbiAgICBBSV9UQUJMRV9DRUxMX1BBRERJTkcsXG4gICAgQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSCxcbiAgICBBSV9UQUJMRV9JQ09OX0NPTU1PTl9TSVpFLFxuICAgIEFJX1RBQkxFX09GRlNFVCxcbiAgICBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRILFxuICAgIEFJX1RBQkxFX1JPV19IRUFEX1NJWkVcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGVDZWxsIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTGF5b3V0IH0gZnJvbSAnLi9sYXlvdXQtZHJhd2VyJztcblxuZXhwb3J0IGNsYXNzIEFkZFJvd0xheW91dCBleHRlbmRzIExheW91dCB7XG4gICAgb3ZlcnJpZGUgcmVuZGVyQWRkRmllbGRCbGFuayh7IGlzSG92ZXJSb3csIGlzQ2hlY2tlZFJvdyB9OiBQaWNrPEFJVGFibGVDZWxsLCAnaXNIb3ZlclJvdycgfCAnaXNDaGVja2VkUm93Jz4pIHtcbiAgICAgICAgc3VwZXIucmVuZGVyQWRkRmllbGRCbGFuayh7IGlzSG92ZXJSb3csIGlzQ2hlY2tlZFJvdyB9KTtcbiAgICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRXaWR0aCA9IEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEg7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5jb250YWluZXJXaWR0aCAtIHRoaXMueCA8IGRlZmF1bHRXaWR0aCA/IGRlZmF1bHRXaWR0aCA6IHRoaXMuY29udGFpbmVyV2lkdGggLSB0aGlzLng7XG4gICAgICAgIHRoaXMubGluZSh7XG4gICAgICAgICAgICB4OiB0aGlzLnggKyB0aGlzLmNvbHVtbldpZHRoLFxuICAgICAgICAgICAgeTogdGhpcy55LFxuICAgICAgICAgICAgcG9pbnRzOiBbMCwgcm93SGVpZ2h0LCB3aWR0aCwgcm93SGVpZ2h0XSxcbiAgICAgICAgICAgIHN0cm9rZTogdGhpcy5jb2xvcnMuZ3JheTIwMFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlckNlbGwoeyB3aWR0aCwgaXNIb3ZlclJvdyB9OiBQaWNrPEFJVGFibGVDZWxsLCAnd2lkdGgnIHwgJ2lzSG92ZXJSb3cnPikge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy54O1xuICAgICAgICBjb25zdCB5ID0gdGhpcy55O1xuICAgICAgICBjb25zdCByb3dIZWlnaHQgPSB0aGlzLnJvd0hlaWdodDtcbiAgICAgICAgY29uc3QgZmlsbCA9IGlzSG92ZXJSb3cgPyB0aGlzLmNvbG9ycy5ncmF5ODAgOiB0aGlzLmNvbG9ycy50cmFuc3BhcmVudDtcblxuICAgICAgICB0aGlzLnJlY3Qoe1xuICAgICAgICAgICAgeCxcbiAgICAgICAgICAgIHk6IHkgKyBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICB3aWR0aDogd2lkdGggYXMgbnVtYmVyLFxuICAgICAgICAgICAgaGVpZ2h0OiByb3dIZWlnaHQsXG4gICAgICAgICAgICBmaWxsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxpbmUoe1xuICAgICAgICAgICAgeCxcbiAgICAgICAgICAgIHk6IHkgKyByb3dIZWlnaHQsXG4gICAgICAgICAgICBwb2ludHM6IFswLCAwLCB3aWR0aCBhcyBudW1iZXIsIDBdLFxuICAgICAgICAgICAgc3Ryb2tlOiB0aGlzLmNvbG9ycy5ncmF5MjAwXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyRmlyc3RDZWxsKHsgaXNIb3ZlclJvdyB9OiBQaWNrPEFJVGFibGVDZWxsLCAnaXNIb3ZlclJvdyc+KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZpcnN0KSByZXR1cm47XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLnk7XG4gICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMucm93SGVpZ2h0O1xuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IHRoaXMuY29sdW1uV2lkdGg7XG4gICAgICAgIGNvbnN0IGZyb3plbk9mZnNldCA9IEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgY29uc3QgZmlsbCA9IGlzSG92ZXJSb3cgPyB0aGlzLmNvbG9ycy5ncmF5ODAgOiB0aGlzLmNvbG9ycy50cmFuc3BhcmVudDtcblxuICAgICAgICB0aGlzLnJlY3Qoe1xuICAgICAgICAgICAgeDogdGhpcy5oaWRkZW5JbmRleENvbHVtbiA/IGZyb3plbk9mZnNldCA6IGZyb3plbk9mZnNldCArIEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEgsXG4gICAgICAgICAgICB5OiB5ICsgQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgd2lkdGg6IGNvbHVtbldpZHRoICsgdGhpcy5yb3dIZWFkV2lkdGggLSBmcm96ZW5PZmZzZXQgKyAxLFxuICAgICAgICAgICAgaGVpZ2h0OiByb3dIZWlnaHQsXG4gICAgICAgICAgICBmaWxsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxpbmUoe1xuICAgICAgICAgICAgeDogdGhpcy5oaWRkZW5JbmRleENvbHVtbiA/IGZyb3plbk9mZnNldCA6IGZyb3plbk9mZnNldCArIEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgcG9pbnRzOiBbMCwgcm93SGVpZ2h0LCBjb2x1bW5XaWR0aCArIHRoaXMucm93SGVhZFdpZHRoIC0gZnJvemVuT2Zmc2V0ICsgMSwgcm93SGVpZ2h0XSxcbiAgICAgICAgICAgIHN0cm9rZTogdGhpcy5jb2xvcnMuZ3JheTIwMFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnBhdGgoe1xuICAgICAgICAgICAgeDogdGhpcy5oaWRkZW5JbmRleENvbHVtbiA/IEFJX1RBQkxFX0NFTExfUEFERElORyA6IEFJX1RBQkxFX0NFTExfUEFERElORyArIEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEgsXG4gICAgICAgICAgICB5OiB5ICsgKHJvd0hlaWdodCAtIEFJX1RBQkxFX0lDT05fQ09NTU9OX1NJWkUpIC8gMiAtIEFJX1RBQkxFX09GRlNFVCxcbiAgICAgICAgICAgIGRhdGE6IEFkZE91dGxpbmVkUGF0aCxcbiAgICAgICAgICAgIHNpemU6IEFJX1RBQkxFX1JPV19IRUFEX1NJWkUsXG4gICAgICAgICAgICBmaWxsOiB0aGlzLmNvbG9ycy5ncmF5NjAwXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyTGFzdENlbGwoeyBpc0hvdmVyUm93LCBpc0NoZWNrZWRSb3cgfTogUGljazxBSVRhYmxlQ2VsbCwgJ2lzSG92ZXJSb3cnIHwgJ2lzQ2hlY2tlZFJvdyc+KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xhc3QpIHJldHVybjtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNvbHVtbldpZHRoO1xuICAgICAgICBpZiAoIXRoaXMuaXNGaXJzdCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJDZWxsKHtcbiAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICBpc0hvdmVyUm93XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlckFkZEZpZWxkQmxhbmsoeyBpc0hvdmVyUm93LCBpc0NoZWNrZWRSb3cgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJDb21tb25DZWxsKHsgaXNIb3ZlclJvdyB9OiBQaWNrPEFJVGFibGVDZWxsLCAnaXNIb3ZlclJvdyc+KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3QgfHwgdGhpcy5pc0xhc3QpIHJldHVybjtcbiAgICAgICAgdGhpcy5yZW5kZXJDZWxsKHtcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmNvbHVtbldpZHRoLFxuICAgICAgICAgICAgaXNIb3ZlclJvd1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW5kZXIoeyBpc0hvdmVyUm93LCBpc0NoZWNrZWRSb3cgfTogUGljazxBSVRhYmxlQ2VsbCwgJ2lzSG92ZXJSb3cnIHwgJ2lzQ2hlY2tlZFJvdyc+KSB7XG4gICAgICAgIHRoaXMucmVuZGVyRmlyc3RDZWxsKHtcbiAgICAgICAgICAgIGlzSG92ZXJSb3dcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVuZGVyQ29tbW9uQ2VsbCh7XG4gICAgICAgICAgICBpc0hvdmVyUm93XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlbmRlckxhc3RDZWxsKHtcbiAgICAgICAgICAgIGlzSG92ZXJSb3csXG4gICAgICAgICAgICBpc0NoZWNrZWRSb3dcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgYWRkUm93TGF5b3V0ID0gbmV3IEFkZFJvd0xheW91dCgpO1xuIl19