@ai-table/grid 0.0.66 → 0.0.68

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 (223) hide show
  1. package/components/cell-editors/abstract-cell-editor.component.d.ts +3 -3
  2. package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
  3. package/components/cell-editors/date/date-editor.component.d.ts +1 -1
  4. package/components/cell-editors/date/date-editor.component.d.ts.map +1 -1
  5. package/components/cell-editors/link/link-editor.component.d.ts.map +1 -1
  6. package/components/cell-editors/select/select-editor.component.d.ts +1 -1
  7. package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
  8. package/components/cell-views/select/option.component.d.ts +1 -1
  9. package/components/cell-views/select/option.component.d.ts.map +1 -1
  10. package/components/drag/drag.component.d.ts +1 -1
  11. package/components/drag/drag.component.d.ts.map +1 -1
  12. package/components/field-menu/field-menu.component.d.ts +2 -1
  13. package/components/field-menu/field-menu.component.d.ts.map +1 -1
  14. package/components/field-setting/field-setting.component.d.ts +2 -1
  15. package/components/field-setting/field-setting.component.d.ts.map +1 -1
  16. package/constants/editor.d.ts +1 -1
  17. package/constants/editor.d.ts.map +1 -1
  18. package/constants/grid.d.ts +1 -1
  19. package/constants/grid.d.ts.map +1 -1
  20. package/core/constants/field.d.ts +2 -1
  21. package/core/constants/field.d.ts.map +1 -1
  22. package/core/context.d.ts +3 -1
  23. package/core/context.d.ts.map +1 -1
  24. package/core/coordinate.d.ts +2 -1
  25. package/core/coordinate.d.ts.map +1 -1
  26. package/core/types/ai-table.d.ts +2 -1
  27. package/core/types/ai-table.d.ts.map +1 -1
  28. package/core/types/core.d.ts +1 -188
  29. package/core/types/core.d.ts.map +1 -1
  30. package/core/utils/common.d.ts +2 -1
  31. package/core/utils/common.d.ts.map +1 -1
  32. package/core/utils/field.d.ts +2 -1
  33. package/core/utils/field.d.ts.map +1 -1
  34. package/core/utils/index.d.ts.map +1 -1
  35. package/core/utils/queries.d.ts +2 -1
  36. package/core/utils/queries.d.ts.map +1 -1
  37. package/dom-grid.component.d.ts +1 -1
  38. package/dom-grid.component.d.ts.map +1 -1
  39. package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +1 -1
  40. package/esm2022/components/cell-editors/date/date-editor.component.mjs +1 -1
  41. package/esm2022/components/cell-editors/link/link-editor.component.mjs +2 -1
  42. package/esm2022/components/cell-editors/select/select-editor.component.mjs +3 -2
  43. package/esm2022/components/cell-views/select/option.component.mjs +2 -2
  44. package/esm2022/components/drag/drag.component.mjs +4 -4
  45. package/esm2022/components/field-menu/field-menu.component.mjs +1 -1
  46. package/esm2022/components/field-setting/field-setting.component.mjs +3 -2
  47. package/esm2022/constants/editor.mjs +2 -2
  48. package/esm2022/constants/grid.mjs +2 -2
  49. package/esm2022/core/constants/field.mjs +2 -2
  50. package/esm2022/core/context.mjs +3 -2
  51. package/esm2022/core/coordinate.mjs +2 -2
  52. package/esm2022/core/types/ai-table.mjs +1 -1
  53. package/esm2022/core/types/core.mjs +2 -58
  54. package/esm2022/core/utils/common.mjs +1 -1
  55. package/esm2022/core/utils/field.mjs +2 -2
  56. package/esm2022/core/utils/index.mjs +1 -1
  57. package/esm2022/core/utils/queries.mjs +2 -2
  58. package/esm2022/dom-grid.component.mjs +1 -1
  59. package/esm2022/grid-base.component.mjs +3 -2
  60. package/esm2022/grid.component.mjs +5 -3
  61. package/esm2022/pipes/grid.pipe.mjs +1 -1
  62. package/esm2022/renderer/components/cells/attachment.component.mjs +2 -2
  63. package/esm2022/renderer/components/cells/cells.mjs +1 -1
  64. package/esm2022/renderer/components/cells/link.component.mjs +3 -3
  65. package/esm2022/renderer/components/cells/progress.component.mjs +2 -2
  66. package/esm2022/renderer/components/cells/rate.component.mjs +2 -2
  67. package/esm2022/renderer/components/cells/rich-text.component.mjs +2 -2
  68. package/esm2022/renderer/components/field-icon.component.mjs +2 -2
  69. package/esm2022/renderer/components/frozen-heads.component.mjs +123 -38
  70. package/esm2022/renderer/components/hover-cell.component.mjs +2 -3
  71. package/esm2022/renderer/components/hover-row-heads.component.mjs +4 -4
  72. package/esm2022/renderer/components/icon.component.mjs +2 -2
  73. package/esm2022/renderer/creations/create-cells.mjs +7 -3
  74. package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +7 -7
  75. package/esm2022/renderer/drawers/cell-drawer.mjs +3 -2
  76. package/esm2022/renderer/drawers/layout-drawer.mjs +7 -3
  77. package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +46 -30
  78. package/esm2022/renderer/interfaces/hover-cell.mjs +1 -1
  79. package/esm2022/renderer/renderer.component.mjs +7 -5
  80. package/esm2022/services/event.service.mjs +6 -4
  81. package/esm2022/services/selection.service.mjs +3 -2
  82. package/esm2022/types/canvas.mjs +1 -1
  83. package/esm2022/types/cell.mjs +1 -1
  84. package/esm2022/types/component-config.mjs +1 -1
  85. package/esm2022/types/field.mjs +1 -1
  86. package/esm2022/types/grid.mjs +1 -6
  87. package/esm2022/types/index.mjs +1 -2
  88. package/esm2022/types/layout.mjs +1 -1
  89. package/esm2022/utils/build.mjs +1 -1
  90. package/esm2022/utils/cell.mjs +2 -2
  91. package/esm2022/utils/clipboard/copy.mjs +4 -3
  92. package/esm2022/utils/clipboard/paste.mjs +4 -3
  93. package/esm2022/utils/common.mjs +1 -11
  94. package/esm2022/utils/field/field-operable.mjs +2 -0
  95. package/esm2022/utils/field/field.mjs +20 -0
  96. package/esm2022/utils/field/index.mjs +4 -0
  97. package/esm2022/utils/field/model/attachment.mjs +7 -26
  98. package/esm2022/utils/field/model/date.mjs +8 -17
  99. package/esm2022/utils/field/model/index.mjs +12 -28
  100. package/esm2022/utils/field/model/link.mjs +6 -22
  101. package/esm2022/utils/field/model/member.mjs +6 -26
  102. package/esm2022/utils/field/model/number.mjs +7 -14
  103. package/esm2022/utils/field/model/progress.mjs +7 -18
  104. package/esm2022/utils/field/model/rate.mjs +7 -12
  105. package/esm2022/utils/field/model/rich-text.mjs +7 -11
  106. package/esm2022/utils/field/model/select.mjs +7 -21
  107. package/esm2022/utils/field/model/text.mjs +6 -11
  108. package/esm2022/utils/field/operate.mjs +27 -2
  109. package/esm2022/utils/index.mjs +2 -3
  110. package/esm2022/utils/match-keywords.mjs +2 -2
  111. package/esm2022/utils/position.mjs +6 -6
  112. package/esm2022/utils/visible-range.mjs +3 -3
  113. package/fesm2022/ai-table-grid.mjs +430 -507
  114. package/fesm2022/ai-table-grid.mjs.map +1 -1
  115. package/grid-base.component.d.ts +3 -2
  116. package/grid-base.component.d.ts.map +1 -1
  117. package/grid.component.d.ts +2 -1
  118. package/grid.component.d.ts.map +1 -1
  119. package/package.json +1 -1
  120. package/pipes/grid.pipe.d.ts +4 -3
  121. package/pipes/grid.pipe.d.ts.map +1 -1
  122. package/renderer/components/cells/attachment.component.d.ts +1 -1
  123. package/renderer/components/cells/attachment.component.d.ts.map +1 -1
  124. package/renderer/components/cells/cells.d.ts +1 -1
  125. package/renderer/components/cells/cells.d.ts.map +1 -1
  126. package/renderer/components/cells/link.component.d.ts +1 -1
  127. package/renderer/components/cells/link.component.d.ts.map +1 -1
  128. package/renderer/components/cells/progress.component.d.ts +1 -1
  129. package/renderer/components/cells/progress.component.d.ts.map +1 -1
  130. package/renderer/components/cells/rate.component.d.ts +1 -1
  131. package/renderer/components/cells/rate.component.d.ts.map +1 -1
  132. package/renderer/components/cells/rich-text.component.d.ts +1 -1
  133. package/renderer/components/cells/rich-text.component.d.ts.map +1 -1
  134. package/renderer/components/field-head.component.d.ts +1 -1
  135. package/renderer/components/frozen-heads.component.d.ts +39 -3
  136. package/renderer/components/frozen-heads.component.d.ts.map +1 -1
  137. package/renderer/components/hover-cell.component.d.ts +2 -2
  138. package/renderer/components/hover-cell.component.d.ts.map +1 -1
  139. package/renderer/components/hover-row-heads.component.d.ts.map +1 -1
  140. package/renderer/creations/create-cells.d.ts +2 -1
  141. package/renderer/creations/create-cells.d.ts.map +1 -1
  142. package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -1
  143. package/renderer/drawers/cell-drawer.d.ts +1 -1
  144. package/renderer/drawers/cell-drawer.d.ts.map +1 -1
  145. package/renderer/drawers/layout-drawer.d.ts +3 -1
  146. package/renderer/drawers/layout-drawer.d.ts.map +1 -1
  147. package/renderer/drawers/record-row-layout-drawer.d.ts.map +1 -1
  148. package/renderer/interfaces/hover-cell.d.ts +1 -1
  149. package/renderer/interfaces/hover-cell.d.ts.map +1 -1
  150. package/renderer/renderer.component.d.ts +3 -2
  151. package/renderer/renderer.component.d.ts.map +1 -1
  152. package/services/event.service.d.ts +3 -2
  153. package/services/event.service.d.ts.map +1 -1
  154. package/services/selection.service.d.ts +2 -1
  155. package/services/selection.service.d.ts.map +1 -1
  156. package/types/canvas.d.ts +1 -1
  157. package/types/canvas.d.ts.map +1 -1
  158. package/types/cell.d.ts +3 -2
  159. package/types/cell.d.ts.map +1 -1
  160. package/types/component-config.d.ts +4 -2
  161. package/types/component-config.d.ts.map +1 -1
  162. package/types/field.d.ts +2 -1
  163. package/types/field.d.ts.map +1 -1
  164. package/types/grid.d.ts +4 -42
  165. package/types/grid.d.ts.map +1 -1
  166. package/types/index.d.ts +0 -1
  167. package/types/index.d.ts.map +1 -1
  168. package/types/layout.d.ts +2 -0
  169. package/types/layout.d.ts.map +1 -1
  170. package/utils/build.d.ts +2 -1
  171. package/utils/build.d.ts.map +1 -1
  172. package/utils/cell.d.ts +2 -2
  173. package/utils/cell.d.ts.map +1 -1
  174. package/utils/clipboard/copy.d.ts.map +1 -1
  175. package/utils/clipboard/paste.d.ts +2 -2
  176. package/utils/clipboard/paste.d.ts.map +1 -1
  177. package/utils/common.d.ts +0 -1
  178. package/utils/common.d.ts.map +1 -1
  179. package/utils/field/field-operable.d.ts +17 -0
  180. package/utils/field/field-operable.d.ts.map +1 -0
  181. package/utils/field/field.d.ts +4 -0
  182. package/utils/field/field.d.ts.map +1 -0
  183. package/utils/field/index.d.ts +4 -0
  184. package/utils/field/index.d.ts.map +1 -0
  185. package/utils/field/model/attachment.d.ts +5 -6
  186. package/utils/field/model/attachment.d.ts.map +1 -1
  187. package/utils/field/model/date.d.ts +4 -6
  188. package/utils/field/model/date.d.ts.map +1 -1
  189. package/utils/field/model/index.d.ts +11 -3
  190. package/utils/field/model/index.d.ts.map +1 -1
  191. package/utils/field/model/link.d.ts +3 -7
  192. package/utils/field/model/link.d.ts.map +1 -1
  193. package/utils/field/model/member.d.ts +4 -6
  194. package/utils/field/model/member.d.ts.map +1 -1
  195. package/utils/field/model/number.d.ts +4 -6
  196. package/utils/field/model/number.d.ts.map +1 -1
  197. package/utils/field/model/progress.d.ts +4 -6
  198. package/utils/field/model/progress.d.ts.map +1 -1
  199. package/utils/field/model/rate.d.ts +4 -5
  200. package/utils/field/model/rate.d.ts.map +1 -1
  201. package/utils/field/model/rich-text.d.ts +5 -5
  202. package/utils/field/model/rich-text.d.ts.map +1 -1
  203. package/utils/field/model/select.d.ts +5 -5
  204. package/utils/field/model/select.d.ts.map +1 -1
  205. package/utils/field/model/text.d.ts +3 -5
  206. package/utils/field/model/text.d.ts.map +1 -1
  207. package/utils/field/operate.d.ts +7 -0
  208. package/utils/field/operate.d.ts.map +1 -1
  209. package/utils/hover-cell.d.ts +1 -1
  210. package/utils/index.d.ts +1 -2
  211. package/utils/index.d.ts.map +1 -1
  212. package/utils/match-keywords.d.ts +2 -2
  213. package/utils/match-keywords.d.ts.map +1 -1
  214. package/utils/position.d.ts +3 -2
  215. package/utils/position.d.ts.map +1 -1
  216. package/utils/visible-range.d.ts +2 -1
  217. package/utils/visible-range.d.ts.map +1 -1
  218. package/esm2022/types/view.mjs +0 -18
  219. package/esm2022/utils/field/model/field.mjs +0 -37
  220. package/types/view.d.ts +0 -23
  221. package/types/view.d.ts.map +0 -1
  222. package/utils/field/model/field.d.ts +0 -21
  223. package/utils/field/model/field.d.ts.map +0 -1
@@ -25,11 +25,12 @@ import { Transformer } from 'konva/lib/shapes/Transformer';
25
25
  import { Wedge } from 'konva/lib/shapes/Wedge';
26
26
  import * as i1$1 from 'ngx-tethys/popover';
27
27
  import { ThyPopoverRef, ThyPopover, ThyPopoverModule } from 'ngx-tethys/popover';
28
+ import { AITableFieldType, AITableRowColumnType, AITableSelectOptionStyle, DragType, AITableFilterOperation, AttachmentFieldBase, DateFieldBase, isDateValid, SelectFieldBase, LinkFieldBase, MemberFieldBase, NumberFieldBase, ProgressFieldBase, RateFieldBase, RichTextFieldBase, TextFieldBase, FieldModelBaseMap } from '@ai-table/utils';
28
29
  import ObjectID from 'bson-objectid';
29
30
  import { customAlphabet } from 'nanoid';
30
31
  import * as _ from 'lodash';
31
- import { isNumber, includes, values, isString, isNil } from 'lodash';
32
- import { isUndefinedOrNull, isArray, isEmpty as isEmpty$1, isObject, TinyDate, helpers } from 'ngx-tethys/util';
32
+ import { isNumber, includes, values, isString, isNil, isEmpty } from 'lodash';
33
+ import { isUndefinedOrNull, isArray, TinyDate, helpers, isEmpty as isEmpty$1 } from 'ngx-tethys/util';
33
34
  import * as i1 from '@angular/forms';
34
35
  import { FormsModule } from '@angular/forms';
35
36
  import { ThyDatePicker, ThyDatePickerFormatPipe } from 'ngx-tethys/date-picker';
@@ -493,139 +494,6 @@ const KoShapeTypes = {
493
494
  FastLayer
494
495
  };
495
496
 
496
- const Colors = {
497
- primary: '#6698FF',
498
- gray100: '#f5f5f5',
499
- gray200: '#eee',
500
- gray300: '#ddd',
501
- gray800: '#333',
502
- gray600: '#999',
503
- gray700: '#666',
504
- white: '#fff',
505
- black: '#000',
506
- transparent: 'transparent',
507
- gray80: '#fafafa',
508
- headSelectedBgColor: '#EAEFFA',
509
- itemActiveBgColor: '#6698ff1a',
510
- itemMatchBgColor: '#ff9f731a',
511
- waring: '#ffcd5d',
512
- success: '#73d897'
513
- };
514
-
515
- const AITable = {
516
- getColors() {
517
- return Colors;
518
- },
519
- getVisibleFields(aiTable) {
520
- return aiTable.gridData().fields.filter((field) => !field.hidden);
521
- },
522
- getVisibleRows(aiTable) {
523
- return aiTable.records();
524
- },
525
- getActiveCell(aiTable) {
526
- return aiTable.selection().activeCell;
527
- },
528
- getActiveRecordIds(aiTable) {
529
- const selectedRecords = aiTable.selection().selectedRecords;
530
- const selectedCells = aiTable.selection().selectedCells;
531
- let selectedRecordIds = [];
532
- if (selectedRecords.size > 0) {
533
- selectedRecordIds = [...selectedRecords.keys()];
534
- }
535
- else if (selectedCells.size > 0) {
536
- selectedRecordIds = [...selectedCells].map((item) => item.split(':')[0]);
537
- }
538
- else {
539
- selectedRecordIds = [];
540
- }
541
- return selectedRecordIds;
542
- },
543
- isCellVisible(aiTable, cell) {
544
- const visibleRowIndexMap = aiTable.context.visibleRowsIndexMap();
545
- const visibleColumnIndexMap = aiTable.context.visibleColumnsIndexMap();
546
- const [recordId, fieldId] = cell || [];
547
- const isVisible = visibleRowIndexMap.has(recordId) && visibleColumnIndexMap.has(fieldId);
548
- return isVisible;
549
- },
550
- getCellIndex(aiTable, cell) {
551
- const visibleRowIndexMap = aiTable.context.visibleRowsIndexMap();
552
- const visibleColumnIndexMap = aiTable.context.visibleColumnsIndexMap();
553
- if (AITable.isCellVisible(aiTable, cell)) {
554
- const [recordId, fieldId] = cell;
555
- return {
556
- rowIndex: visibleRowIndexMap.get(recordId),
557
- columnIndex: visibleColumnIndexMap.get(fieldId)
558
- };
559
- }
560
- return null;
561
- },
562
- isFrozenColumn(aiTable, columnIndex) {
563
- const frozenColumnCount = aiTable.context.frozenColumnCount();
564
- if (columnIndex <= frozenColumnCount - 1) {
565
- return true;
566
- }
567
- return false;
568
- }
569
- };
570
-
571
- var AITableFieldType;
572
- (function (AITableFieldType) {
573
- AITableFieldType["text"] = "text";
574
- AITableFieldType["richText"] = "rich_text";
575
- AITableFieldType["select"] = "select";
576
- AITableFieldType["number"] = "number";
577
- AITableFieldType["date"] = "date";
578
- AITableFieldType["member"] = "member";
579
- AITableFieldType["progress"] = "progress";
580
- AITableFieldType["rate"] = "rate";
581
- AITableFieldType["link"] = "link";
582
- AITableFieldType["attachment"] = "attachment";
583
- AITableFieldType["createdAt"] = "created_at";
584
- AITableFieldType["updatedAt"] = "updated_at";
585
- AITableFieldType["createdBy"] = "created_by";
586
- AITableFieldType["updatedBy"] = "updated_by";
587
- })(AITableFieldType || (AITableFieldType = {}));
588
- var AITableStatType;
589
- (function (AITableStatType) {
590
- AITableStatType[AITableStatType["None"] = 0] = "None";
591
- AITableStatType[AITableStatType["CountAll"] = 1] = "CountAll";
592
- AITableStatType[AITableStatType["Empty"] = 2] = "Empty";
593
- AITableStatType[AITableStatType["Filled"] = 3] = "Filled";
594
- AITableStatType[AITableStatType["Unique"] = 4] = "Unique";
595
- AITableStatType[AITableStatType["PercentEmpty"] = 5] = "PercentEmpty";
596
- AITableStatType[AITableStatType["PercentFilled"] = 6] = "PercentFilled";
597
- AITableStatType[AITableStatType["PercentUnique"] = 7] = "PercentUnique";
598
- AITableStatType[AITableStatType["Sum"] = 8] = "Sum";
599
- AITableStatType[AITableStatType["Average"] = 9] = "Average";
600
- AITableStatType[AITableStatType["Max"] = 10] = "Max";
601
- AITableStatType[AITableStatType["Min"] = 11] = "Min";
602
- AITableStatType[AITableStatType["DateRangeOfDays"] = 12] = "DateRangeOfDays";
603
- AITableStatType[AITableStatType["DateRangeOfMonths"] = 13] = "DateRangeOfMonths";
604
- AITableStatType[AITableStatType["Checked"] = 14] = "Checked";
605
- AITableStatType[AITableStatType["UnChecked"] = 15] = "UnChecked";
606
- AITableStatType[AITableStatType["PercentChecked"] = 16] = "PercentChecked";
607
- AITableStatType[AITableStatType["PercentUnChecked"] = 17] = "PercentUnChecked";
608
- })(AITableStatType || (AITableStatType = {}));
609
- var AITableSelectOptionStyle;
610
- (function (AITableSelectOptionStyle) {
611
- AITableSelectOptionStyle[AITableSelectOptionStyle["text"] = 1] = "text";
612
- AITableSelectOptionStyle[AITableSelectOptionStyle["tag"] = 2] = "tag";
613
- AITableSelectOptionStyle[AITableSelectOptionStyle["dot"] = 3] = "dot";
614
- AITableSelectOptionStyle[AITableSelectOptionStyle["piece"] = 4] = "piece";
615
- })(AITableSelectOptionStyle || (AITableSelectOptionStyle = {}));
616
- var Direction;
617
- (function (Direction) {
618
- Direction["before"] = "before";
619
- Direction["after"] = "after";
620
- })(Direction || (Direction = {}));
621
- var DragType;
622
- (function (DragType) {
623
- DragType["record"] = "record";
624
- DragType["field"] = "field";
625
- DragType["columnWidth"] = "columnWidth";
626
- DragType["none"] = "none";
627
- })(DragType || (DragType = {}));
628
-
629
497
  var AITableGridI18nKey;
630
498
  (function (AITableGridI18nKey) {
631
499
  AITableGridI18nKey["dataPickerPlaceholder"] = "dataPickerPlaceholder";
@@ -818,86 +686,6 @@ function getFieldOptions(aiTable) {
818
686
  ];
819
687
  }
820
688
 
821
- var AITableAvatarSize;
822
- (function (AITableAvatarSize) {
823
- AITableAvatarSize[AITableAvatarSize["size16"] = 16] = "size16";
824
- AITableAvatarSize[AITableAvatarSize["size20"] = 22] = "size20";
825
- AITableAvatarSize[AITableAvatarSize["size24"] = 24] = "size24";
826
- AITableAvatarSize[AITableAvatarSize["size28"] = 28] = "size28";
827
- AITableAvatarSize[AITableAvatarSize["size32"] = 32] = "size32";
828
- AITableAvatarSize[AITableAvatarSize["size36"] = 36] = "size36";
829
- AITableAvatarSize[AITableAvatarSize["size44"] = 44] = "size44";
830
- AITableAvatarSize[AITableAvatarSize["size48"] = 48] = "size48";
831
- AITableAvatarSize[AITableAvatarSize["size68"] = 68] = "size68";
832
- AITableAvatarSize[AITableAvatarSize["size110"] = 110] = "size110";
833
- AITableAvatarSize[AITableAvatarSize["size160"] = 160] = "size160";
834
- })(AITableAvatarSize || (AITableAvatarSize = {}));
835
- var AITableAvatarType;
836
- (function (AITableAvatarType) {
837
- AITableAvatarType[AITableAvatarType["member"] = 0] = "member";
838
- AITableAvatarType[AITableAvatarType["space"] = 1] = "space";
839
- AITableAvatarType[AITableAvatarType["team"] = 2] = "team";
840
- })(AITableAvatarType || (AITableAvatarType = {}));
841
- var AITableMemberType;
842
- (function (AITableMemberType) {
843
- AITableMemberType[AITableMemberType["team"] = 1] = "team";
844
- AITableMemberType[AITableMemberType["role"] = 2] = "role";
845
- AITableMemberType[AITableMemberType["member"] = 3] = "member";
846
- })(AITableMemberType || (AITableMemberType = {}));
847
-
848
- var AITableMouseDownType;
849
- (function (AITableMouseDownType) {
850
- AITableMouseDownType[AITableMouseDownType["Left"] = 0] = "Left";
851
- AITableMouseDownType[AITableMouseDownType["Center"] = 1] = "Center";
852
- AITableMouseDownType[AITableMouseDownType["Right"] = 2] = "Right";
853
- })(AITableMouseDownType || (AITableMouseDownType = {}));
854
-
855
- var AITableRowColumnType;
856
- (function (AITableRowColumnType) {
857
- AITableRowColumnType["row"] = "row";
858
- AITableRowColumnType["column"] = "column";
859
- })(AITableRowColumnType || (AITableRowColumnType = {}));
860
- var AITableCheckType;
861
- (function (AITableCheckType) {
862
- AITableCheckType["checked"] = "checked";
863
- AITableCheckType["unchecked"] = "unchecked";
864
- })(AITableCheckType || (AITableCheckType = {}));
865
- var AITableAreaType;
866
- (function (AITableAreaType) {
867
- AITableAreaType["grid"] = "grid";
868
- AITableAreaType["none"] = "none";
869
- })(AITableAreaType || (AITableAreaType = {}));
870
- var AITableSelectAllState;
871
- (function (AITableSelectAllState) {
872
- AITableSelectAllState["all"] = "all";
873
- AITableSelectAllState["partial"] = "partial";
874
- AITableSelectAllState["none"] = "none";
875
- })(AITableSelectAllState || (AITableSelectAllState = {}));
876
-
877
- var AITableRowType;
878
- (function (AITableRowType) {
879
- AITableRowType["add"] = "add";
880
- AITableRowType["record"] = "record";
881
- })(AITableRowType || (AITableRowType = {}));
882
-
883
- var AITableFilterOperation;
884
- (function (AITableFilterOperation) {
885
- AITableFilterOperation["eq"] = "eq";
886
- AITableFilterOperation["gte"] = "gte";
887
- AITableFilterOperation["lte"] = "lte";
888
- AITableFilterOperation["gt"] = "gt";
889
- AITableFilterOperation["lt"] = "lt";
890
- AITableFilterOperation["in"] = "in";
891
- AITableFilterOperation["contain"] = "contain";
892
- AITableFilterOperation["ne"] = "ne";
893
- AITableFilterOperation["nin"] = "nin";
894
- AITableFilterOperation["between"] = "between";
895
- AITableFilterOperation["besides"] = "besides";
896
- AITableFilterOperation["empty"] = "empty";
897
- AITableFilterOperation["exists"] = "exists";
898
- AITableFilterOperation["notContain"] = "not_contain";
899
- })(AITableFilterOperation || (AITableFilterOperation = {}));
900
-
901
689
  /**
902
690
  * 用于构建 Canvas 基础坐标系,后续的绘制工作以此为基础
903
691
  */
@@ -1119,6 +907,81 @@ class Coordinate {
1119
907
  }
1120
908
  }
1121
909
 
910
+ const Colors = {
911
+ primary: '#6698FF',
912
+ gray100: '#f5f5f5',
913
+ gray200: '#eee',
914
+ gray300: '#ddd',
915
+ gray800: '#333',
916
+ gray600: '#999',
917
+ gray700: '#666',
918
+ white: '#fff',
919
+ black: '#000',
920
+ transparent: 'transparent',
921
+ gray80: '#fafafa',
922
+ headSelectedBgColor: '#EAEFFA',
923
+ itemActiveBgColor: '#6698ff1a',
924
+ itemMatchBgColor: '#ff9f731a',
925
+ waring: '#ffcd5d',
926
+ success: '#73d897'
927
+ };
928
+
929
+ const AITable = {
930
+ getColors() {
931
+ return Colors;
932
+ },
933
+ getVisibleFields(aiTable) {
934
+ return aiTable.gridData().fields.filter((field) => !field.hidden);
935
+ },
936
+ getVisibleRows(aiTable) {
937
+ return aiTable.records();
938
+ },
939
+ getActiveCell(aiTable) {
940
+ return aiTable.selection().activeCell;
941
+ },
942
+ getActiveRecordIds(aiTable) {
943
+ const selectedRecords = aiTable.selection().selectedRecords;
944
+ const selectedCells = aiTable.selection().selectedCells;
945
+ let selectedRecordIds = [];
946
+ if (selectedRecords.size > 0) {
947
+ selectedRecordIds = [...selectedRecords.keys()];
948
+ }
949
+ else if (selectedCells.size > 0) {
950
+ selectedRecordIds = [...selectedCells].map((item) => item.split(':')[0]);
951
+ }
952
+ else {
953
+ selectedRecordIds = [];
954
+ }
955
+ return selectedRecordIds;
956
+ },
957
+ isCellVisible(aiTable, cell) {
958
+ const visibleRowIndexMap = aiTable.context.visibleRowsIndexMap();
959
+ const visibleColumnIndexMap = aiTable.context.visibleColumnsIndexMap();
960
+ const [recordId, fieldId] = cell || [];
961
+ const isVisible = visibleRowIndexMap.has(recordId) && visibleColumnIndexMap.has(fieldId);
962
+ return isVisible;
963
+ },
964
+ getCellIndex(aiTable, cell) {
965
+ const visibleRowIndexMap = aiTable.context.visibleRowsIndexMap();
966
+ const visibleColumnIndexMap = aiTable.context.visibleColumnsIndexMap();
967
+ if (AITable.isCellVisible(aiTable, cell)) {
968
+ const [recordId, fieldId] = cell;
969
+ return {
970
+ rowIndex: visibleRowIndexMap.get(recordId),
971
+ columnIndex: visibleColumnIndexMap.get(fieldId)
972
+ };
973
+ }
974
+ return null;
975
+ },
976
+ isFrozenColumn(aiTable, columnIndex) {
977
+ const frozenColumnCount = aiTable.context.frozenColumnCount();
978
+ if (columnIndex <= frozenColumnCount - 1) {
979
+ return true;
980
+ }
981
+ return false;
982
+ }
983
+ };
984
+
1122
985
  var AlphabetType;
1123
986
  (function (AlphabetType) {
1124
987
  AlphabetType[AlphabetType["url"] = 1] = "url";
@@ -1189,6 +1052,63 @@ function shortIdsCreator(count) {
1189
1052
  return shortId(undefined, 8, count);
1190
1053
  }
1191
1054
 
1055
+ var AITableAvatarSize;
1056
+ (function (AITableAvatarSize) {
1057
+ AITableAvatarSize[AITableAvatarSize["size16"] = 16] = "size16";
1058
+ AITableAvatarSize[AITableAvatarSize["size20"] = 22] = "size20";
1059
+ AITableAvatarSize[AITableAvatarSize["size24"] = 24] = "size24";
1060
+ AITableAvatarSize[AITableAvatarSize["size28"] = 28] = "size28";
1061
+ AITableAvatarSize[AITableAvatarSize["size32"] = 32] = "size32";
1062
+ AITableAvatarSize[AITableAvatarSize["size36"] = 36] = "size36";
1063
+ AITableAvatarSize[AITableAvatarSize["size44"] = 44] = "size44";
1064
+ AITableAvatarSize[AITableAvatarSize["size48"] = 48] = "size48";
1065
+ AITableAvatarSize[AITableAvatarSize["size68"] = 68] = "size68";
1066
+ AITableAvatarSize[AITableAvatarSize["size110"] = 110] = "size110";
1067
+ AITableAvatarSize[AITableAvatarSize["size160"] = 160] = "size160";
1068
+ })(AITableAvatarSize || (AITableAvatarSize = {}));
1069
+ var AITableAvatarType;
1070
+ (function (AITableAvatarType) {
1071
+ AITableAvatarType[AITableAvatarType["member"] = 0] = "member";
1072
+ AITableAvatarType[AITableAvatarType["space"] = 1] = "space";
1073
+ AITableAvatarType[AITableAvatarType["team"] = 2] = "team";
1074
+ })(AITableAvatarType || (AITableAvatarType = {}));
1075
+ var AITableMemberType;
1076
+ (function (AITableMemberType) {
1077
+ AITableMemberType[AITableMemberType["team"] = 1] = "team";
1078
+ AITableMemberType[AITableMemberType["role"] = 2] = "role";
1079
+ AITableMemberType[AITableMemberType["member"] = 3] = "member";
1080
+ })(AITableMemberType || (AITableMemberType = {}));
1081
+
1082
+ var AITableMouseDownType;
1083
+ (function (AITableMouseDownType) {
1084
+ AITableMouseDownType[AITableMouseDownType["Left"] = 0] = "Left";
1085
+ AITableMouseDownType[AITableMouseDownType["Center"] = 1] = "Center";
1086
+ AITableMouseDownType[AITableMouseDownType["Right"] = 2] = "Right";
1087
+ })(AITableMouseDownType || (AITableMouseDownType = {}));
1088
+
1089
+ var AITableCheckType;
1090
+ (function (AITableCheckType) {
1091
+ AITableCheckType["checked"] = "checked";
1092
+ AITableCheckType["unchecked"] = "unchecked";
1093
+ })(AITableCheckType || (AITableCheckType = {}));
1094
+ var AITableAreaType;
1095
+ (function (AITableAreaType) {
1096
+ AITableAreaType["grid"] = "grid";
1097
+ AITableAreaType["none"] = "none";
1098
+ })(AITableAreaType || (AITableAreaType = {}));
1099
+ var AITableSelectAllState;
1100
+ (function (AITableSelectAllState) {
1101
+ AITableSelectAllState["all"] = "all";
1102
+ AITableSelectAllState["partial"] = "partial";
1103
+ AITableSelectAllState["none"] = "none";
1104
+ })(AITableSelectAllState || (AITableSelectAllState = {}));
1105
+
1106
+ var AITableRowType;
1107
+ (function (AITableRowType) {
1108
+ AITableRowType["add"] = "add";
1109
+ AITableRowType["record"] = "record";
1110
+ })(AITableRowType || (AITableRowType = {}));
1111
+
1192
1112
  function createAITable(records, fields, gridData) {
1193
1113
  const aiTable = {
1194
1114
  records,
@@ -1371,7 +1291,8 @@ const AITableQueries = {
1371
1291
 
1372
1292
  class RendererContext {
1373
1293
  constructor(options) {
1374
- const { linearRows, pointPosition, scrollState, visibleColumnsIndexMap, visibleRowsIndexMap, frozenColumnCount, references, aiFieldConfig, scrollAction } = options;
1294
+ const { rowHeadWidth, linearRows, pointPosition, scrollState, visibleColumnsIndexMap, visibleRowsIndexMap, frozenColumnCount, references, aiFieldConfig, scrollAction } = options;
1295
+ this.rowHeadWidth = rowHeadWidth;
1375
1296
  this.linearRows = linearRows;
1376
1297
  this.pointPosition = pointPosition;
1377
1298
  this.scrollState = scrollState;
@@ -1634,6 +1555,7 @@ class LinkCellEditorComponent extends AbstractEditCellEditor {
1634
1555
  const action = this.elementRef.nativeElement.querySelector('.edit-icon');
1635
1556
  if (!event.relatedTarget?.contains(action)) {
1636
1557
  this.updateValue();
1558
+ this.closePopover();
1637
1559
  }
1638
1560
  }
1639
1561
  ngOnInit() {
@@ -2594,64 +2516,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2594
2516
  type: Injectable
2595
2517
  }], ctorParameters: () => [{ type: i1$1.ThyPopover }] });
2596
2518
 
2597
- /**
2598
- * 生成目标名称
2599
- */
2600
- const generateTargetName = ({ targetName, fieldId, recordId, mouseStyle, source }) => {
2601
- const flag = '$';
2602
- return `${targetName}.${fieldId || flag}.${recordId || flag}.${mouseStyle || flag}.${source || flag}`;
2603
- };
2604
- /**
2605
- * 取目标名称
2606
- */
2607
- const getTargetName = (targetName) => {
2608
- if (targetName == null || targetName === '')
2609
- return AI_TABLE_BLANK;
2610
- return targetName.split('.')[0];
2611
- };
2612
- /**
2613
- * Parse targetName for built-in information
2614
- */
2615
- const getDetailByTargetName = (_targetName) => {
2616
- if (_targetName == null) {
2617
- return {
2618
- targetName: null,
2619
- fieldId: null,
2620
- recordId: null,
2621
- mouseStyle: null
2622
- };
2623
- }
2624
- const flag = '$';
2625
- const [targetName, fieldId, recordId, mouseStyle, source] = _targetName.split('.');
2626
- return {
2627
- targetName,
2628
- fieldId: fieldId === flag ? null : fieldId,
2629
- recordId: recordId === flag ? null : recordId,
2630
- mouseStyle: mouseStyle === flag ? null : mouseStyle,
2631
- source: source === flag ? null : source
2632
- };
2633
- };
2634
- /**
2635
- * 转换为字符串
2636
- * @param value
2637
- * @returns
2638
- */
2639
- const castToString = (value) => {
2640
- if (value == null) {
2641
- return null;
2642
- }
2643
- return typeof value !== 'string' ? String(value) : value;
2644
- };
2645
- function isEmpty(value) {
2646
- if (isArray(value)) {
2647
- return isEmpty$1(value);
2648
- }
2649
- if (isObject(value)) {
2650
- return Reflect.ownKeys(value).length === 0;
2651
- }
2652
- return isUndefinedOrNull(value) || value === '';
2653
- }
2654
-
2655
2519
  const zhIntlCollator = typeof Intl !== 'undefined' ? new Intl.Collator('zh-CN') : undefined;
2656
2520
  function compareNumber(a, b) {
2657
2521
  if (isEmpty(a) && isEmpty(b)) {
@@ -2699,46 +2563,32 @@ function hasIntersect(array1, array2) {
2699
2563
  }
2700
2564
  return false;
2701
2565
  }
2702
-
2703
- class Field {
2704
- // 筛选
2705
- isMeetFilter(condition, cellValue, options) {
2706
- switch (condition.operation) {
2707
- case AITableFilterOperation.empty:
2708
- case AITableFilterOperation.exists: {
2709
- return this.isEmptyOrNot(condition.operation, cellValue);
2710
- }
2711
- default: {
2712
- return true;
2713
- }
2566
+ function isMeetFilter(condition, cellValue, options) {
2567
+ switch (condition.operation) {
2568
+ case AITableFilterOperation.empty:
2569
+ case AITableFilterOperation.exists: {
2570
+ return isEmptyOrNot(condition.operation, cellValue);
2714
2571
  }
2715
- }
2716
- cellFullText(transformValue, field, references) {
2717
- let fullText = [];
2718
- if (!isEmpty(transformValue)) {
2719
- fullText.push(String(transformValue));
2572
+ default: {
2573
+ return true;
2720
2574
  }
2721
- return fullText;
2722
2575
  }
2723
- isEmptyOrNot(operation, cellValue) {
2724
- switch (operation) {
2725
- case AITableFilterOperation.empty: {
2726
- return isEmpty(cellValue);
2727
- }
2728
- case AITableFilterOperation.exists: {
2729
- return !isEmpty(cellValue);
2730
- }
2731
- default: {
2732
- throw new Error('compare operator type error');
2733
- }
2576
+ }
2577
+ function isEmptyOrNot(operation, cellValue) {
2578
+ switch (operation) {
2579
+ case AITableFilterOperation.empty: {
2580
+ return isEmpty(cellValue);
2581
+ }
2582
+ case AITableFilterOperation.exists: {
2583
+ return !isEmpty(cellValue);
2584
+ }
2585
+ default: {
2586
+ throw new Error('compare operator type error');
2734
2587
  }
2735
2588
  }
2736
2589
  }
2737
2590
 
2738
- class AttachmentField extends Field {
2739
- isValid(cellValue) {
2740
- return Array.isArray(cellValue) || cellValue === null;
2741
- }
2591
+ class AttachmentField extends AttachmentFieldBase {
2742
2592
  isMeetFilter(condition, cellValue) {
2743
2593
  switch (condition.operation) {
2744
2594
  case AITableFilterOperation.empty:
@@ -2750,7 +2600,7 @@ class AttachmentField extends Field {
2750
2600
  case AITableFilterOperation.nin:
2751
2601
  return Array.isArray(condition.value) && !hasIntersect(cellValue, condition.value);
2752
2602
  default:
2753
- return super.isMeetFilter(condition, cellValue);
2603
+ return isMeetFilter(condition, cellValue);
2754
2604
  }
2755
2605
  }
2756
2606
  compare(cellValue1, cellValue2, references, sortKey, options) {
@@ -2758,21 +2608,6 @@ class AttachmentField extends Field {
2758
2608
  const value2 = cellValueToSortValue$5(cellValue2, options.field, references, sortKey);
2759
2609
  return compareString(value1, value2);
2760
2610
  }
2761
- cellFullText(transformValue, field, references) {
2762
- let fullText = [];
2763
- if (transformValue?.length && references) {
2764
- for (let index = 0; index < transformValue.length; index++) {
2765
- const attachmentInfo = references?.attachments[transformValue[index]];
2766
- if (!attachmentInfo) {
2767
- continue;
2768
- }
2769
- if (attachmentInfo.title) {
2770
- fullText.push(attachmentInfo.title);
2771
- }
2772
- }
2773
- }
2774
- return fullText;
2775
- }
2776
2611
  toFieldValue(plainText, targetField, originData, references) {
2777
2612
  return toAttachmentFieldValue(plainText, targetField, originData, references);
2778
2613
  }
@@ -2807,14 +2642,7 @@ function cellValueToSortValue$5(cellValue, field, references, sortKey = 'title')
2807
2642
  return values && values.length ? values.join(', ') : null;
2808
2643
  }
2809
2644
 
2810
- const isDateValid = (cellValue) => {
2811
- return ((cellValue && typeof cellValue === 'object' && 'timestamp' in cellValue && typeof cellValue.timestamp === 'number') ||
2812
- cellValue === null);
2813
- };
2814
- class DateField extends Field {
2815
- isValid(cellValue) {
2816
- return isDateValid(cellValue);
2817
- }
2645
+ class DateField extends DateFieldBase {
2818
2646
  isMeetFilter(condition, cellValue) {
2819
2647
  const [left, right] = this.getTimeRange(condition.value);
2820
2648
  if (isNil(cellValue)) {
@@ -2834,7 +2662,7 @@ class DateField extends Field {
2834
2662
  case AITableFilterOperation.between:
2835
2663
  return left <= cellValue.timestamp && cellValue.timestamp < right;
2836
2664
  default:
2837
- return super.isMeetFilter(condition, cellValue);
2665
+ return isMeetFilter(condition, cellValue);
2838
2666
  }
2839
2667
  }
2840
2668
  compare(cellValue1, cellValue2) {
@@ -2903,7 +2731,7 @@ function cellValueToSortValue$4(cellValue) {
2903
2731
  if (isNil(cellValue) || !isDateValid(cellValue)) {
2904
2732
  return 0;
2905
2733
  }
2906
- return cellValue?.timestamp;
2734
+ return cellValue?.timestamp ?? 0;
2907
2735
  }
2908
2736
  function transformDateValue(text) {
2909
2737
  const value = text.trim();
@@ -3167,7 +2995,7 @@ function buildClipboardContent(aiTable, fieldIds, recordIds) {
3167
2995
  return clipboardContent;
3168
2996
  }
3169
2997
 
3170
- class SelectField extends Field {
2998
+ class SelectField extends SelectFieldBase {
3171
2999
  isValid(cellValue) {
3172
3000
  return Array.isArray(cellValue) || cellValue === null;
3173
3001
  }
@@ -3182,7 +3010,7 @@ class SelectField extends Field {
3182
3010
  case AITableFilterOperation.nin:
3183
3011
  return Array.isArray(condition.value) && !hasIntersect(cellValue, condition.value);
3184
3012
  default:
3185
- return super.isMeetFilter(condition, cellValue);
3013
+ return isMeetFilter(condition, cellValue);
3186
3014
  }
3187
3015
  }
3188
3016
  compare(cellValue1, cellValue2, references, sortKey, options) {
@@ -3190,19 +3018,6 @@ class SelectField extends Field {
3190
3018
  const value2 = cellValueToSortValue$3(cellValue2, options.field);
3191
3019
  return compareString(value1, value2);
3192
3020
  }
3193
- cellFullText(transformValue, field) {
3194
- let fullText = [];
3195
- const optionsMap = helpers.keyBy(field.settings.options || [], '_id');
3196
- if (transformValue && Array.isArray(transformValue) && transformValue.length) {
3197
- transformValue.forEach((optionId) => {
3198
- const option = optionsMap[optionId];
3199
- if (option && option.text) {
3200
- fullText.push(option.text);
3201
- }
3202
- });
3203
- }
3204
- return fullText;
3205
- }
3206
3021
  toFieldValue(plainText, targetField, originData) {
3207
3022
  return toSelectFieldValue(plainText, targetField, originData);
3208
3023
  }
@@ -3491,13 +3306,7 @@ const writeToAITable = async (aiTable, actions) => {
3491
3306
  return isPasteSuccess;
3492
3307
  };
3493
3308
 
3494
- const isLinkValid = (cellValue) => {
3495
- return (cellValue && typeof cellValue === 'object' && 'url' in cellValue && 'text' in cellValue) || cellValue === null;
3496
- };
3497
- class LinkField extends Field {
3498
- isValid(cellValue) {
3499
- return isLinkValid(cellValue);
3500
- }
3309
+ class LinkField extends LinkFieldBase {
3501
3310
  isMeetFilter(condition, cellValue) {
3502
3311
  if (cellValue === null) {
3503
3312
  if (condition.operation === AITableFilterOperation.empty) {
@@ -3516,19 +3325,12 @@ class LinkField extends Field {
3516
3325
  case AITableFilterOperation.contain:
3517
3326
  return !isNil(cellTextValue) && stringInclude(cellTextValue, condition.value);
3518
3327
  default:
3519
- return super.isMeetFilter(condition, cellTextValue);
3328
+ return isMeetFilter(condition, cellTextValue);
3520
3329
  }
3521
3330
  }
3522
3331
  compare(cellValue1, cellValue2) {
3523
3332
  return compareString(cellValueToSortValue$2(cellValue1), cellValueToSortValue$2(cellValue2));
3524
3333
  }
3525
- cellFullText(transformValue) {
3526
- let texts = [];
3527
- if (!isNil(transformValue)) {
3528
- texts.push(transformValue.text);
3529
- }
3530
- return texts;
3531
- }
3532
3334
  toFieldValue(plainText, targetField, originData) {
3533
3335
  return toLinkFieldValue(plainText, targetField, originData);
3534
3336
  }
@@ -3556,10 +3358,7 @@ function cellValueToSortValue$2(cellValue) {
3556
3358
  return (cellValue && cellValue.text && cellValue.text.trim()) || null;
3557
3359
  }
3558
3360
 
3559
- class MemberField extends Field {
3560
- isValid(cellValue) {
3561
- return Array.isArray(cellValue) || cellValue === null;
3562
- }
3361
+ class MemberField extends MemberFieldBase {
3563
3362
  isMeetFilter(condition, cellValue) {
3564
3363
  switch (condition.operation) {
3565
3364
  case AITableFilterOperation.empty:
@@ -3571,7 +3370,7 @@ class MemberField extends Field {
3571
3370
  case AITableFilterOperation.nin:
3572
3371
  return Array.isArray(condition.value) && !hasIntersect(cellValue, condition.value);
3573
3372
  default:
3574
- return super.isMeetFilter(condition, cellValue);
3373
+ return isMeetFilter(condition, cellValue);
3575
3374
  }
3576
3375
  }
3577
3376
  compare(cellValue1, cellValue2, references, sortKey, options) {
@@ -3579,21 +3378,6 @@ class MemberField extends Field {
3579
3378
  const value2 = cellValueToSortValue$1(cellValue2, options.field, references, sortKey);
3580
3379
  return compareString(value1, value2);
3581
3380
  }
3582
- cellFullText(transformValue, field, references) {
3583
- let fullText = [];
3584
- if (transformValue?.length && references) {
3585
- for (let index = 0; index < transformValue.length; index++) {
3586
- const userInfo = references?.members[transformValue[index]];
3587
- if (!userInfo) {
3588
- continue;
3589
- }
3590
- if (userInfo.display_name) {
3591
- fullText.push(userInfo.display_name);
3592
- }
3593
- }
3594
- }
3595
- return fullText;
3596
- }
3597
3381
  toFieldValue(plainText, targetField, originData, references) {
3598
3382
  return toMemberFieldValue(plainText, targetField, originData, references);
3599
3383
  }
@@ -3653,13 +3437,7 @@ function cellValueToSortValue$1(cellValue, field, references, sortKey = 'display
3653
3437
  return values && values.length ? values.join(', ') : null;
3654
3438
  }
3655
3439
 
3656
- const isNumberValid = (cellValue) => {
3657
- return typeof cellValue === 'number' || cellValue === null;
3658
- };
3659
- class NumberField extends Field {
3660
- isValid(cellValue) {
3661
- return isNumberValid(cellValue);
3662
- }
3440
+ class NumberField extends NumberFieldBase {
3663
3441
  isMeetFilter(condition, cellValue) {
3664
3442
  switch (condition.operation) {
3665
3443
  case AITableFilterOperation.empty:
@@ -3679,7 +3457,7 @@ class NumberField extends Field {
3679
3457
  case AITableFilterOperation.ne:
3680
3458
  return cellValue == null || Number.isNaN(condition.value) || cellValue !== condition.value;
3681
3459
  default:
3682
- return super.isMeetFilter(condition, cellValue);
3460
+ return isMeetFilter(condition, cellValue);
3683
3461
  }
3684
3462
  }
3685
3463
  compare(cellValue1, cellValue2) {
@@ -3715,16 +3493,13 @@ function toNumberFieldValue(plainText, targetField, originData) {
3715
3493
  return null;
3716
3494
  }
3717
3495
 
3718
- class ProgressField extends Field {
3719
- isValid(cellValue) {
3720
- return typeof cellValue === 'number' || cellValue === null;
3721
- }
3496
+ class ProgressField extends ProgressFieldBase {
3722
3497
  isMeetFilter(condition, cellValue) {
3723
3498
  switch (condition.operation) {
3724
3499
  case AITableFilterOperation.empty:
3725
- return isEmpty(cellValue);
3500
+ return isEmpty$1(cellValue);
3726
3501
  case AITableFilterOperation.exists:
3727
- return !isEmpty(cellValue);
3502
+ return !isEmpty$1(cellValue);
3728
3503
  case AITableFilterOperation.eq:
3729
3504
  return !Number.isNaN(condition.value) && cellValue != null && condition.value === cellValue;
3730
3505
  case AITableFilterOperation.gte:
@@ -3738,19 +3513,12 @@ class ProgressField extends Field {
3738
3513
  case AITableFilterOperation.ne:
3739
3514
  return cellValue == null || Number.isNaN(condition.value) || cellValue !== condition.value;
3740
3515
  default:
3741
- return super.isMeetFilter(condition, cellValue);
3516
+ return isMeetFilter(condition, cellValue);
3742
3517
  }
3743
3518
  }
3744
3519
  compare(cellValue1, cellValue2) {
3745
3520
  return compareNumber(cellValue1, cellValue2);
3746
3521
  }
3747
- cellFullText(transformValue) {
3748
- let fullText = [];
3749
- if (!isEmpty(transformValue)) {
3750
- fullText.push(`${transformValue}%`);
3751
- }
3752
- return fullText;
3753
- }
3754
3522
  toFieldValue(plainText, targetField, originData) {
3755
3523
  return toProgressFieldValue(plainText, targetField, originData);
3756
3524
  }
@@ -3779,7 +3547,7 @@ function toProgressFieldValue(plainText, targetField, originData) {
3779
3547
  if (progressRegex.test(value)) {
3780
3548
  value = parseFloat(value);
3781
3549
  }
3782
- if (!isEmpty(value)) {
3550
+ if (!isEmpty$1(value)) {
3783
3551
  let progressValue = Number(value);
3784
3552
  if (!Number.isNaN(progressValue)) {
3785
3553
  progressValue = Math.round(progressValue);
@@ -3791,10 +3559,7 @@ function toProgressFieldValue(plainText, targetField, originData) {
3791
3559
  return null;
3792
3560
  }
3793
3561
 
3794
- class RateField extends Field {
3795
- isValid(cellValue) {
3796
- return isNumberValid(cellValue);
3797
- }
3562
+ class RateField extends RateFieldBase {
3798
3563
  isMeetFilter(condition, cellValue) {
3799
3564
  switch (condition.operation) {
3800
3565
  case AITableFilterOperation.empty:
@@ -3808,7 +3573,7 @@ class RateField extends Field {
3808
3573
  const noContain = condition.value.every((item) => String(item) !== String(cellValue));
3809
3574
  return isEmpty(cellValue) || noContain;
3810
3575
  default:
3811
- return super.isMeetFilter(condition, cellValue);
3576
+ return isMeetFilter(condition, cellValue);
3812
3577
  }
3813
3578
  }
3814
3579
  compare(cellValue1, cellValue2) {
@@ -3848,10 +3613,7 @@ function toRateFieldValue(plainText, targetField, originData) {
3848
3613
  return null;
3849
3614
  }
3850
3615
 
3851
- class RichTextField extends Field {
3852
- isValid(cellValue) {
3853
- return Array.isArray(cellValue) || cellValue === null;
3854
- }
3616
+ class RichTextField extends RichTextFieldBase {
3855
3617
  isMeetFilter(condition, cellValue, options) {
3856
3618
  const textValue = transformCellValue(options.aiTable, options.field, cellValue || []);
3857
3619
  switch (condition.operation) {
@@ -3862,7 +3624,7 @@ class RichTextField extends Field {
3862
3624
  case AITableFilterOperation.contain:
3863
3625
  return !isEmpty(textValue) && stringInclude(textValue, condition.value);
3864
3626
  default:
3865
- return super.isMeetFilter(condition, textValue);
3627
+ return isMeetFilter(condition, textValue);
3866
3628
  }
3867
3629
  }
3868
3630
  compare(cellValue1, cellValue2, references, sortKey, options) {
@@ -3884,10 +3646,7 @@ function toRichTextFieldValue(plainText, targetField, originData) {
3884
3646
  return null;
3885
3647
  }
3886
3648
 
3887
- class TextField extends Field {
3888
- isValid(cellValue) {
3889
- return typeof cellValue === 'string' || cellValue === null;
3890
- }
3649
+ class TextField extends TextFieldBase {
3891
3650
  isMeetFilter(condition, cellValue) {
3892
3651
  switch (condition.operation) {
3893
3652
  case AITableFilterOperation.empty:
@@ -3897,7 +3656,7 @@ class TextField extends Field {
3897
3656
  case AITableFilterOperation.contain:
3898
3657
  return !isNil(cellValue) && stringInclude(cellValue, condition.value);
3899
3658
  default:
3900
- return super.isMeetFilter(condition, cellValue);
3659
+ return isMeetFilter(condition, cellValue);
3901
3660
  }
3902
3661
  }
3903
3662
  compare(cellValue1, cellValue2) {
@@ -3917,6 +3676,7 @@ function cellValueToSortValue(cellValue) {
3917
3676
  }
3918
3677
 
3919
3678
  const FieldModelMap = {
3679
+ ...FieldModelBaseMap,
3920
3680
  [AITableFieldType.text]: new TextField(),
3921
3681
  [AITableFieldType.richText]: new RichTextField(),
3922
3682
  [AITableFieldType.select]: new SelectField(),
@@ -4007,6 +3767,55 @@ function getAvatarBgColor(name) {
4007
3767
  return colors[code % 9];
4008
3768
  }
4009
3769
 
3770
+ /**
3771
+ * 生成目标名称
3772
+ */
3773
+ const generateTargetName = ({ targetName, fieldId, recordId, mouseStyle, source }) => {
3774
+ const flag = '$';
3775
+ return `${targetName}.${fieldId || flag}.${recordId || flag}.${mouseStyle || flag}.${source || flag}`;
3776
+ };
3777
+ /**
3778
+ * 取目标名称
3779
+ */
3780
+ const getTargetName = (targetName) => {
3781
+ if (targetName == null || targetName === '')
3782
+ return AI_TABLE_BLANK;
3783
+ return targetName.split('.')[0];
3784
+ };
3785
+ /**
3786
+ * Parse targetName for built-in information
3787
+ */
3788
+ const getDetailByTargetName = (_targetName) => {
3789
+ if (_targetName == null) {
3790
+ return {
3791
+ targetName: null,
3792
+ fieldId: null,
3793
+ recordId: null,
3794
+ mouseStyle: null
3795
+ };
3796
+ }
3797
+ const flag = '$';
3798
+ const [targetName, fieldId, recordId, mouseStyle, source] = _targetName.split('.');
3799
+ return {
3800
+ targetName,
3801
+ fieldId: fieldId === flag ? null : fieldId,
3802
+ recordId: recordId === flag ? null : recordId,
3803
+ mouseStyle: mouseStyle === flag ? null : mouseStyle,
3804
+ source: source === flag ? null : source
3805
+ };
3806
+ };
3807
+ /**
3808
+ * 转换为字符串
3809
+ * @param value
3810
+ * @returns
3811
+ */
3812
+ const castToString = (value) => {
3813
+ if (value == null) {
3814
+ return null;
3815
+ }
3816
+ return typeof value !== 'string' ? String(value) : value;
3817
+ };
3818
+
4010
3819
  function getPlaceHolderCellsConfigs(options) {
4011
3820
  const { aiTable, coordinate, columnStartIndex, columnStopIndex, rowStartIndex, rowStopIndex } = options;
4012
3821
  const { linearRows } = aiTable.context;
@@ -4204,7 +4013,7 @@ const scrollMax = (aiTable, coordinate, visibleColumns) => {
4204
4013
  const scrollMaxWidth = visibleColumns.reduce((pre, cur) => {
4205
4014
  const index = visibleColumnIndexMap.get(cur._id);
4206
4015
  return pre + (isNumber(index) ? coordinate.getColumnWidth(index) : 0);
4207
- }, AI_TABLE_ROW_HEAD_WIDTH) + AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
4016
+ }, aiTable.context.rowHeadWidth()) + AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
4208
4017
  const scrollMaxHeight = coordinate.getRowOffset(coordinate.rowCount - 1) + 32;
4209
4018
  return { scrollMaxWidth: Math.max(scrollMaxWidth, coordinate.containerWidth), scrollMaxHeight };
4210
4019
  };
@@ -4214,7 +4023,7 @@ const getMousePosition = (aiTable, x, y, coordinate, fields, context, _targetNam
4214
4023
  const { scrollMaxWidth, scrollMaxHeight } = scrollMax(aiTable, coordinate, fields);
4215
4024
  const offsetTop = scrollTop + y;
4216
4025
  const rowIndex = coordinate.getRowStartIndex(offsetTop);
4217
- const offsetLeft = isWithinFrozenColumnBoundary(x, coordinate.frozenColumnWidth) ? x : scrollLeft + x;
4026
+ const offsetLeft = isWithinFrozenColumnBoundary(x, coordinate.frozenColumnWidth, context.rowHeadWidth()) ? x : scrollLeft + x;
4218
4027
  const columnIndex = coordinate.getColumnStartIndex(offsetLeft);
4219
4028
  const areaType = offsetLeft <= scrollMaxWidth && offsetTop <= scrollMaxHeight ? AITableAreaType.grid : AITableAreaType.none;
4220
4029
  const targetName = getTargetName(_targetName);
@@ -4230,9 +4039,9 @@ const getMousePosition = (aiTable, x, y, coordinate, fields, context, _targetNam
4230
4039
  y
4231
4040
  };
4232
4041
  };
4233
- const isWithinFrozenColumnBoundary = (x, frozenColumnWidth) => {
4234
- const max = AI_TABLE_ROW_HEAD_WIDTH + frozenColumnWidth;
4235
- const min = AI_TABLE_ROW_HEAD_WIDTH;
4042
+ const isWithinFrozenColumnBoundary = (x, frozenColumnWidth, rowHeadWidth) => {
4043
+ const max = rowHeadWidth + frozenColumnWidth;
4044
+ const min = rowHeadWidth;
4236
4045
  return x > min && x < max;
4237
4046
  };
4238
4047
  const getEditorSpace = (widthOrHeight) => {
@@ -5890,9 +5699,11 @@ class Layout extends Drawer {
5890
5699
  // 列数
5891
5700
  this.columnCount = 0;
5892
5701
  this.containerWidth = 0;
5702
+ this.rowHeadWidth = AI_TABLE_ROW_HEAD_WIDTH;
5703
+ this.hiddenIndexColumn = false;
5893
5704
  }
5894
5705
  // 用于初始化或重置布局的基本属性。这个方法通常在每次渲染新的一行或单元格时调用,确保布局信息是最新的
5895
- init({ x, y, rowIndex, columnIndex, rowHeight, columnWidth, columnCount, containerWidth }) {
5706
+ init({ x, y, rowIndex, columnIndex, rowHeight, columnWidth, columnCount, containerWidth, rowHeadWidth, hiddenIndexColumn }) {
5896
5707
  this.x = x;
5897
5708
  this.y = y;
5898
5709
  this.rowIndex = rowIndex;
@@ -5901,6 +5712,8 @@ class Layout extends Drawer {
5901
5712
  this.columnWidth = columnWidth;
5902
5713
  this.columnCount = columnCount;
5903
5714
  this.containerWidth = containerWidth;
5715
+ this.rowHeadWidth = rowHeadWidth;
5716
+ this.hiddenIndexColumn = hiddenIndexColumn;
5904
5717
  }
5905
5718
  // 当前单元格是否是行的第一列
5906
5719
  get isFirst() {
@@ -5967,20 +5780,20 @@ class AddRowLayout extends Layout {
5967
5780
  const frozenOffset = AI_TABLE_OFFSET;
5968
5781
  const fill = isHoverRow ? this.colors.gray80 : this.colors.transparent;
5969
5782
  this.rect({
5970
- x: frozenOffset + AI_TABLE_ROW_DRAG_ICON_WIDTH,
5783
+ x: this.hiddenIndexColumn ? frozenOffset : frozenOffset + AI_TABLE_ROW_DRAG_ICON_WIDTH,
5971
5784
  y: y + AI_TABLE_OFFSET,
5972
- width: columnWidth + AI_TABLE_ROW_HEAD_WIDTH - frozenOffset + 1,
5785
+ width: columnWidth + this.rowHeadWidth - frozenOffset + 1,
5973
5786
  height: rowHeight,
5974
5787
  fill
5975
5788
  });
5976
5789
  this.line({
5977
- x: frozenOffset + AI_TABLE_ROW_DRAG_ICON_WIDTH,
5790
+ x: this.hiddenIndexColumn ? frozenOffset : frozenOffset + AI_TABLE_ROW_DRAG_ICON_WIDTH,
5978
5791
  y,
5979
- points: [0, rowHeight, columnWidth + AI_TABLE_ROW_HEAD_WIDTH - frozenOffset + 1, rowHeight],
5792
+ points: [0, rowHeight, columnWidth + this.rowHeadWidth - frozenOffset + 1, rowHeight],
5980
5793
  stroke: this.colors.gray200
5981
5794
  });
5982
5795
  this.path({
5983
- x: AI_TABLE_CELL_PADDING + AI_TABLE_ROW_DRAG_ICON_WIDTH,
5796
+ x: this.hiddenIndexColumn ? AI_TABLE_CELL_PADDING : AI_TABLE_CELL_PADDING + AI_TABLE_ROW_DRAG_ICON_WIDTH,
5984
5797
  y: y + (rowHeight - AI_TABLE_ICON_COMMON_SIZE) / 2 - AI_TABLE_OFFSET,
5985
5798
  data: AddOutlinedPath,
5986
5799
  size: AI_TABLE_ROW_HEAD_SIZE,
@@ -7177,35 +6990,51 @@ class RecordRowLayout extends Layout {
7177
6990
  else if (isHoverRow) {
7178
6991
  fillBg = colors.gray80;
7179
6992
  }
7180
- this.customRect({
7181
- x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
7182
- y,
7183
- width: AI_TABLE_ROW_HEAD_WIDTH - AI_TABLE_OFFSET - AI_TABLE_ROW_DRAG_ICON_WIDTH,
7184
- height: rowHeight,
7185
- fill: fillBg,
7186
- strokes: {
7187
- right: colors.gray200,
7188
- bottom: colors.gray200
6993
+ if (!this.hiddenIndexColumn) {
6994
+ this.customRect({
6995
+ x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
6996
+ y,
6997
+ width: this.rowHeadWidth - AI_TABLE_OFFSET - AI_TABLE_ROW_DRAG_ICON_WIDTH,
6998
+ height: rowHeight,
6999
+ fill: fillBg,
7000
+ strokes: {
7001
+ right: colors.gray200,
7002
+ bottom: colors.gray200
7003
+ }
7004
+ });
7005
+ if (!isCheckedRow && !isHoverRow) {
7006
+ // 设置字体样式,居中绘制行号
7007
+ this.setStyle({ fontSize: DEFAULT_FONT_SIZE });
7008
+ this.text({
7009
+ x: (this.rowHeadWidth + AI_TABLE_ROW_DRAG_ICON_WIDTH) / 2,
7010
+ y: y + AI_TABLE_FIELD_HEAD_HEIGHT / 2,
7011
+ text: String(row.displayIndex),
7012
+ textAlign: DEFAULT_TEXT_ALIGN_CENTER,
7013
+ verticalAlign: DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE
7014
+ });
7189
7015
  }
7190
- });
7191
- // 第一列单元格
7192
- this.rect({
7193
- x: AI_TABLE_ROW_HEAD_WIDTH,
7194
- y,
7195
- width: columnWidth + AI_TABLE_OFFSET,
7196
- height: rowHeight,
7197
- fill: fill,
7198
- stroke: colors.gray200
7199
- });
7200
- if (!isCheckedRow && !isHoverRow) {
7201
- // 设置字体样式,居中绘制行号
7202
- this.setStyle({ fontSize: DEFAULT_FONT_SIZE });
7203
- this.text({
7204
- x: (AI_TABLE_ROW_HEAD_WIDTH + AI_TABLE_ROW_DRAG_ICON_WIDTH) / 2,
7205
- y: y + AI_TABLE_FIELD_HEAD_HEIGHT / 2,
7206
- text: String(row.displayIndex),
7207
- textAlign: DEFAULT_TEXT_ALIGN_CENTER,
7208
- verticalAlign: DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE
7016
+ // 第一列单元格
7017
+ this.rect({
7018
+ x: this.rowHeadWidth,
7019
+ y,
7020
+ width: columnWidth + AI_TABLE_OFFSET,
7021
+ height: rowHeight,
7022
+ fill: fill,
7023
+ stroke: colors.gray200
7024
+ });
7025
+ }
7026
+ else {
7027
+ // 第一列单元格
7028
+ this.customRect({
7029
+ x: this.rowHeadWidth,
7030
+ y,
7031
+ width: columnWidth + AI_TABLE_OFFSET,
7032
+ height: rowHeight,
7033
+ fill: fill,
7034
+ strokes: {
7035
+ right: colors.gray200,
7036
+ bottom: colors.gray200
7037
+ }
7209
7038
  });
7210
7039
  }
7211
7040
  if (this.isLast) {
@@ -7306,7 +7135,9 @@ const createCells = (config) => {
7306
7135
  columnWidth,
7307
7136
  rowHeight: AI_TABLE_FIELD_HEAD_HEIGHT,
7308
7137
  columnCount,
7309
- containerWidth: coordinate.containerWidth
7138
+ containerWidth: coordinate.containerWidth,
7139
+ rowHeadWidth: context.rowHeadWidth(),
7140
+ hiddenIndexColumn: !!context.aiFieldConfig()?.hiddenIndexColumn
7310
7141
  });
7311
7142
  addRowLayout.render({
7312
7143
  isHoverRow,
@@ -7326,7 +7157,9 @@ const createCells = (config) => {
7326
7157
  columnWidth,
7327
7158
  rowHeight,
7328
7159
  columnCount,
7329
- containerWidth: coordinate.containerWidth
7160
+ containerWidth: coordinate.containerWidth,
7161
+ rowHeadWidth: context.rowHeadWidth(),
7162
+ hiddenIndexColumn: !!context.aiFieldConfig()?.hiddenIndexColumn
7330
7163
  });
7331
7164
  recordRowLayout.render({
7332
7165
  row,
@@ -7913,20 +7746,43 @@ class AITableFrozenColumnHeads {
7913
7746
  constructor() {
7914
7747
  this.config = input.required();
7915
7748
  this.coordinate = computed(() => {
7916
- return this.config().coordinate;
7749
+ const config = this.config();
7750
+ if (!config)
7751
+ return null;
7752
+ return config.coordinate;
7753
+ });
7754
+ this.hiddenIndexColumn = computed(() => {
7755
+ const context = this.context();
7756
+ if (!context)
7757
+ return false;
7758
+ return context?.aiFieldConfig()?.hiddenIndexColumn;
7759
+ });
7760
+ this.context = computed(() => {
7761
+ const config = this.config();
7762
+ if (!config)
7763
+ return null;
7764
+ return config?.aiTable.context;
7917
7765
  });
7918
7766
  this.isChecked = computed(() => {
7919
- // 目前只需要展示全部选中和空的状态
7920
- return this.config().aiTable.selection().selectAllState === AITableSelectAllState.all;
7767
+ const config = this.config();
7768
+ if (!config)
7769
+ return false;
7770
+ return config.aiTable.selection().selectAllState === AITableSelectAllState.all;
7921
7771
  });
7922
7772
  this.fieldHeadHeight = computed(() => {
7923
- return this.coordinate().rowInitSize;
7773
+ const coord = this.coordinate();
7774
+ if (!coord)
7775
+ return 0;
7776
+ return coord.rowInitSize;
7924
7777
  });
7925
7778
  this.headConfigs = computed(() => {
7779
+ const coord = this.coordinate();
7780
+ if (!coord)
7781
+ return [];
7926
7782
  return createColumnHeads({
7927
7783
  ...this.config(),
7928
7784
  columnStartIndex: 0,
7929
- columnStopIndex: this.coordinate().frozenColumnCount - 1
7785
+ columnStopIndex: coord.frozenColumnCount - 1
7930
7786
  });
7931
7787
  });
7932
7788
  this.dragHeadBgConfig = computed(() => {
@@ -7940,28 +7796,39 @@ class AITableFrozenColumnHeads {
7940
7796
  };
7941
7797
  });
7942
7798
  this.numberHeadBgConfig = computed(() => {
7799
+ const ctx = this.context();
7800
+ if (!ctx)
7801
+ return { width: 0, height: 0 };
7943
7802
  return {
7944
7803
  x: AI_TABLE_OFFSET,
7945
7804
  y: AI_TABLE_OFFSET,
7946
- width: AI_TABLE_ROW_HEAD_WIDTH,
7805
+ width: ctx.rowHeadWidth() || 0,
7947
7806
  height: this.fieldHeadHeight(),
7948
7807
  fill: Colors.white,
7949
7808
  listening: false
7950
7809
  };
7951
7810
  });
7952
- this.topLineConfig = {
7953
- x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
7954
- y: AI_TABLE_OFFSET,
7955
- points: [0, 0, AI_TABLE_ROW_HEAD_WIDTH, 0],
7956
- stroke: Colors.gray200,
7957
- strokeWidth: 1,
7958
- listening: false
7959
- };
7811
+ this.topLineConfig = computed(() => {
7812
+ const ctx = this.context();
7813
+ if (!ctx)
7814
+ return { points: [0, 0, 0, 0] };
7815
+ return {
7816
+ x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
7817
+ y: AI_TABLE_OFFSET,
7818
+ points: [0, 0, ctx.rowHeadWidth(), 0],
7819
+ stroke: Colors.gray200,
7820
+ strokeWidth: 1,
7821
+ listening: false
7822
+ };
7823
+ });
7960
7824
  this.bottomLineConfig = computed(() => {
7825
+ const ctx = this.context();
7826
+ if (!ctx)
7827
+ return { points: [0, 0, 0, 0] };
7961
7828
  return {
7962
7829
  x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
7963
7830
  y: AI_TABLE_OFFSET,
7964
- points: [AI_TABLE_ROW_HEAD_WIDTH, this.fieldHeadHeight(), 0, this.fieldHeadHeight()],
7831
+ points: [ctx.rowHeadWidth(), this.fieldHeadHeight(), 0, this.fieldHeadHeight()],
7965
7832
  stroke: Colors.gray200,
7966
7833
  strokeWidth: 1,
7967
7834
  listening: false
@@ -7979,32 +7846,77 @@ class AITableFrozenColumnHeads {
7979
7846
  };
7980
7847
  });
7981
7848
  this.headBgConfig = computed(() => {
7982
- const { frozenColumnWidth } = this.coordinate();
7849
+ const coord = this.coordinate();
7850
+ const ctx = this.context();
7851
+ if (!coord || !ctx)
7852
+ return { width: 0, height: 0 };
7983
7853
  return {
7984
- x: AI_TABLE_ROW_HEAD_WIDTH,
7854
+ x: ctx.rowHeadWidth(),
7985
7855
  y: AI_TABLE_OFFSET,
7986
- width: frozenColumnWidth + AI_TABLE_OFFSET,
7856
+ width: coord.frozenColumnWidth + AI_TABLE_OFFSET,
7987
7857
  height: this.fieldHeadHeight(),
7988
7858
  stroke: Colors.gray200,
7989
- strokeWidth: 1,
7859
+ strokeWidth: this.hiddenIndexColumn() ? 0 : 1,
7990
7860
  fill: Colors.transparent,
7991
- listening: false
7861
+ listening: false,
7862
+ zIndex: 10
7992
7863
  };
7993
7864
  });
7865
+ this.cellLinesConfig = computed(() => {
7866
+ const coord = this.coordinate();
7867
+ const ctx = this.context();
7868
+ if (!coord || !ctx)
7869
+ return [];
7870
+ return [
7871
+ {
7872
+ x: ctx.rowHeadWidth(),
7873
+ y: AI_TABLE_OFFSET,
7874
+ points: [0, 0, coord.frozenColumnWidth + AI_TABLE_OFFSET, 0],
7875
+ stroke: Colors.gray200,
7876
+ strokeWidth: 1,
7877
+ listening: false,
7878
+ zIndex: 10
7879
+ },
7880
+ {
7881
+ x: ctx.rowHeadWidth(),
7882
+ y: AI_TABLE_OFFSET,
7883
+ points: [coord.frozenColumnWidth + AI_TABLE_OFFSET, 0, coord.frozenColumnWidth + AI_TABLE_OFFSET, this.fieldHeadHeight()],
7884
+ stroke: Colors.gray200,
7885
+ strokeWidth: 1,
7886
+ listening: false,
7887
+ zIndex: 10
7888
+ },
7889
+ {
7890
+ x: ctx.rowHeadWidth(),
7891
+ y: AI_TABLE_OFFSET,
7892
+ points: [0, this.fieldHeadHeight(), coord.frozenColumnWidth + AI_TABLE_OFFSET, this.fieldHeadHeight()],
7893
+ stroke: Colors.gray200,
7894
+ strokeWidth: 1,
7895
+ listening: false,
7896
+ zIndex: 10
7897
+ }
7898
+ ];
7899
+ });
7994
7900
  }
7995
7901
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableFrozenColumnHeads, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7996
7902
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AITableFrozenColumnHeads, isStandalone: true, selector: "ai-table-frozen-column-heads", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
7997
- <ko-rect [config]="dragHeadBgConfig()"></ko-rect>
7998
- <ko-rect [config]="numberHeadBgConfig()"></ko-rect>
7999
- <ko-line [config]="topLineConfig"></ko-line>
8000
- <ko-line [config]="bottomLineConfig()"></ko-line>
8001
- <ko-group>
8002
- <ai-table-icon [config]="iconConfig()"></ai-table-icon>
8003
- </ko-group>
7903
+ <ko-rect [config]="headBgConfig()"></ko-rect>
7904
+ @if (!hiddenIndexColumn()) {
7905
+ <ko-rect [config]="dragHeadBgConfig()"></ko-rect>
7906
+ <ko-rect [config]="numberHeadBgConfig()"></ko-rect>
7907
+ <ko-line [config]="topLineConfig()"></ko-line>
7908
+ <ko-line [config]="bottomLineConfig()"></ko-line>
7909
+ <ko-group>
7910
+ <ai-table-icon [config]="iconConfig()"></ai-table-icon>
7911
+ </ko-group>
7912
+ } @else {
7913
+ @for (lineConfig of cellLinesConfig(); track $index) {
7914
+ <ko-line [config]="lineConfig"></ko-line>
7915
+ }
7916
+ }
8004
7917
  @for (config of headConfigs(); track $index) {
8005
7918
  <ai-table-field-head [config]="config"></ai-table-field-head>
8006
7919
  }
8007
- <ko-rect [config]="headBgConfig()"></ko-rect>
8008
7920
  `, isInline: true, dependencies: [{ kind: "component", type: KoShape, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableFieldHead, selector: "ai-table-field-head", inputs: ["config"] }, { kind: "component", type: AITableIcon, selector: "ai-table-icon", inputs: ["config"] }, { kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8009
7921
  }
8010
7922
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableFrozenColumnHeads, decorators: [{
@@ -8012,17 +7924,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
8012
7924
  args: [{
8013
7925
  selector: 'ai-table-frozen-column-heads',
8014
7926
  template: `
8015
- <ko-rect [config]="dragHeadBgConfig()"></ko-rect>
8016
- <ko-rect [config]="numberHeadBgConfig()"></ko-rect>
8017
- <ko-line [config]="topLineConfig"></ko-line>
8018
- <ko-line [config]="bottomLineConfig()"></ko-line>
8019
- <ko-group>
8020
- <ai-table-icon [config]="iconConfig()"></ai-table-icon>
8021
- </ko-group>
7927
+ <ko-rect [config]="headBgConfig()"></ko-rect>
7928
+ @if (!hiddenIndexColumn()) {
7929
+ <ko-rect [config]="dragHeadBgConfig()"></ko-rect>
7930
+ <ko-rect [config]="numberHeadBgConfig()"></ko-rect>
7931
+ <ko-line [config]="topLineConfig()"></ko-line>
7932
+ <ko-line [config]="bottomLineConfig()"></ko-line>
7933
+ <ko-group>
7934
+ <ai-table-icon [config]="iconConfig()"></ai-table-icon>
7935
+ </ko-group>
7936
+ } @else {
7937
+ @for (lineConfig of cellLinesConfig(); track $index) {
7938
+ <ko-line [config]="lineConfig"></ko-line>
7939
+ }
7940
+ }
8022
7941
  @for (config of headConfigs(); track $index) {
8023
7942
  <ai-table-field-head [config]="config"></ai-table-field-head>
8024
7943
  }
8025
- <ko-rect [config]="headBgConfig()"></ko-rect>
8026
7944
  `,
8027
7945
  standalone: true,
8028
7946
  imports: [KoShape, AITableFieldHead, AITableIcon, KoContainer],
@@ -8145,7 +8063,7 @@ class AITableHoverRowHeads {
8145
8063
  y: coordinate.getRowOffset(rowIndex),
8146
8064
  bgConfig: {
8147
8065
  name: generateTargetName({ targetName: AI_TABLE_ROW_HEAD, recordId }),
8148
- width: AI_TABLE_ROW_HEAD_WIDTH + 1,
8066
+ width: context.rowHeadWidth() + 1,
8149
8067
  height: coordinate.rowHeight,
8150
8068
  fill: Colors.transparent
8151
8069
  }
@@ -8427,6 +8345,9 @@ class AITableRenderer {
8427
8345
  this.readonly = computed(() => {
8428
8346
  return this.config()?.readonly;
8429
8347
  });
8348
+ this.hiddenIndexColumn = computed(() => {
8349
+ return this.config()?.aiTable.context?.aiFieldConfig()?.hiddenIndexColumn;
8350
+ });
8430
8351
  this.rowDragDisabled = computed(() => {
8431
8352
  return this.config()?.rowDragDisabled;
8432
8353
  });
@@ -8446,7 +8367,7 @@ class AITableRenderer {
8446
8367
  return getVisibleRangeInfo(this.coordinate(), this.scrollState());
8447
8368
  });
8448
8369
  this.frozenAreaWidth = computed(() => {
8449
- return AI_TABLE_ROW_HEAD_WIDTH + this.coordinate().frozenColumnWidth;
8370
+ return this.config().aiTable.context.rowHeadWidth() + this.coordinate().frozenColumnWidth;
8450
8371
  });
8451
8372
  this.lastColumnWidth = computed(() => {
8452
8373
  return this.coordinate().getColumnWidth(this.visibleRangeInfo().columnStopIndex);
@@ -8573,7 +8494,7 @@ class AITableRenderer {
8573
8494
  this.koMouseleave.emit(e);
8574
8495
  }
8575
8496
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8576
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AITableRenderer, isStandalone: true, selector: "ai-table-renderer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { koMousemove: "koMousemove", koMousedown: "koMousedown", koMouseup: "koMouseup", koContextmenu: "koContextmenu", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick", koMouseleave: "koMouseleave" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoStage, selector: "ko-stage", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: KoShape, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableColumnHeads, selector: "ai-table-column-heads", inputs: ["config"] }, { kind: "component", type: AITableFrozenColumnHeads, selector: "ai-table-frozen-column-heads", inputs: ["config"] }, { kind: "component", type: AITableCells, selector: "ai-table-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenCells, selector: "ai-table-frozen-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenPlaceholderCells, selector: "ai-table-frozen-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableHoverCells, selector: "ai-table-hover-cell", inputs: ["config"] }, { kind: "component", type: AITablePlaceholderCells, selector: "ai-table-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableAddField, selector: "ai-table-add-field", inputs: ["config"] }, { kind: "component", type: AITableHoverRowHeads, selector: "ai-table-hover-row-heads", inputs: ["config"] }, { kind: "component", type: AITableOtherRows, selector: "ai-table-other-rows", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8497
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AITableRenderer, isStandalone: true, selector: "ai-table-renderer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { koMousemove: "koMousemove", koMousedown: "koMousedown", koMouseup: "koMouseup", koContextmenu: "koContextmenu", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick", koMouseleave: "koMouseleave" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoStage, selector: "ko-stage", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: KoShape, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableColumnHeads, selector: "ai-table-column-heads", inputs: ["config"] }, { kind: "component", type: AITableFrozenColumnHeads, selector: "ai-table-frozen-column-heads", inputs: ["config"] }, { kind: "component", type: AITableCells, selector: "ai-table-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenCells, selector: "ai-table-frozen-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenPlaceholderCells, selector: "ai-table-frozen-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableHoverCells, selector: "ai-table-hover-cell", inputs: ["config"] }, { kind: "component", type: AITablePlaceholderCells, selector: "ai-table-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableAddField, selector: "ai-table-add-field", inputs: ["config"] }, { kind: "component", type: AITableHoverRowHeads, selector: "ai-table-hover-row-heads", inputs: ["config"] }, { kind: "component", type: AITableOtherRows, selector: "ai-table-other-rows", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8577
8498
  }
8578
8499
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableRenderer, decorators: [{
8579
8500
  type: Component,
@@ -8591,7 +8512,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
8591
8512
  AITableAddField,
8592
8513
  AITableHoverRowHeads,
8593
8514
  AITableOtherRows
8594
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n" }]
8515
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n" }]
8595
8516
  }] });
8596
8517
 
8597
8518
  class AITableCellRate {
@@ -9168,7 +9089,8 @@ class AITableGridEventService {
9168
9089
  }
9169
9090
  openCellEditor(aiTable, options) {
9170
9091
  const { container, recordId, fieldId, isHoverEdit, references } = options;
9171
- const { component, isInternalComponent } = this.getEditorComponent(this.aiTable.fieldsMap()[fieldId].type);
9092
+ const fieldType = this.aiTable.fieldsMap()[fieldId].type;
9093
+ const { component, isInternalComponent } = this.getEditorComponent(fieldType);
9172
9094
  const offsetOriginPosition = this.getOriginPosition(aiTable, options);
9173
9095
  this.cellEditorPopoverRef = this.thyPopover.open(component, {
9174
9096
  viewContainerRef: isInternalComponent ? undefined : options?.viewContainerRef,
@@ -9186,7 +9108,7 @@ class AITableGridEventService {
9186
9108
  aiTable: aiTable
9187
9109
  },
9188
9110
  panelClass: 'grid-cell-editor',
9189
- outsideClosable: false,
9111
+ outsideClosable: fieldType === AITableFieldType.link ? true : false,
9190
9112
  hasBackdrop: false,
9191
9113
  manualClosure: true,
9192
9114
  animationDisabled: true,
@@ -9581,7 +9503,7 @@ class AITableDragComponent {
9581
9503
  if ((targetColumnIndex >= 0 && (targetColumnIndex - sourceColumnIndex > 1 || targetColumnIndex - sourceColumnIndex < 0)) ||
9582
9504
  isLastColumn) {
9583
9505
  let lineLeft = targetColumnStartX - scroll.x;
9584
- const lineForFrozenX = lineLeft - frozenColumnWidth - AI_TABLE_ROW_HEAD_WIDTH;
9506
+ const lineForFrozenX = lineLeft - frozenColumnWidth - aiTable.context.rowHeadWidth();
9585
9507
  if (lineForFrozenX < 0) {
9586
9508
  lineLeft = coordinate.getColumnOffset(0);
9587
9509
  targetColumnIndex = 0;
@@ -9783,7 +9705,7 @@ class AITableGrid extends AITableGridBase {
9783
9705
  rowCount: this.linearRows().length,
9784
9706
  columnCount: fields.length,
9785
9707
  rowInitSize: AI_TABLE_FIELD_HEAD_HEIGHT,
9786
- columnInitSize: AI_TABLE_ROW_HEAD_WIDTH,
9708
+ columnInitSize: this.aiTable.context.rowHeadWidth(),
9787
9709
  rowIndicesSizeMap: {},
9788
9710
  columnIndicesSizeMap: getColumnIndicesSizeMap(this.aiTable, fields),
9789
9711
  frozenColumnCount: this.frozenColumnCount()
@@ -9901,6 +9823,7 @@ class AITableGrid extends AITableGridBase {
9901
9823
  }
9902
9824
  initContext() {
9903
9825
  this.aiTable.context = new RendererContext({
9826
+ rowHeadWidth: computed(() => (this.aiFieldConfig()?.hiddenIndexColumn ? 0 : AI_TABLE_ROW_HEAD_WIDTH)),
9904
9827
  linearRows: this.linearRows,
9905
9828
  visibleColumnsIndexMap: this.visibleColumnsIndexMap,
9906
9829
  visibleRowsIndexMap: this.visibleRowsIndexMap,
@@ -10368,5 +10291,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
10368
10291
  * Generated bundle index. Do not edit.
10369
10292
  */
10370
10293
 
10371
- export { AITable, AITableAreaType, AITableAvatarSize, AITableAvatarType, AITableCheckType, AITableContextMenu, AITableDomGrid, AITableFieldIsSameOptionPipe, AITableFieldSetting, AITableFieldType, AITableFilterOperation, AITableGrid, AITableGridEventService, AITableGridFieldService, AITableGridI18nKey, AITableGridSelectionService, AITableMemberType, AITableMouseDownType, AITableQueries, AITableRenderer, AITableRowColumnType, AITableRowType, AITableSelectAllState, AITableSelectOptionStyle, AITableStatType, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_BLANK, AI_TABLE_CELL, AI_TABLE_CELL_ACTIVE_BORDER_WIDTH, AI_TABLE_CELL_ADD_ITEM_BUTTON_SIZE, AI_TABLE_CELL_ATTACHMENT_ADD, AI_TABLE_CELL_ATTACHMENT_FILE, AI_TABLE_CELL_BORDER, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE_OFFSET, AI_TABLE_CELL_EDIT, AI_TABLE_CELL_EMOJI_PADDING, AI_TABLE_CELL_EMOJI_SIZE, AI_TABLE_CELL_FIELD_ITEM_HEIGHT, AI_TABLE_CELL_MAX_ROW_COUNT, AI_TABLE_CELL_MEMBER_ITEM_HEIGHT, AI_TABLE_CELL_MEMBER_ITEM_PADDING, AI_TABLE_CELL_MEMBER_MAX_HEIGHT, AI_TABLE_CELL_MULTI_DOT_RADIUS, AI_TABLE_CELL_MULTI_ITEM_MARGIN_LEFT, AI_TABLE_CELL_MULTI_ITEM_MARGIN_TOP, AI_TABLE_CELL_MULTI_ITEM_MIN_WIDTH, AI_TABLE_CELL_MULTI_PADDING_LEFT, AI_TABLE_CELL_MULTI_PADDING_TOP, AI_TABLE_CELL_PADDING, AI_TABLE_COMMON_FONT_SIZE, AI_TABLE_DEFAULT_COLUMN_WIDTH, AI_TABLE_DOT_RADIUS, AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_OPACITY_LINE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_FIELD_HEAD_TEXT_MIN_WIDTH, AI_TABLE_FIELD_ITEM_MARGIN_RIGHT, AI_TABLE_FIELD_MAX_WIDTH, AI_TABLE_FIELD_MIDDLE_WIDTH, AI_TABLE_FIELD_MINI_WIDTH, AI_TABLE_FIELD_MIN_WIDTH, AI_TABLE_FILE_ICON_ITEM_HEIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_GRID_FIELD_SERVICE_MAP, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_MEMBER_AVATAR_SIZE, AI_TABLE_MEMBER_ITEM_AVATAR_MARGIN_RIGHT, AI_TABLE_MEMBER_ITEM_PADDING_RIGHT, AI_TABLE_MIN_TEXT_WIDTH, AI_TABLE_OFFSET, AI_TABLE_OPTION_ITEM_FONT_SIZE, AI_TABLE_OPTION_ITEM_HEIGHT, AI_TABLE_OPTION_ITEM_PADDING, AI_TABLE_OPTION_ITEM_RADIUS, AI_TABLE_PIECE_RADIUS, AI_TABLE_PIECE_WIDTH, AI_TABLE_POPOVER_LEFT_OFFSET, AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS, AI_TABLE_PROGRESS_BAR_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_WIDTH, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_TEXT_WIDTH, AI_TABLE_RATE_MAX, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_HEIGHT, AI_TABLE_ROW_SELECT_CHECKBOX, AI_TABLE_SCROLL_BAR_PADDING, AI_TABLE_TAG_FONT_SIZE, AI_TABLE_TAG_PADDING, AI_TABLE_TEXT_GAP, AbstractEditCellEditor, AddOutlinedPath, AttachmentPath, Check, Colors, ColumnCalendarFilledPath, ColumnLinkOutlinedPath, ColumnMemberFilledPath, ColumnMultipleFillPath, ColumnNumberFilledPath, ColumnProgressFilledPath, ColumnRatingFilledPath, ColumnRichTextFilledPath, ColumnSelectFilledPath, ColumnTextFilledPath, Coordinate, DBL_CLICK_EDIT_TYPE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_STYLE, DEFAULT_FONT_WEIGHT, DEFAULT_ICON_SHAPE, DEFAULT_ICON_SIZE, DEFAULT_POINT_POSITION, DEFAULT_SCROLL_STATE, DEFAULT_TEXT_ALIGN_CENTER, DEFAULT_TEXT_ALIGN_LEFT, DEFAULT_TEXT_ALIGN_RIGHT, DEFAULT_TEXT_DECORATION, DEFAULT_TEXT_ELLIPSIS, DEFAULT_TEXT_FILL, DEFAULT_TEXT_LINE_HEIGHT, DEFAULT_TEXT_LISTENING, DEFAULT_TEXT_MAX_CACHE, DEFAULT_TEXT_MAX_HEIGHT, DEFAULT_TEXT_SCALE, DEFAULT_TEXT_TRANSFORMS_ENABLED, DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE, DEFAULT_TEXT_VERTICAL_ALIGN_TOP, DEFAULT_TEXT_WRAP, DEFAULT_WRAP_TEXT_MAX_ROW, DateCellEditorComponent, DepartmentOutlinedPath, Direction, DragType, EditPath, FONT_SIZE_SM, FieldModelMap, GRID_CELL_EDITOR_MAP, IsSelectRecordPipe, KO_CONTAINER_TOKEN, KoComponent, KoContainer, KoShape, KoShapeTypes, KoStage, LinkCellEditorComponent, MIN_COLUMN_WIDTH, MemberSettingPipe, MoreStandOutlinedPath, NumberCellEditorComponent, RendererContext, RowDragPath, RowHeight, SelectCellEditorComponent, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, StarFill, TextCellEditorComponent, TextMeasure, Unchecked, UserPipe, WebOutlinedPath, aiTableFragmentAttribute, applyNodeProps, buildClipboardData, buildGridData, buildGridLinearRows, castToString, compareNumber, compareString, createAITable, createActiveCellBorder, createCells, createDefaultField, createDefaultFieldName, createListener, extractLinkUrl, extractText, generateNewName, generateTargetName, getAvatarBgColor, getAvatarShortName, getCellEditorBorderSpace, getCellHorizontalPosition, getColumnIndicesSizeMap, getDefaultFieldValue, getDefaultI18nTextByKey, getDetailByTargetName, getEditorBoxOffset, getEditorSpace, getFieldOptionByField, getFieldOptions, getFieldValue, getFileThumbnailSvgString, getHoverCell, getHoverEditorBoxOffset, getHoverEditorSpace, getI18nTextByKey, getMousePosition, getName, getPlaceHolderCellsConfigs, getSystemFieldValue, getTargetName, getTextWidth, getVisibleRangeInfo, handleMouseStyle, hasIntersect, idCreator, idsCreator, imageCache, isActiveCell, isArrayField, isCellMatchKeywords, isClipboardReadSupported, isClipboardReadTextSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isDateFiled, isEmpty, isMac, isNumberFiled, isSameFieldOption, isSelectedField, isSystemField, isWindows, isWindowsOS, isWithinFrozenColumnBoundary, readFromClipboard, scrollMax, setMouseStyle, shortIdCreator, shortIdsCreator, stringInclude, textDataCache, transformCellValue, updatePicture, writeToAITable, writeToClipboard, zhIntlCollator };
10294
+ export { AITable, AITableAreaType, AITableAvatarSize, AITableAvatarType, AITableCheckType, AITableContextMenu, AITableDomGrid, AITableFieldIsSameOptionPipe, AITableFieldSetting, AITableGrid, AITableGridEventService, AITableGridFieldService, AITableGridI18nKey, AITableGridSelectionService, AITableMemberType, AITableMouseDownType, AITableQueries, AITableRenderer, AITableRowType, AITableSelectAllState, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_BLANK, AI_TABLE_CELL, AI_TABLE_CELL_ACTIVE_BORDER_WIDTH, AI_TABLE_CELL_ADD_ITEM_BUTTON_SIZE, AI_TABLE_CELL_ATTACHMENT_ADD, AI_TABLE_CELL_ATTACHMENT_FILE, AI_TABLE_CELL_BORDER, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE_OFFSET, AI_TABLE_CELL_EDIT, AI_TABLE_CELL_EMOJI_PADDING, AI_TABLE_CELL_EMOJI_SIZE, AI_TABLE_CELL_FIELD_ITEM_HEIGHT, AI_TABLE_CELL_MAX_ROW_COUNT, AI_TABLE_CELL_MEMBER_ITEM_HEIGHT, AI_TABLE_CELL_MEMBER_ITEM_PADDING, AI_TABLE_CELL_MEMBER_MAX_HEIGHT, AI_TABLE_CELL_MULTI_DOT_RADIUS, AI_TABLE_CELL_MULTI_ITEM_MARGIN_LEFT, AI_TABLE_CELL_MULTI_ITEM_MARGIN_TOP, AI_TABLE_CELL_MULTI_ITEM_MIN_WIDTH, AI_TABLE_CELL_MULTI_PADDING_LEFT, AI_TABLE_CELL_MULTI_PADDING_TOP, AI_TABLE_CELL_PADDING, AI_TABLE_COMMON_FONT_SIZE, AI_TABLE_DEFAULT_COLUMN_WIDTH, AI_TABLE_DOT_RADIUS, AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_OPACITY_LINE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_FIELD_HEAD_TEXT_MIN_WIDTH, AI_TABLE_FIELD_ITEM_MARGIN_RIGHT, AI_TABLE_FIELD_MAX_WIDTH, AI_TABLE_FIELD_MIDDLE_WIDTH, AI_TABLE_FIELD_MINI_WIDTH, AI_TABLE_FIELD_MIN_WIDTH, AI_TABLE_FILE_ICON_ITEM_HEIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_GRID_FIELD_SERVICE_MAP, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_MEMBER_AVATAR_SIZE, AI_TABLE_MEMBER_ITEM_AVATAR_MARGIN_RIGHT, AI_TABLE_MEMBER_ITEM_PADDING_RIGHT, AI_TABLE_MIN_TEXT_WIDTH, AI_TABLE_OFFSET, AI_TABLE_OPTION_ITEM_FONT_SIZE, AI_TABLE_OPTION_ITEM_HEIGHT, AI_TABLE_OPTION_ITEM_PADDING, AI_TABLE_OPTION_ITEM_RADIUS, AI_TABLE_PIECE_RADIUS, AI_TABLE_PIECE_WIDTH, AI_TABLE_POPOVER_LEFT_OFFSET, AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS, AI_TABLE_PROGRESS_BAR_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_WIDTH, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_TEXT_WIDTH, AI_TABLE_RATE_MAX, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_HEIGHT, AI_TABLE_ROW_SELECT_CHECKBOX, AI_TABLE_SCROLL_BAR_PADDING, AI_TABLE_TAG_FONT_SIZE, AI_TABLE_TAG_PADDING, AI_TABLE_TEXT_GAP, AbstractEditCellEditor, AddOutlinedPath, AttachmentField, AttachmentPath, Check, Colors, ColumnCalendarFilledPath, ColumnLinkOutlinedPath, ColumnMemberFilledPath, ColumnMultipleFillPath, ColumnNumberFilledPath, ColumnProgressFilledPath, ColumnRatingFilledPath, ColumnRichTextFilledPath, ColumnSelectFilledPath, ColumnTextFilledPath, Coordinate, DBL_CLICK_EDIT_TYPE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_STYLE, DEFAULT_FONT_WEIGHT, DEFAULT_ICON_SHAPE, DEFAULT_ICON_SIZE, DEFAULT_POINT_POSITION, DEFAULT_SCROLL_STATE, DEFAULT_TEXT_ALIGN_CENTER, DEFAULT_TEXT_ALIGN_LEFT, DEFAULT_TEXT_ALIGN_RIGHT, DEFAULT_TEXT_DECORATION, DEFAULT_TEXT_ELLIPSIS, DEFAULT_TEXT_FILL, DEFAULT_TEXT_LINE_HEIGHT, DEFAULT_TEXT_LISTENING, DEFAULT_TEXT_MAX_CACHE, DEFAULT_TEXT_MAX_HEIGHT, DEFAULT_TEXT_SCALE, DEFAULT_TEXT_TRANSFORMS_ENABLED, DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE, DEFAULT_TEXT_VERTICAL_ALIGN_TOP, DEFAULT_TEXT_WRAP, DEFAULT_WRAP_TEXT_MAX_ROW, DateCellEditorComponent, DateField, DepartmentOutlinedPath, EditPath, FONT_SIZE_SM, FieldModelMap, GRID_CELL_EDITOR_MAP, IsSelectRecordPipe, KO_CONTAINER_TOKEN, KoComponent, KoContainer, KoShape, KoShapeTypes, KoStage, LinkCellEditorComponent, LinkField, MIN_COLUMN_WIDTH, MemberField, MemberSettingPipe, MoreStandOutlinedPath, NumberCellEditorComponent, NumberField, ProgressField, RateField, RendererContext, RichTextField, RowDragPath, RowHeight, SelectCellEditorComponent, SelectField, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, StarFill, TextCellEditorComponent, TextField, TextMeasure, Unchecked, UserPipe, WebOutlinedPath, aiTableFragmentAttribute, applyNodeProps, buildClipboardData, buildGridData, buildGridLinearRows, castToString, compareNumber, compareString, createAITable, createActiveCellBorder, createCells, createDefaultField, createDefaultFieldName, createListener, extractLinkUrl, extractText, generateNewName, generateTargetName, getAvatarBgColor, getAvatarShortName, getCellEditorBorderSpace, getCellHorizontalPosition, getColumnIndicesSizeMap, getDefaultFieldValue, getDefaultI18nTextByKey, getDetailByTargetName, getEditorBoxOffset, getEditorSpace, getFieldOptionByField, getFieldOptions, getFieldValue, getFileThumbnailSvgString, getHoverCell, getHoverEditorBoxOffset, getHoverEditorSpace, getI18nTextByKey, getMousePosition, getName, getPlaceHolderCellsConfigs, getSystemFieldValue, getTargetName, getTextWidth, getVisibleRangeInfo, handleMouseStyle, hasIntersect, idCreator, idsCreator, imageCache, isActiveCell, isArrayField, isCellMatchKeywords, isClipboardReadSupported, isClipboardReadTextSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isDateFiled, isEmptyOrNot, isMac, isMeetFilter, isNumberFiled, isSameFieldOption, isSelectedField, isSystemField, isWindows, isWindowsOS, isWithinFrozenColumnBoundary, processPastedValueForSelect, readFromClipboard, scrollMax, setMouseStyle, shortIdCreator, shortIdsCreator, stringInclude, textDataCache, toAttachmentFieldValue, toDateFieldValue, toLinkFieldValue, toMemberFieldValue, toNumberFieldValue, toProgressFieldValue, toRateFieldValue, toRichTextFieldValue, toSelectFieldValue, toTextFieldValue, transformCellValue, updatePicture, writeToAITable, writeToClipboard, zhIntlCollator };
10372
10295
  //# sourceMappingURL=ai-table-grid.mjs.map