@visactor/vtable 1.1.3-alpha.2 → 1.2.0-alpha.0

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 (149) hide show
  1. package/cjs/components/tooltip/TooltipHandler.js +4 -2
  2. package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
  3. package/cjs/components/tooltip/logic/BubbleTooltipElement.d.ts +2 -0
  4. package/cjs/components/tooltip/logic/BubbleTooltipElement.js +18 -4
  5. package/cjs/components/tooltip/logic/BubbleTooltipElement.js.map +1 -1
  6. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
  7. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
  8. package/cjs/core/BaseTable.d.ts +1 -0
  9. package/cjs/core/BaseTable.js +4 -1
  10. package/cjs/core/BaseTable.js.map +1 -1
  11. package/cjs/event/util.d.ts +1 -0
  12. package/cjs/event/util.js +3 -2
  13. package/cjs/event/util.js.map +1 -1
  14. package/cjs/index.d.ts +1 -1
  15. package/cjs/index.js +1 -1
  16. package/cjs/index.js.map +1 -1
  17. package/cjs/plugins/custom-cell-style.d.ts +1 -0
  18. package/cjs/plugins/custom-cell-style.js +6 -2
  19. package/cjs/plugins/custom-cell-style.js.map +1 -1
  20. package/cjs/scenegraph/animation/appear.d.ts +2 -0
  21. package/cjs/scenegraph/animation/appear.js +26 -0
  22. package/cjs/scenegraph/animation/appear.js.map +1 -0
  23. package/cjs/scenegraph/component/custom.d.ts +5 -2
  24. package/cjs/scenegraph/component/custom.js +36 -8
  25. package/cjs/scenegraph/component/custom.js.map +1 -1
  26. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +33 -22
  27. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  28. package/cjs/scenegraph/group-creater/cell-helper.js +6 -5
  29. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  30. package/cjs/scenegraph/group-creater/column-helper.js +1 -1
  31. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  32. package/cjs/scenegraph/icon/icon-update.js +1 -0
  33. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  34. package/cjs/scenegraph/layout/compute-col-width.js +2 -2
  35. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  36. package/cjs/scenegraph/layout/compute-row-height.js +1 -1
  37. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  38. package/cjs/scenegraph/layout/update-height.js +13 -3
  39. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  40. package/cjs/scenegraph/layout/update-width.js +13 -3
  41. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  42. package/cjs/scenegraph/scenegraph.js +8 -5
  43. package/cjs/scenegraph/scenegraph.js.map +1 -1
  44. package/cjs/scenegraph/utils/break-string.d.ts +4 -1
  45. package/cjs/scenegraph/utils/break-string.js +8 -4
  46. package/cjs/scenegraph/utils/break-string.js.map +1 -1
  47. package/cjs/scenegraph/utils/text-icon-layout.js +4 -2
  48. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  49. package/cjs/state/select/is-cell-select-highlight.d.ts +5 -0
  50. package/cjs/state/select/is-cell-select-highlight.js +51 -0
  51. package/cjs/state/select/is-cell-select-highlight.js.map +1 -0
  52. package/cjs/state/select/update-position.js +10 -5
  53. package/cjs/state/select/update-position.js.map +1 -1
  54. package/cjs/state/state.js +6 -4
  55. package/cjs/state/state.js.map +1 -1
  56. package/cjs/themes/DEFAULT.js +0 -2
  57. package/cjs/themes/DEFAULT.js.map +1 -1
  58. package/cjs/themes/theme.js +36 -0
  59. package/cjs/themes/theme.js.map +1 -1
  60. package/cjs/ts-types/animation/appear.d.ts +6 -0
  61. package/cjs/ts-types/animation/appear.js +6 -0
  62. package/cjs/ts-types/animation/appear.js.map +1 -0
  63. package/cjs/ts-types/base-table.d.ts +6 -0
  64. package/cjs/ts-types/base-table.js.map +1 -1
  65. package/cjs/ts-types/icon.d.ts +1 -0
  66. package/cjs/ts-types/icon.js.map +1 -1
  67. package/cjs/ts-types/table-engine.d.ts +5 -1
  68. package/cjs/ts-types/table-engine.js.map +1 -1
  69. package/cjs/ts-types/theme.d.ts +6 -0
  70. package/cjs/ts-types/theme.js.map +1 -1
  71. package/cjs/ts-types/tooltip.d.ts +1 -0
  72. package/cjs/ts-types/tooltip.js.map +1 -1
  73. package/cjs/vrender.js.map +1 -1
  74. package/dist/vtable.js +459 -102
  75. package/dist/vtable.min.js +2 -2
  76. package/es/components/tooltip/TooltipHandler.js +4 -2
  77. package/es/components/tooltip/TooltipHandler.js.map +1 -1
  78. package/es/components/tooltip/logic/BubbleTooltipElement.d.ts +2 -0
  79. package/es/components/tooltip/logic/BubbleTooltipElement.js +18 -4
  80. package/es/components/tooltip/logic/BubbleTooltipElement.js.map +1 -1
  81. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
  82. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
  83. package/es/core/BaseTable.d.ts +1 -0
  84. package/es/core/BaseTable.js +4 -1
  85. package/es/core/BaseTable.js.map +1 -1
  86. package/es/event/util.d.ts +1 -0
  87. package/es/event/util.js +1 -1
  88. package/es/event/util.js.map +1 -1
  89. package/es/index.d.ts +1 -1
  90. package/es/index.js +1 -1
  91. package/es/index.js.map +1 -1
  92. package/es/plugins/custom-cell-style.d.ts +1 -0
  93. package/es/plugins/custom-cell-style.js +6 -2
  94. package/es/plugins/custom-cell-style.js.map +1 -1
  95. package/es/scenegraph/animation/appear.d.ts +2 -0
  96. package/es/scenegraph/animation/appear.js +20 -0
  97. package/es/scenegraph/animation/appear.js.map +1 -0
  98. package/es/scenegraph/component/custom.d.ts +5 -2
  99. package/es/scenegraph/component/custom.js +38 -4
  100. package/es/scenegraph/component/custom.js.map +1 -1
  101. package/es/scenegraph/graphic/contributions/group-contribution-render.js +34 -21
  102. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  103. package/es/scenegraph/group-creater/cell-helper.js +5 -4
  104. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  105. package/es/scenegraph/group-creater/column-helper.js +1 -1
  106. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  107. package/es/scenegraph/icon/icon-update.js +1 -0
  108. package/es/scenegraph/icon/icon-update.js.map +1 -1
  109. package/es/scenegraph/layout/compute-col-width.js +2 -2
  110. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  111. package/es/scenegraph/layout/compute-row-height.js +1 -1
  112. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  113. package/es/scenegraph/layout/update-height.js +13 -4
  114. package/es/scenegraph/layout/update-height.js.map +1 -1
  115. package/es/scenegraph/layout/update-width.js +13 -4
  116. package/es/scenegraph/layout/update-width.js.map +1 -1
  117. package/es/scenegraph/scenegraph.js +9 -5
  118. package/es/scenegraph/scenegraph.js.map +1 -1
  119. package/es/scenegraph/utils/break-string.d.ts +4 -1
  120. package/es/scenegraph/utils/break-string.js +9 -3
  121. package/es/scenegraph/utils/break-string.js.map +1 -1
  122. package/es/scenegraph/utils/text-icon-layout.js +4 -2
  123. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  124. package/es/state/select/is-cell-select-highlight.d.ts +5 -0
  125. package/es/state/select/is-cell-select-highlight.js +46 -0
  126. package/es/state/select/is-cell-select-highlight.js.map +1 -0
  127. package/es/state/select/update-position.js +10 -5
  128. package/es/state/select/update-position.js.map +1 -1
  129. package/es/state/state.js +6 -4
  130. package/es/state/state.js.map +1 -1
  131. package/es/themes/DEFAULT.js +0 -2
  132. package/es/themes/DEFAULT.js.map +1 -1
  133. package/es/themes/theme.js +32 -0
  134. package/es/themes/theme.js.map +1 -1
  135. package/es/ts-types/animation/appear.d.ts +6 -0
  136. package/es/ts-types/animation/appear.js +2 -0
  137. package/es/ts-types/animation/appear.js.map +1 -0
  138. package/es/ts-types/base-table.d.ts +6 -0
  139. package/es/ts-types/base-table.js.map +1 -1
  140. package/es/ts-types/icon.d.ts +1 -0
  141. package/es/ts-types/icon.js.map +1 -1
  142. package/es/ts-types/table-engine.d.ts +5 -1
  143. package/es/ts-types/table-engine.js.map +1 -1
  144. package/es/ts-types/theme.d.ts +6 -0
  145. package/es/ts-types/theme.js.map +1 -1
  146. package/es/ts-types/tooltip.d.ts +1 -0
  147. package/es/ts-types/tooltip.js.map +1 -1
  148. package/es/vrender.js.map +1 -1
  149. package/package.json +4 -4
package/dist/vtable.js CHANGED
@@ -24538,8 +24538,6 @@
24538
24538
  selectionStyle: {
24539
24539
  cellBgColor: 'rgba(0, 0, 255,0.1)',
24540
24540
  cellBorderLineWidth: 2,
24541
- inlineColumnBgColor: '#CCE0FF',
24542
- inlineRowBgColor: '#CCE0FF',
24543
24541
  cellBorderColor: '#0000ff'
24544
24542
  },
24545
24543
  tooltipStyle: {
@@ -24722,6 +24720,7 @@
24722
24720
  return getProp$1(obj, superTheme, ['_contentOffset']) ?? 0;
24723
24721
  }
24724
24722
  get defaultStyle() {
24723
+ const that = this;
24725
24724
  if (!this._defaultStyle) {
24726
24725
  const { obj, superTheme } = this.internalTheme;
24727
24726
  const defaultStyle = ingoreNoneValueMerge({}, superTheme.defaultStyle, obj.defaultStyle);
@@ -24780,6 +24779,29 @@
24780
24779
  }
24781
24780
  return undefined;
24782
24781
  },
24782
+ get select() {
24783
+ if (defaultStyle.select) {
24784
+ return {
24785
+ get inlineColumnBgColor() {
24786
+ return (defaultStyle.select?.inlineColumnBgColor ??
24787
+ that.selectionStyle?.inlineColumnBgColor ??
24788
+ (that.selectionStyle?.cellBgColor && typeof that.selectionStyle.cellBgColor === 'string'
24789
+ ? changeColor(that.selectionStyle.cellBgColor, 0.1, false)
24790
+ : undefined) ??
24791
+ undefined);
24792
+ },
24793
+ get inlineRowBgColor() {
24794
+ return (defaultStyle.select?.inlineRowBgColor ??
24795
+ that.selectionStyle.inlineRowBgColor ??
24796
+ (that.selectionStyle?.cellBgColor && typeof that.selectionStyle.cellBgColor === 'string'
24797
+ ? changeColor(that.selectionStyle.cellBgColor, 0.1, false)
24798
+ : undefined) ??
24799
+ undefined);
24800
+ }
24801
+ };
24802
+ }
24803
+ return undefined;
24804
+ },
24783
24805
  get padding() {
24784
24806
  return defaultStyle.padding ?? [10, 16, 10, 16];
24785
24807
  },
@@ -25123,6 +25145,12 @@
25123
25145
  },
25124
25146
  get cellBorderLineWidth() {
25125
25147
  return selectionStyle?.cellBorderLineWidth ?? 2;
25148
+ },
25149
+ get inlineColumnBgColor() {
25150
+ return selectionStyle?.inlineColumnBgColor;
25151
+ },
25152
+ get inlineRowBgColor() {
25153
+ return selectionStyle?.inlineRowBgColor;
25126
25154
  }
25127
25155
  };
25128
25156
  }
@@ -25168,6 +25196,7 @@
25168
25196
  return new TableTheme(obj, this);
25169
25197
  }
25170
25198
  getStyle(style) {
25199
+ const that = this;
25171
25200
  return {
25172
25201
  get fontSize() {
25173
25202
  return style.fontSize;
@@ -25223,6 +25252,26 @@
25223
25252
  }
25224
25253
  return undefined;
25225
25254
  },
25255
+ get select() {
25256
+ return {
25257
+ get inlineColumnBgColor() {
25258
+ return (style.select?.inlineColumnBgColor ??
25259
+ that.selectionStyle?.inlineColumnBgColor ??
25260
+ (that.selectionStyle?.cellBgColor && typeof that.selectionStyle.cellBgColor === 'string'
25261
+ ? changeColor(that.selectionStyle.cellBgColor, 0.1, false)
25262
+ : undefined) ??
25263
+ undefined);
25264
+ },
25265
+ get inlineRowBgColor() {
25266
+ return (style.select?.inlineRowBgColor ??
25267
+ that.selectionStyle.inlineRowBgColor ??
25268
+ (that.selectionStyle?.cellBgColor && typeof that.selectionStyle.cellBgColor === 'string'
25269
+ ? changeColor(that.selectionStyle.cellBgColor, 0.1, false)
25270
+ : undefined) ??
25271
+ undefined);
25272
+ }
25273
+ };
25274
+ },
25226
25275
  get frameStyle() {
25227
25276
  if (style.frameStyle) {
25228
25277
  return {
@@ -35176,7 +35225,55 @@
35176
35225
  }
35177
35226
  };
35178
35227
 
35179
- function dealWithCustom(customLayout, customRender, col, row, width, height, autoWidth, autoHeight, padding, table) {
35228
+ function getCellEventArgsSet(e) {
35229
+ const tableEvent = {
35230
+ abstractPos: {
35231
+ x: e.x,
35232
+ y: e.y
35233
+ }
35234
+ };
35235
+ const targetCell = getTargetCell(e.target);
35236
+ if (targetCell) {
35237
+ tableEvent.eventArgs = {
35238
+ col: targetCell.col,
35239
+ row: targetCell.row,
35240
+ event: e,
35241
+ targetCell,
35242
+ mergeInfo: getMergeCellInfo(targetCell),
35243
+ target: e.target
35244
+ };
35245
+ }
35246
+ return tableEvent;
35247
+ }
35248
+ function getTargetCell(target) {
35249
+ while (target && target.parent) {
35250
+ if (target.role === 'cell') {
35251
+ return target;
35252
+ }
35253
+ target = target.parent;
35254
+ }
35255
+ return null;
35256
+ }
35257
+ function getMergeCellInfo(cellGroup) {
35258
+ if (isValid$1(cellGroup.mergeStartCol) &&
35259
+ isValid$1(cellGroup.mergeStartRow) &&
35260
+ isValid$1(cellGroup.mergeEndCol) &&
35261
+ isValid$1(cellGroup.mergeEndRow)) {
35262
+ return {
35263
+ colStart: cellGroup.mergeStartCol,
35264
+ colEnd: cellGroup.mergeEndCol,
35265
+ rowStart: cellGroup.mergeStartRow,
35266
+ rowEnd: cellGroup.mergeEndRow
35267
+ };
35268
+ }
35269
+ return undefined;
35270
+ }
35271
+ const regIndexReg = /radio-\d+-\d+-(\d+)/;
35272
+
35273
+ const CUSTOM_MERGE_PRE_NAME = '_custom_';
35274
+ const CUSTOM_CONTAINER_NAME = 'custom-container';
35275
+ const CUSTOM_MERGE_CONTAINER_NAME = CUSTOM_MERGE_PRE_NAME + '_0';
35276
+ function dealWithCustom(customLayout, customRender, col, row, width, height, autoWidth, autoHeight, padding, range, table) {
35180
35277
  let renderDefault = true;
35181
35278
  let enableCellPadding = false;
35182
35279
  let expectedWidth;
@@ -35205,7 +35302,7 @@
35205
35302
  }
35206
35303
  if (customRenderObj.rootContainer instanceof Group$2) {
35207
35304
  elementsGroup = customRenderObj.rootContainer;
35208
- elementsGroup.name = 'custom-container';
35305
+ elementsGroup.name = CUSTOM_CONTAINER_NAME;
35209
35306
  }
35210
35307
  renderDefault = customRenderObj.renderDefault;
35211
35308
  enableCellPadding = customRenderObj.enableCellPadding;
@@ -35253,6 +35350,9 @@
35253
35350
  });
35254
35351
  }
35255
35352
  dealPercentCalc(elementsGroup, width, height);
35353
+ if (range && (range.start.col !== range.end.col || range.start.row !== range.end.row)) {
35354
+ bindAttributeUpdate(elementsGroup, col, row, 0);
35355
+ }
35256
35356
  return {
35257
35357
  elementsGroup,
35258
35358
  renderDefault
@@ -35268,7 +35368,7 @@
35268
35368
  stroke: false,
35269
35369
  pickable: false
35270
35370
  });
35271
- customGroup.name = 'custom-container';
35371
+ customGroup.name = CUSTOM_CONTAINER_NAME;
35272
35372
  const elementsAdjusted = adjustElementsPos(elements, width, height, value);
35273
35373
  elementsAdjusted.forEach(element => {
35274
35374
  if (element.clickable) {
@@ -35543,6 +35643,51 @@
35543
35643
  });
35544
35644
  }
35545
35645
  }
35646
+ function bindAttributeUpdate(group, col, row, index, preId) {
35647
+ if (!group) {
35648
+ return;
35649
+ }
35650
+ group.name = `${CUSTOM_MERGE_PRE_NAME}${preId ?? ''}_${index}`;
35651
+ group.onBeforeAttributeUpdate = onBeforeAttributeUpdate;
35652
+ if (group.type === 'group' && group.childrenCount) {
35653
+ group.forEachChildren((child, childIndex) => {
35654
+ bindAttributeUpdate(child, col, row, childIndex, (preId ?? '') + '_' + index);
35655
+ });
35656
+ }
35657
+ }
35658
+ function onBeforeAttributeUpdate(val, attribute) {
35659
+ const graphic = this;
35660
+ const cellGroup = getTargetCell(graphic);
35661
+ const table = cellGroup.stage.table;
35662
+ graphic.skipAttributeUpdate = true;
35663
+ const { mergeStartCol, mergeEndCol, mergeStartRow, mergeEndRow } = cellGroup;
35664
+ if (isValid$1(mergeStartCol) &&
35665
+ isValid$1(mergeEndCol) &&
35666
+ isValid$1(mergeStartRow) &&
35667
+ isValid$1(mergeEndRow) &&
35668
+ (mergeStartCol !== mergeEndCol || mergeStartRow !== mergeEndRow)) {
35669
+ for (let col = mergeStartCol; col <= mergeEndCol; col++) {
35670
+ for (let row = mergeStartRow; row <= mergeEndRow; row++) {
35671
+ if (col === cellGroup.col && row === cellGroup.row) {
35672
+ continue;
35673
+ }
35674
+ const cell = table.scenegraph.getCell(col, row);
35675
+ if (cell.role === 'cell') {
35676
+ const target = cell.getChildByName(graphic.name, true);
35677
+ if (!target || target.skipAttributeUpdate) {
35678
+ continue;
35679
+ }
35680
+ for (const key in val) {
35681
+ if (val[key] !== target.attribute[key] && key !== 'dx' && key !== 'dy') {
35682
+ target.setAttribute(key, val[key]);
35683
+ }
35684
+ }
35685
+ }
35686
+ }
35687
+ }
35688
+ graphic.skipAttributeUpdate = undefined;
35689
+ }
35690
+ }
35546
35691
 
35547
35692
  const icons = {};
35548
35693
  class IconCache {
@@ -37639,6 +37784,12 @@
37639
37784
  }
37640
37785
 
37641
37786
  function breakString(textStr, table) {
37787
+ let moreThanMaxCharacters = false;
37788
+ if (isString$2(textStr) && textStr.length > (table.options.maxCharactersNumber || 200)) {
37789
+ textStr = textStr.slice(0, table.options.maxCharactersNumber || 200);
37790
+ textStr += '\u2026';
37791
+ moreThanMaxCharacters = true;
37792
+ }
37642
37793
  let text;
37643
37794
  if (!table.internalProps.enableLineBreak && !table.options.customConfig?.multilinesForXTable) {
37644
37795
  text = [convertInternal(textStr)];
@@ -37649,7 +37800,10 @@
37649
37800
  while (text.length && text.length > 1 && !text[text.length - 1]) {
37650
37801
  text.pop();
37651
37802
  }
37652
- return text;
37803
+ return {
37804
+ text,
37805
+ moreThanMaxCharacters
37806
+ };
37653
37807
  }
37654
37808
 
37655
37809
  function createCellContent(cellGroup, icons, textStr, padding, autoColWidth, autoRowHeight, autoWrapText, lineClamp, cellWidth, cellHeight, textAlign, textBaseline, table, cellTheme, range) {
@@ -37670,7 +37824,7 @@
37670
37824
  let absoluteRightIconWidth = 0;
37671
37825
  if (!Array.isArray(icons) || icons.length === 0) {
37672
37826
  if (isValid$1(textStr)) {
37673
- const text = breakString(textStr, table);
37827
+ const { text, moreThanMaxCharacters } = breakString(textStr, table);
37674
37828
  const hierarchyOffset = range
37675
37829
  ? getHierarchyOffset(range.start.col, range.start.row, table)
37676
37830
  : getHierarchyOffset(cellGroup.col, cellGroup.row, table);
@@ -37685,6 +37839,7 @@
37685
37839
  }
37686
37840
  const attribute = {
37687
37841
  text: text.length === 1 ? text[0] : text,
37842
+ moreThanMaxCharacters,
37688
37843
  maxLineWidth: autoColWidth ? Infinity : cellWidth - (padding[1] + padding[3] + hierarchyOffset),
37689
37844
  textBaseline: 'top',
37690
37845
  autoWrapText,
@@ -37783,9 +37938,10 @@
37783
37938
  const hierarchyOffset = range
37784
37939
  ? getHierarchyOffset(range.start.col, range.start.row, table)
37785
37940
  : getHierarchyOffset(cellGroup.col, cellGroup.row, table);
37786
- const text = breakString(textStr, table);
37941
+ const { text, moreThanMaxCharacters } = breakString(textStr, table);
37787
37942
  const attribute = {
37788
37943
  text: text.length === 1 ? text[0] : text,
37944
+ moreThanMaxCharacters,
37789
37945
  maxLineWidth: autoColWidth
37790
37946
  ? Infinity
37791
37947
  : cellWidth - (padding[1] + padding[3]) - leftIconWidth - rightIconWidth - hierarchyOffset,
@@ -38847,7 +39003,7 @@
38847
39003
  customLayout = define?.customLayout;
38848
39004
  }
38849
39005
  if (customLayout || customRender) {
38850
- const customResult = dealWithCustom(customLayout, customRender, col, row, cellWidth, cellHeight, false, table.isAutoRowHeight(row), padding, table);
39006
+ const customResult = dealWithCustom(customLayout, customRender, col, row, cellWidth, cellHeight, false, table.isAutoRowHeight(row), padding, range, table);
38851
39007
  customElementsGroup = customResult.elementsGroup;
38852
39008
  renderDefault = customResult.renderDefault;
38853
39009
  }
@@ -38928,7 +39084,7 @@
38928
39084
  cellTheme.group.cornerRadius = getCellCornerRadius(col, row, table);
38929
39085
  }
38930
39086
  if (customLayout || customRender) {
38931
- customResult = dealWithCustom(customLayout, customRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], table);
39087
+ customResult = dealWithCustom(customLayout, customRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], range, table);
38932
39088
  }
38933
39089
  }
38934
39090
  }
@@ -38973,7 +39129,7 @@
38973
39129
  const textMark = oldCellGroup.getChildByName('text');
38974
39130
  if (textMark) {
38975
39131
  const text = table.getCellValue(col, row);
38976
- const textArr = breakString(text, table);
39132
+ const { text: textArr, moreThanMaxCharacters } = breakString(text, table);
38977
39133
  const hierarchyOffset = getHierarchyOffset(col, row, table);
38978
39134
  const lineClamp = cellStyle.lineClamp;
38979
39135
  const padding = getQuadProps(getProp('padding', cellStyle, col, row, table)) ?? [0, 0, 0, 0];
@@ -38990,6 +39146,7 @@
38990
39146
  }
38991
39147
  const attribute = {
38992
39148
  text: textArr.length === 1 && !autoWrapText ? textArr[0] : textArr,
39149
+ moreThanMaxCharacters,
38993
39150
  maxLineWidth: cellWidth - (padding[1] + padding[3] + hierarchyOffset),
38994
39151
  textBaseline: 'top',
38995
39152
  autoWrapText,
@@ -39178,7 +39335,7 @@
39178
39335
  if (customMerge) {
39179
39336
  const { range: customMergeRange, text: customMergeText, style: customMergeStyle, customLayout: customMergeLayout, customRender: customMergeRender } = customMerge;
39180
39337
  if (customMergeLayout || customMergeRender) {
39181
- const customResult = dealWithCustom(customMergeLayout, customMergeRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], table);
39338
+ const customResult = dealWithCustom(customMergeLayout, customMergeRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], customMergeRange, table);
39182
39339
  const customElementsGroup = customResult.elementsGroup;
39183
39340
  if (cellGroup.childrenCount > 0 && customElementsGroup) {
39184
39341
  cellGroup.insertBefore(customElementsGroup, cellGroup.firstChild);
@@ -40930,7 +41087,7 @@
40930
41087
  }
40931
41088
  else {
40932
41089
  text = cellValue;
40933
- const lines = breakString(text, table);
41090
+ const lines = breakString(text, table).text;
40934
41091
  const cellWidth = table.getColsWidth(col, endCol);
40935
41092
  if (iconInlineFront.length || iconInlineEnd.length) {
40936
41093
  if (autoWrapText) {
@@ -41122,7 +41279,8 @@
41122
41279
  }
41123
41280
  else {
41124
41281
  let renderDefault = true;
41125
- const customContainer = cell.getChildByName('custom-container');
41282
+ const customContainer = cell.getChildByName(CUSTOM_CONTAINER_NAME) ||
41283
+ cell.getChildByName(CUSTOM_MERGE_CONTAINER_NAME);
41126
41284
  if (customContainer) {
41127
41285
  let customElementsGroup;
41128
41286
  customContainer.removeAllChild();
@@ -41134,7 +41292,8 @@
41134
41292
  continue;
41135
41293
  }
41136
41294
  const mergedCell = scene.getCell(col, mergeRow);
41137
- const customContainer = mergedCell.getChildByName('custom-container');
41295
+ const customContainer = cell.getChildByName(CUSTOM_CONTAINER_NAME) ||
41296
+ cell.getChildByName(CUSTOM_MERGE_CONTAINER_NAME);
41138
41297
  customContainer.removeAllChild();
41139
41298
  mergedCell.removeChild(customContainer);
41140
41299
  getCustomCellMergeCustom(col, mergeRow, mergedCell, scene.table);
@@ -41163,7 +41322,12 @@
41163
41322
  width = scene.table.getColsWidth(cell.mergeStartCol, cell.mergeEndCol);
41164
41323
  height = scene.table.getRowsHeight(cell.mergeStartRow, cell.mergeEndRow);
41165
41324
  }
41166
- const customResult = dealWithCustom(customLayout, customRender, col, row, width, height, false, scene.table.isAutoRowHeight(row), padding, scene.table);
41325
+ const customResult = dealWithCustom(customLayout, customRender, col, row, width, height, false, scene.table.isAutoRowHeight(row), padding, isMergeCellGroup(cell)
41326
+ ? {
41327
+ start: { col: cell.mergeStartCol, row: cell.mergeStartRow },
41328
+ end: { col: cell.mergeEndCol, row: cell.mergeEndRow }
41329
+ }
41330
+ : undefined, scene.table);
41167
41331
  customElementsGroup = customResult.elementsGroup;
41168
41332
  renderDefault = customResult.renderDefault;
41169
41333
  }
@@ -41442,7 +41606,8 @@
41442
41606
  }
41443
41607
  else {
41444
41608
  let renderDefault = true;
41445
- const customContainer = cell.getChildByName('custom-container');
41609
+ const customContainer = cell.getChildByName(CUSTOM_CONTAINER_NAME) ||
41610
+ cell.getChildByName(CUSTOM_MERGE_CONTAINER_NAME);
41446
41611
  if (customContainer) {
41447
41612
  let customElementsGroup;
41448
41613
  customContainer.removeAllChild();
@@ -41454,7 +41619,8 @@
41454
41619
  continue;
41455
41620
  }
41456
41621
  const mergedCell = scene.getCell(mergeCol, row);
41457
- const customContainer = mergedCell.getChildByName('custom-container');
41622
+ const customContainer = mergedCell.getChildByName(CUSTOM_CONTAINER_NAME) ||
41623
+ cell.getChildByName(CUSTOM_MERGE_CONTAINER_NAME);
41458
41624
  customContainer.removeAllChild();
41459
41625
  mergedCell.removeChild(customContainer);
41460
41626
  getCustomCellMergeCustom(mergeCol, row, mergedCell, scene.table);
@@ -41483,7 +41649,12 @@
41483
41649
  width = scene.table.getColsWidth(cellGroup.mergeStartCol, cellGroup.mergeEndCol);
41484
41650
  height = scene.table.getRowsHeight(cellGroup.mergeStartRow, cellGroup.mergeEndRow);
41485
41651
  }
41486
- const customResult = dealWithCustom(customLayout, customRender, col, row, width, height, false, scene.table.isAutoRowHeight(row), padding, scene.table);
41652
+ const customResult = dealWithCustom(customLayout, customRender, col, row, width, height, false, scene.table.isAutoRowHeight(row), padding, isMergeCellGroup(cellGroup)
41653
+ ? {
41654
+ start: { col: cellGroup.mergeStartCol, row: cellGroup.mergeStartRow },
41655
+ end: { col: cellGroup.mergeEndCol, row: cellGroup.mergeEndRow }
41656
+ }
41657
+ : undefined, scene.table);
41487
41658
  customElementsGroup = customResult.elementsGroup;
41488
41659
  renderDefault = customResult.renderDefault;
41489
41660
  isHeightChange = true;
@@ -43379,6 +43550,113 @@
43379
43550
  return hoverMode;
43380
43551
  }
43381
43552
 
43553
+ function getCellSelectColor(cellGroup, table) {
43554
+ let colorKey;
43555
+ if (cellGroup.role === 'cell' &&
43556
+ isValid$1(cellGroup.mergeStartCol) &&
43557
+ isValid$1(cellGroup.mergeStartRow) &&
43558
+ isValid$1(cellGroup.mergeEndCol) &&
43559
+ isValid$1(cellGroup.mergeEndRow)) {
43560
+ const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);
43561
+ for (let col = colStart; col <= colEnd; col++) {
43562
+ for (let row = rowStart; row <= rowEnd; row++) {
43563
+ const key = isCellSelected(table.stateManager, col, row);
43564
+ if (key && (!colorKey || key === 'cellBgColor')) {
43565
+ colorKey = key;
43566
+ }
43567
+ }
43568
+ }
43569
+ }
43570
+ else if (cellGroup.role === 'cell') {
43571
+ colorKey = isCellSelected(table.stateManager, cellGroup.col, cellGroup.row);
43572
+ }
43573
+ if (!colorKey) {
43574
+ return undefined;
43575
+ }
43576
+ let selectStyle;
43577
+ const layout = table.internalProps.layoutMap;
43578
+ if (layout.isCornerHeader(cellGroup.col, cellGroup.row)) {
43579
+ selectStyle = table.theme.cornerHeaderStyle?.select || table.theme.headerStyle?.select;
43580
+ }
43581
+ else if (layout.isColumnHeader(cellGroup.col, cellGroup.row)) {
43582
+ selectStyle = table.theme.headerStyle?.select;
43583
+ }
43584
+ else if (layout.isRowHeader(cellGroup.col, cellGroup.row)) {
43585
+ selectStyle = table.theme.rowHeaderStyle?.select;
43586
+ }
43587
+ else if (layout.isBottomFrozenRow(cellGroup.col, cellGroup.row)) {
43588
+ selectStyle =
43589
+ table.theme.bottomFrozenStyle?.select ||
43590
+ (table.isListTable() ? table.theme.bodyStyle?.select : table.theme.headerStyle?.select);
43591
+ }
43592
+ else if (layout.isRightFrozenColumn(cellGroup.col, cellGroup.row)) {
43593
+ selectStyle =
43594
+ table.theme.rightFrozenStyle?.select ||
43595
+ (table.isListTable() ? table.theme.bodyStyle?.select : table.theme.rowHeaderStyle?.select);
43596
+ }
43597
+ else if (!table.isHeader(cellGroup.col, cellGroup.row)) {
43598
+ selectStyle = table.theme.bodyStyle?.select;
43599
+ }
43600
+ const fillColor = getProp(colorKey, selectStyle, cellGroup.col, cellGroup.row, table);
43601
+ return fillColor;
43602
+ }
43603
+ function isCellSelected(state, col, row, cellGroup) {
43604
+ const { highlightScope, disableHeader, cellPos, ranges } = state.select;
43605
+ let selectMode;
43606
+ if (ranges?.length === 1 && ranges[0].end.col === ranges[0].start.col && ranges[0].end.row === ranges[0].start.row) {
43607
+ const table = state.table;
43608
+ const isHeader = table.isHeader(col, row);
43609
+ if (isHeader && disableHeader) {
43610
+ return undefined;
43611
+ }
43612
+ if (highlightScope === HighlightScope.single && cellPos.col === col && cellPos.row === row) {
43613
+ selectMode = 'cellBgColor';
43614
+ }
43615
+ else if (highlightScope === HighlightScope.column && cellPos.col === col) {
43616
+ if (cellPos.col === col && cellPos.row === row) {
43617
+ selectMode = 'cellBgColor';
43618
+ }
43619
+ else {
43620
+ selectMode = 'inlineColumnBgColor';
43621
+ }
43622
+ }
43623
+ else if (highlightScope === HighlightScope.row && cellPos.row === row) {
43624
+ if (cellPos.col === col && cellPos.row === row) {
43625
+ selectMode = 'cellBgColor';
43626
+ }
43627
+ else {
43628
+ selectMode = 'inlineRowBgColor';
43629
+ }
43630
+ }
43631
+ else if (highlightScope === HighlightScope.cross) {
43632
+ if (cellPos.col === col && cellPos.row === row) {
43633
+ selectMode = 'cellBgColor';
43634
+ }
43635
+ else if (cellPos.col === col) {
43636
+ selectMode = 'inlineColumnBgColor';
43637
+ }
43638
+ else if (cellPos.row === row) {
43639
+ selectMode = 'inlineRowBgColor';
43640
+ }
43641
+ }
43642
+ if (selectMode) {
43643
+ let cellDisable;
43644
+ if (isHeader) {
43645
+ const define = table.getHeaderDefine(col, row);
43646
+ cellDisable = define?.disableHeaderSelect;
43647
+ }
43648
+ else {
43649
+ const define = table.getBodyColumnDefine(col, row);
43650
+ cellDisable = define?.disableSelect;
43651
+ }
43652
+ if (cellDisable) {
43653
+ selectMode = undefined;
43654
+ }
43655
+ }
43656
+ }
43657
+ return selectMode;
43658
+ }
43659
+
43382
43660
  let SplitGroupBeforeRenderContribution = class SplitGroupBeforeRenderContribution {
43383
43661
  time = BaseRenderContributionTime.beforeFillStroke;
43384
43662
  useStyle = true;
@@ -43398,7 +43676,8 @@
43398
43676
  useStyle = true;
43399
43677
  order = 0;
43400
43678
  drawShape(group, context, x, y, doFill, doStroke, fVisible, sVisible, groupAttribute, drawContext, fillCb, strokeCb) {
43401
- const { width = groupAttribute.width, height = groupAttribute.height, stroke = groupAttribute.stroke, strokeArrayColor = groupAttribute.strokeArrayColor, strokeArrayWidth = groupAttribute.strokeArrayWidth, lineWidth = groupAttribute.lineWidth, strokeColor = groupAttribute.stroke } = group.attribute;
43679
+ const { stroke = groupAttribute.stroke, strokeArrayColor = groupAttribute.strokeArrayColor, strokeArrayWidth = groupAttribute.strokeArrayWidth, lineWidth = groupAttribute.lineWidth, strokeColor = groupAttribute.stroke } = group.attribute;
43680
+ let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;
43402
43681
  if (!stroke || (!Array.isArray(strokeArrayWidth) && lineWidth === 0)) {
43403
43682
  return;
43404
43683
  }
@@ -43432,6 +43711,10 @@
43432
43711
  x = Math.floor(x) + 0.5;
43433
43712
  y = Math.floor(y) + 0.5;
43434
43713
  }
43714
+ if (table.options.customConfig?._disableColumnAndRowSizeRound) {
43715
+ width = Math.round(width);
43716
+ height = Math.round(height);
43717
+ }
43435
43718
  const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(group, Math.ceil(width + deltaWidth), Math.ceil(height + deltaHeight));
43436
43719
  widthForStroke = widthFroDraw;
43437
43720
  heightForStroke = heightFroDraw;
@@ -43655,18 +43938,24 @@
43655
43938
  Array.isArray(strokeArrayWidth)) {
43656
43939
  return;
43657
43940
  }
43941
+ const table = group.stage.table;
43942
+ if (!table) {
43943
+ return;
43944
+ }
43658
43945
  const splitLineDash = isArray$1(lineDash[0]) ? getQuadLineDash(lineDash) : [lineDash, lineDash, lineDash, lineDash];
43659
43946
  let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;
43660
- width = Math.ceil(width);
43661
- height = Math.ceil(height);
43947
+ if (table.options.customConfig?._disableColumnAndRowSizeRound) {
43948
+ width = Math.round(width);
43949
+ height = Math.round(height);
43950
+ }
43951
+ else {
43952
+ width = Math.ceil(width);
43953
+ height = Math.ceil(height);
43954
+ }
43662
43955
  let widthForStroke;
43663
43956
  let heightForStroke;
43664
43957
  if (lineWidth & 1) {
43665
- const table = group.stage.table;
43666
- if (!table) {
43667
- return;
43668
- }
43669
- const bottomRight = table?.theme.cellBorderClipDirection === 'bottom-right';
43958
+ const bottomRight = table.theme.cellBorderClipDirection === 'bottom-right';
43670
43959
  let deltaWidth = 0;
43671
43960
  let deltaHeight = 0;
43672
43961
  if (bottomRight) {
@@ -43753,7 +44042,7 @@
43753
44042
  order = 0;
43754
44043
  drawShape(group, context, x, y, doFill, doStroke, fVisible, sVisible, groupAttribute, drawContext, fillCb, strokeCb) {
43755
44044
  const { lineWidth = groupAttribute.lineWidth, stroke = groupAttribute.stroke, lineDash = groupAttribute.lineDash, strokeArrayWidth = groupAttribute.strokeArrayWidth, strokeArrayColor = groupAttribute.strokeArrayColor, notAdjustPos, cornerRadius = groupAttribute.cornerRadius } = group.attribute;
43756
- const { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;
44045
+ let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;
43757
44046
  if (notAdjustPos !== true &&
43758
44047
  stroke &&
43759
44048
  Array.isArray(lineDash) &&
@@ -43761,12 +44050,16 @@
43761
44050
  !Array.isArray(strokeArrayColor) &&
43762
44051
  !Array.isArray(strokeArrayWidth) &&
43763
44052
  lineWidth & 1) {
43764
- const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(group, Math.ceil(width), Math.ceil(height));
43765
- context.beginPath();
43766
44053
  const table = group.stage.table;
43767
44054
  if (!table) {
43768
44055
  return;
43769
44056
  }
44057
+ if (table.options.customConfig?._disableColumnAndRowSizeRound) {
44058
+ width = Math.round(width);
44059
+ height = Math.round(height);
44060
+ }
44061
+ const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(group, Math.ceil(width), Math.ceil(height));
44062
+ context.beginPath();
43770
44063
  const bottomRight = table?.theme.cellBorderClipDirection === 'bottom-right';
43771
44064
  let deltaWidth = 0;
43772
44065
  let deltaHeight = 0;
@@ -43810,9 +44103,15 @@
43810
44103
  if (group.role === 'cell') {
43811
44104
  const table = group.stage.table;
43812
44105
  if (table && table.stateManager.interactionState !== InteractionState.scrolling) {
43813
- const hoverColor = getCellHoverColor(group, table);
43814
- if (hoverColor) {
43815
- group.attribute._vtableHoverFill = hoverColor;
44106
+ const selectColor = getCellSelectColor(group, table);
44107
+ if (selectColor) {
44108
+ group.attribute._vtableHightLightFill = selectColor;
44109
+ }
44110
+ else {
44111
+ const hoverColor = getCellHoverColor(group, table);
44112
+ if (hoverColor) {
44113
+ group.attribute._vtableHightLightFill = hoverColor;
44114
+ }
43816
44115
  }
43817
44116
  }
43818
44117
  }
@@ -43826,15 +44125,15 @@
43826
44125
  useStyle = true;
43827
44126
  order = 0;
43828
44127
  drawShape(group, context, x, y, doFill, doStroke, fVisible, sVisible, groupAttribute, drawContext, fillCb, strokeCb) {
43829
- if (group.attribute._vtableHoverFill) {
44128
+ if (group.attribute._vtableHightLightFill) {
43830
44129
  if (fillCb) ;
43831
44130
  else if (fVisible) {
43832
44131
  const oldColor = group.attribute.fill;
43833
- group.attribute.fill = group.attribute._vtableHoverFill;
44132
+ group.attribute.fill = group.attribute._vtableHightLightFill;
43834
44133
  context.setCommonStyle(group, group.attribute, x, y, groupAttribute);
43835
44134
  context.fill();
43836
44135
  group.attribute.fill = oldColor;
43837
- group.attribute._vtableHoverFill = undefined;
44136
+ group.attribute._vtableHightLightFill = undefined;
43838
44137
  }
43839
44138
  }
43840
44139
  }
@@ -44605,10 +44904,10 @@
44605
44904
  else {
44606
44905
  text = cellValue;
44607
44906
  }
44608
- const lines = breakString(text, table);
44907
+ const lines = breakString(text, table).text;
44609
44908
  if (lines.length >= 1) {
44610
44909
  lines.forEach((line) => {
44611
- const width = table.measureText(line.slice(0, table.options.maxCharactersNumber || 200), {
44910
+ const width = table.measureText(line, {
44612
44911
  fontSize,
44613
44912
  fontFamily,
44614
44913
  fontWeight
@@ -44756,7 +45055,7 @@
44756
45055
  value = customMergeText;
44757
45056
  customStyle = customMergeStyle;
44758
45057
  if (customLayout || customRender) {
44759
- customResult = dealWithCustom(customLayout, customRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], table);
45058
+ customResult = dealWithCustom(customLayout, customRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], range, table);
44760
45059
  }
44761
45060
  }
44762
45061
  }
@@ -48144,6 +48443,7 @@
48144
48443
  },
48145
48444
  placement: baseIcon.tooltip.placement
48146
48445
  },
48446
+ disappearDelay: baseIcon.tooltip.disappearDelay,
48147
48447
  style: Object.assign({}, scene.table.internalProps.theme?.tooltipStyle, baseIcon.tooltip?.style)
48148
48448
  };
48149
48449
  if (!scene.table.internalProps.tooltipHandler.isBinded(tooltipOptions)) {
@@ -48665,6 +48965,44 @@
48665
48965
  }
48666
48966
  }
48667
48967
 
48968
+ function dealWithAnimationAppear(table) {
48969
+ if (!table.options.animationAppear) {
48970
+ return;
48971
+ }
48972
+ let duration;
48973
+ let delay;
48974
+ let type;
48975
+ let direction;
48976
+ if (table.options.animationAppear === true) {
48977
+ duration = 500;
48978
+ delay = 0;
48979
+ type = 'one-by-one';
48980
+ direction = 'column';
48981
+ }
48982
+ else {
48983
+ duration = table.options.animationAppear.duration ?? 500;
48984
+ delay = table.options.animationAppear.delay ?? 0;
48985
+ type = table.options.animationAppear.type ?? 'one-by-one';
48986
+ direction = table.options.animationAppear.direction ?? 'row';
48987
+ }
48988
+ const { scenegraph: scene, frozenColCount, frozenRowCount } = table;
48989
+ const { colStart, colEnd, rowStart, rowEnd } = scene.proxy;
48990
+ for (let col = 0; col <= colEnd; col++) {
48991
+ for (let row = 0; row <= rowEnd; row++) {
48992
+ const cellGroup = scene.highPerformanceGetCell(col, row);
48993
+ if (cellGroup && cellGroup.role === 'cell') {
48994
+ cellGroup.forEachChildren((child) => {
48995
+ child.setAttribute('opacity', 0);
48996
+ child
48997
+ .animate()
48998
+ .wait(type === 'one-by-one' ? (direction === 'row' ? row : col) * (duration - delay) : delay)
48999
+ .to({ opacity: 1 }, duration, 'linear');
49000
+ });
49001
+ }
49002
+ }
49003
+ }
49004
+ }
49005
+
48668
49006
  registerForVrender();
48669
49007
  loadPoptip();
48670
49008
  container.load(splitModule);
@@ -48724,7 +49062,8 @@
48724
49062
  enableLayout: true,
48725
49063
  afterRender: () => {
48726
49064
  this.table.fireListeners('after_render', null);
48727
- }
49065
+ },
49066
+ ...table.options.renderOption
48728
49067
  });
48729
49068
  this.stage.defaultLayer.setTheme({
48730
49069
  group: {
@@ -49458,6 +49797,9 @@
49458
49797
  this.updateBorderSizeAndPosition();
49459
49798
  this.component.updateScrollBar();
49460
49799
  handleTextStick(this.table);
49800
+ if (this.table.options.animationAppear) {
49801
+ dealWithAnimationAppear(this.table);
49802
+ }
49461
49803
  this.updateNextFrame();
49462
49804
  }
49463
49805
  dealWidthMode() {
@@ -49833,6 +50175,9 @@
49833
50175
  const cellGroup = this.getCell(col, row);
49834
50176
  const text = cellGroup.getChildByName('text', true);
49835
50177
  if (text && text.type === 'text') {
50178
+ if (text.attribute.moreThanMaxCharacters) {
50179
+ return this.table.getCellValue(col, row);
50180
+ }
49836
50181
  const textAttributeStr = isArray$1(text.attribute.text)
49837
50182
  ? text.attribute.text.join('')
49838
50183
  : text.attribute.text;
@@ -49846,7 +50191,7 @@
49846
50191
  });
49847
50192
  }
49848
50193
  if (cacheStr !== textAttributeStr) {
49849
- return textAttributeStr;
50194
+ return this.table.getCellValue(col, row);
49850
50195
  }
49851
50196
  }
49852
50197
  else if (text && text.type === 'richtext') {
@@ -49854,8 +50199,8 @@
49854
50199
  if (richtext.attribute.ellipsis &&
49855
50200
  richtext._frameCache &&
49856
50201
  richtext.attribute.height < richtext._frameCache.actualHeight) {
49857
- const textConfig = richtext.attribute.textConfig.find((item) => item.text);
49858
- return textConfig.text;
50202
+ richtext.attribute.textConfig.find((item) => item.text);
50203
+ return this.table.getCellValue(col, row);
49859
50204
  }
49860
50205
  }
49861
50206
  return null;
@@ -50258,8 +50603,18 @@
50258
50603
  if (isSelectAll) {
50259
50604
  state.select.ranges = [];
50260
50605
  scenegraph.deleteAllSelectBorder();
50606
+ let _startCol = 0;
50607
+ let _startRow = 0;
50608
+ const { disableHeaderSelect, disableRowSeriesNumberSelect } = table.options.keyboardOptions?.selectAllOnCtrlA || {};
50609
+ if (disableHeaderSelect) {
50610
+ _startCol = table.rowHeaderLevelCount;
50611
+ _startRow = table.columnHeaderLevelCount;
50612
+ }
50613
+ if ((disableRowSeriesNumberSelect || disableHeaderSelect) && table.options.rowSeriesNumber) {
50614
+ _startCol += 1;
50615
+ }
50261
50616
  state.select.ranges.push({
50262
- start: { col: 0, row: 0 },
50617
+ start: { col: _startCol, row: _startRow },
50263
50618
  end: { col: table.colCount - 1, row: table.rowCount - 1 }
50264
50619
  });
50265
50620
  const currentRange = state.select.ranges[state.select.ranges.length - 1];
@@ -51708,13 +52063,25 @@
51708
52063
  }
51709
52064
  }
51710
52065
  setSelectState() {
51711
- const { headerSelectMode, disableSelect, disableHeaderSelect } = Object.assign({}, {
52066
+ const { headerSelectMode, disableSelect, disableHeaderSelect, highlightMode } = Object.assign({}, {
51712
52067
  headerSelectMode: 'inline',
51713
52068
  disableSelect: false,
51714
- disableHeaderSelect: false
52069
+ disableHeaderSelect: false,
52070
+ highlightMode: 'cell'
51715
52071
  }, this.table.options.select);
51716
52072
  if (!disableSelect) {
51717
- this.select.highlightScope = HighlightScope.single;
52073
+ if (highlightMode === 'cross') {
52074
+ this.select.highlightScope = HighlightScope.cross;
52075
+ }
52076
+ else if (highlightMode === 'row') {
52077
+ this.select.highlightScope = HighlightScope.row;
52078
+ }
52079
+ else if (highlightMode === 'column') {
52080
+ this.select.highlightScope = HighlightScope.column;
52081
+ }
52082
+ else {
52083
+ this.select.highlightScope = HighlightScope.single;
52084
+ }
51718
52085
  }
51719
52086
  else {
51720
52087
  this.select.highlightScope = HighlightScope.none;
@@ -51796,7 +52163,8 @@
51796
52163
  rect: iconInfo.position,
51797
52164
  placement: inlineIcon.attribute.tooltip.placement
51798
52165
  },
51799
- style: Object.assign({}, this.table.internalProps.theme?.tooltipStyle, inlineIcon.tooltip?.style, inlineIcon.attribute?.tooltip?.style)
52166
+ style: Object.assign({}, this.table.internalProps.theme?.tooltipStyle, inlineIcon.tooltip?.style, inlineIcon.attribute?.tooltip?.style),
52167
+ disappearDelay: inlineIcon.attribute.tooltip.disappearDelay
51800
52168
  };
51801
52169
  if (!this.table.internalProps.tooltipHandler.isBinded(tooltipOptions)) {
51802
52170
  this.table.showTooltip(col, row, tooltipOptions);
@@ -52576,51 +52944,6 @@
52576
52944
  });
52577
52945
  }
52578
52946
 
52579
- function getCellEventArgsSet(e) {
52580
- const tableEvent = {
52581
- abstractPos: {
52582
- x: e.x,
52583
- y: e.y
52584
- }
52585
- };
52586
- const targetCell = getTargetCell(e.target);
52587
- if (targetCell) {
52588
- tableEvent.eventArgs = {
52589
- col: targetCell.col,
52590
- row: targetCell.row,
52591
- event: e,
52592
- targetCell,
52593
- mergeInfo: getMergeCellInfo(targetCell),
52594
- target: e.target
52595
- };
52596
- }
52597
- return tableEvent;
52598
- }
52599
- function getTargetCell(target) {
52600
- while (target && target.parent) {
52601
- if (target.role === 'cell') {
52602
- return target;
52603
- }
52604
- target = target.parent;
52605
- }
52606
- return null;
52607
- }
52608
- function getMergeCellInfo(cellGroup) {
52609
- if (isValid$1(cellGroup.mergeStartCol) &&
52610
- isValid$1(cellGroup.mergeStartRow) &&
52611
- isValid$1(cellGroup.mergeEndCol) &&
52612
- isValid$1(cellGroup.mergeEndRow)) {
52613
- return {
52614
- colStart: cellGroup.mergeStartCol,
52615
- colEnd: cellGroup.mergeEndCol,
52616
- rowStart: cellGroup.mergeStartRow,
52617
- rowEnd: cellGroup.mergeEndRow
52618
- };
52619
- }
52620
- return undefined;
52621
- }
52622
- const regIndexReg = /radio-\d+-\d+-(\d+)/;
52623
-
52624
52947
  function bindTableGroupListener(eventManager) {
52625
52948
  const table = eventManager.table;
52626
52949
  const stateManager = table.stateManager;
@@ -56037,8 +56360,8 @@
56037
56360
  .vtable__bubble-tooltip-element {
56038
56361
  position: absolute;
56039
56362
 
56040
- pointer-events: none;
56041
- user-select: none;
56363
+ // pointer-events: none;
56364
+ //user-select: none;
56042
56365
  max-width: 300px;
56043
56366
  z-index: 99999;
56044
56367
 
@@ -56052,6 +56375,8 @@
56052
56375
  }
56053
56376
  .vtable__bubble-tooltip-element--hidden {
56054
56377
  opacity: 0;
56378
+ pointer-events: none;
56379
+ user-select: none;
56055
56380
  /* transform: translate(-50%, -50%); */
56056
56381
  transition: opacity 75ms linear;
56057
56382
  }
@@ -56104,6 +56429,8 @@
56104
56429
  _rootElement;
56105
56430
  _messageElement;
56106
56431
  _triangleElement;
56432
+ _disappearDelay;
56433
+ _disappearDelayId;
56107
56434
  constructor() {
56108
56435
  this._handler = new EventHandler();
56109
56436
  const rootElement = (this._rootElement = createElement('div', [TOOLTIP_CLASS, HIDDEN_CLASS]));
@@ -56113,8 +56440,17 @@
56113
56440
  rootElement.appendChild(messageElement);
56114
56441
  this._messageElement = rootElement.querySelector(`.${CONTENT_CLASS}`) || undefined;
56115
56442
  this._triangleElement = rootElement.querySelector(`.${TRIANGLE_CLASS}`) || undefined;
56443
+ rootElement.addEventListener('mousemove', () => {
56444
+ this._disappearDelayId && clearTimeout(this._disappearDelayId);
56445
+ });
56446
+ rootElement.addEventListener('mouseleave', () => {
56447
+ this._disappearDelay = undefined;
56448
+ this.unbindFromCell();
56449
+ });
56116
56450
  }
56117
56451
  bindToCell(table, col, row, tooltipInstanceInfo, confine) {
56452
+ this._disappearDelay = tooltipInstanceInfo?.disappearDelay;
56453
+ this._disappearDelayId && clearTimeout(this._disappearDelayId);
56118
56454
  const rootElement = this._rootElement;
56119
56455
  const messageElement = this._messageElement;
56120
56456
  const triangle = this._triangleElement;
@@ -56170,10 +56506,21 @@
56170
56506
  }
56171
56507
  }
56172
56508
  unbindFromCell() {
56173
- const rootElement = this._rootElement;
56174
- if (rootElement?.parentElement) {
56175
- rootElement.classList.remove(SHOWN_CLASS);
56176
- rootElement.classList.add(HIDDEN_CLASS);
56509
+ if (this._disappearDelay) {
56510
+ this._disappearDelayId = setTimeout(() => {
56511
+ const rootElement = this._rootElement;
56512
+ if (rootElement?.parentElement) {
56513
+ rootElement.classList.remove(SHOWN_CLASS);
56514
+ rootElement.classList.add(HIDDEN_CLASS);
56515
+ }
56516
+ }, this._disappearDelay ?? 0);
56517
+ }
56518
+ else {
56519
+ const rootElement = this._rootElement;
56520
+ if (rootElement?.parentElement) {
56521
+ rootElement.classList.remove(SHOWN_CLASS);
56522
+ rootElement.classList.add(HIDDEN_CLASS);
56523
+ }
56177
56524
  }
56178
56525
  }
56179
56526
  _canBindToCell(table, col, row) {
@@ -56501,6 +56848,7 @@
56501
56848
  placement: Placement.bottom,
56502
56849
  rect
56503
56850
  },
56851
+ disappearDelay: table.internalProps.tooltip.overflowTextTooltipDisappearDelay ?? 0,
56504
56852
  style: { arrowMark: false }
56505
56853
  };
56506
56854
  }
@@ -56517,6 +56865,7 @@
56517
56865
  placement: Placement.bottom,
56518
56866
  rect
56519
56867
  },
56868
+ disappearDelay: table.internalProps.tooltip.overflowTextTooltipDisappearDelay ?? 0,
56520
56869
  style: table.theme.tooltipStyle
56521
56870
  };
56522
56871
  }
@@ -57858,7 +58207,7 @@
57858
58207
  const customStyleId = this.getCustomCellStyleId(col, row);
57859
58208
  if (customStyleId) {
57860
58209
  const styleOption = this.getCustomCellStyleOption(customStyleId);
57861
- return styleOption.style;
58210
+ return styleOption?.style;
57862
58211
  }
57863
58212
  return undefined;
57864
58213
  }
@@ -57949,6 +58298,8 @@
57949
58298
  this.table.scenegraph.updateNextFrame();
57950
58299
  }
57951
58300
  updateCustomCell(customCellStyle, customCellStyleArrangement) {
58301
+ this.customCellStyle.length = 0;
58302
+ this.customCellStyleArrangement.length = 0;
57952
58303
  customCellStyle.forEach((cellStyle) => {
57953
58304
  this.registerCustomCellStyle(cellStyle.id, cellStyle.style);
57954
58305
  });
@@ -57956,6 +58307,9 @@
57956
58307
  this.arrangeCustomCellStyle(cellStyle.cellPosition, cellStyle.customStyleId);
57957
58308
  });
57958
58309
  }
58310
+ hasCustomCellStyle(customStyleId) {
58311
+ return this.customCellStyle.some(style => style.id === customStyleId);
58312
+ }
57959
58313
  }
57960
58314
  function mergeStyle(cacheStyle, customCellStyle) {
57961
58315
  cacheStyle = cacheStyle.clone();
@@ -58670,7 +59024,7 @@
58670
59024
  return TABLE_EVENT_TYPE;
58671
59025
  }
58672
59026
  options;
58673
- version = "1.1.3-alpha.2";
59027
+ version = "1.2.0-alpha.0";
58674
59028
  pagination;
58675
59029
  id = `VTable${Date.now()}`;
58676
59030
  headerStyleCache;
@@ -61421,6 +61775,9 @@
61421
61775
  }
61422
61776
  changeRecordOrder(source, target) {
61423
61777
  }
61778
+ hasCustomCellStyle(customStyleId) {
61779
+ return this.customCellStylePlugin.hasCustomCellStyle(customStyleId);
61780
+ }
61424
61781
  registerCustomCellStyle(customStyleId, customStyle) {
61425
61782
  this.customCellStylePlugin.registerCustomCellStyle(customStyleId, customStyle);
61426
61783
  }
@@ -71646,7 +72003,7 @@
71646
72003
  }
71647
72004
 
71648
72005
  registerForVrender();
71649
- const version = "1.1.3-alpha.2";
72006
+ const version = "1.2.0-alpha.0";
71650
72007
  function getIcons() {
71651
72008
  return get$2();
71652
72009
  }