@visactor/vtable 1.7.1 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/cjs/core/BaseTable.js +1 -1
  2. package/cjs/core/BaseTable.js.map +1 -1
  3. package/cjs/core/style-helper.js +3 -3
  4. package/cjs/core/style-helper.js.map +1 -1
  5. package/cjs/data/CachedDataSource.js +3 -3
  6. package/cjs/data/CachedDataSource.js.map +1 -1
  7. package/cjs/event/listener/container-dom.js +1 -1
  8. package/cjs/event/listener/container-dom.js.map +1 -1
  9. package/cjs/event/scroll.js +1 -1
  10. package/cjs/event/scroll.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/layout/cell-range/simple-cell-range.js +1 -1
  15. package/cjs/layout/cell-range/simple-cell-range.js.map +1 -1
  16. package/cjs/plugins/custom-cell-style.js +6 -2
  17. package/cjs/plugins/custom-cell-style.js.map +1 -1
  18. package/cjs/scenegraph/component/table-component.js.map +1 -1
  19. package/cjs/scenegraph/group-creater/cell-helper.js +8 -7
  20. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  21. package/cjs/scenegraph/group-creater/column-helper.js +4 -3
  22. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  23. package/cjs/scenegraph/layout/update-height.js +5 -5
  24. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  25. package/cjs/scenegraph/layout/update-width.js +7 -7
  26. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  27. package/cjs/scenegraph/scenegraph.js +14 -8
  28. package/cjs/scenegraph/scenegraph.js.map +1 -1
  29. package/cjs/scenegraph/style/frame-border.js +6 -3
  30. package/cjs/scenegraph/style/frame-border.js.map +1 -1
  31. package/cjs/state/resize/update-resize-column.js +2 -1
  32. package/cjs/state/resize/update-resize-column.js.map +1 -1
  33. package/cjs/state/select/is-cell-select-highlight.js +2 -2
  34. package/cjs/state/select/is-cell-select-highlight.js.map +1 -1
  35. package/cjs/vrender.js.map +1 -1
  36. package/dist/vtable.js +81 -49
  37. package/dist/vtable.min.js +2 -2
  38. package/es/core/BaseTable.js +1 -1
  39. package/es/core/BaseTable.js.map +1 -1
  40. package/es/core/style-helper.js +3 -3
  41. package/es/core/style-helper.js.map +1 -1
  42. package/es/data/CachedDataSource.js +3 -3
  43. package/es/data/CachedDataSource.js.map +1 -1
  44. package/es/event/listener/container-dom.js +1 -1
  45. package/es/event/listener/container-dom.js.map +1 -1
  46. package/es/event/scroll.js +1 -1
  47. package/es/event/scroll.js.map +1 -1
  48. package/es/index.d.ts +1 -1
  49. package/es/index.js +1 -1
  50. package/es/index.js.map +1 -1
  51. package/es/layout/cell-range/simple-cell-range.js +1 -1
  52. package/es/layout/cell-range/simple-cell-range.js.map +1 -1
  53. package/es/plugins/custom-cell-style.js +6 -2
  54. package/es/plugins/custom-cell-style.js.map +1 -1
  55. package/es/scenegraph/component/table-component.js.map +1 -1
  56. package/es/scenegraph/group-creater/cell-helper.js +8 -7
  57. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  58. package/es/scenegraph/group-creater/column-helper.js +4 -3
  59. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  60. package/es/scenegraph/layout/update-height.js +5 -5
  61. package/es/scenegraph/layout/update-height.js.map +1 -1
  62. package/es/scenegraph/layout/update-width.js +7 -7
  63. package/es/scenegraph/layout/update-width.js.map +1 -1
  64. package/es/scenegraph/scenegraph.js +14 -8
  65. package/es/scenegraph/scenegraph.js.map +1 -1
  66. package/es/scenegraph/style/frame-border.js +6 -3
  67. package/es/scenegraph/style/frame-border.js.map +1 -1
  68. package/es/state/resize/update-resize-column.js +2 -1
  69. package/es/state/resize/update-resize-column.js.map +1 -1
  70. package/es/state/select/is-cell-select-highlight.js +2 -2
  71. package/es/state/select/is-cell-select-highlight.js.map +1 -1
  72. package/es/vrender.js.map +1 -1
  73. package/package.json +4 -4
package/dist/vtable.js CHANGED
@@ -30642,7 +30642,7 @@
30642
30642
  else {
30643
30643
  map.set(value, children.length);
30644
30644
  children.push({
30645
- vTableMerge: true,
30645
+ vtableMerge: true,
30646
30646
  vtableMergeName: value,
30647
30647
  children: [],
30648
30648
  map: new Map()
@@ -30656,7 +30656,7 @@
30656
30656
  oldGroupMap = new Map();
30657
30657
  for (let i = 0; i < oldSource.length; i++) {
30658
30658
  const record = oldSource[i];
30659
- if (record.vTableMerge) {
30659
+ if (record.vtableMerge) {
30660
30660
  oldGroupMap.set(record.vtableMergeName, i);
30661
30661
  }
30662
30662
  }
@@ -30665,7 +30665,7 @@
30665
30665
  newGroupMap = new Map();
30666
30666
  for (let i = 0; i < newSource.length; i++) {
30667
30667
  const record = newSource[i];
30668
- if (record.vTableMerge) {
30668
+ if (record.vtableMerge) {
30669
30669
  newGroupMap.set(record.vtableMergeName, i);
30670
30670
  }
30671
30671
  }
@@ -33997,7 +33997,7 @@
33997
33997
  isAsync = true;
33998
33998
  }
33999
33999
  let cellGroup;
34000
- if (type === 'text' || type === 'link') {
34000
+ if (type === 'text' || type === 'link' || customResult) {
34001
34001
  if (type === 'link') {
34002
34002
  const cellValue = value;
34003
34003
  const headerStyle = table._getCellStyle(col, row);
@@ -34150,9 +34150,11 @@
34150
34150
  range = table.getCellRange(col, row);
34151
34151
  isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;
34152
34152
  }
34153
+ let isvtableMerge = false;
34153
34154
  if (table.internalProps.enableTreeNodeMerge && isMerge) {
34154
- const { vtableMergeName, vTableMerge } = table.getCellRawRecord(range.start.col, range.start.row);
34155
- if (vTableMerge) {
34155
+ const { vtableMergeName, vtableMerge } = table.getCellRawRecord(range.start.col, range.start.row);
34156
+ isvtableMerge = vtableMerge;
34157
+ if (vtableMerge) {
34156
34158
  mayHaveIcon = true;
34157
34159
  if (table.options.groupTitleCustomLayout) {
34158
34160
  customResult = dealWithCustom(table.options.groupTitleCustomLayout, undefined, range.start.col, range.start.row, table.getColsWidth(range.start.col, range.end.col), table.getRowsHeight(range.start.row, range.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], range, table);
@@ -34247,9 +34249,11 @@
34247
34249
  if (!addNew && oldCellGroup.role === 'empty') {
34248
34250
  return undefined;
34249
34251
  }
34250
- const type = table.isHeader(col, row)
34251
- ? table._getHeaderLayoutMap(col, row).headerType
34252
- : table.getBodyColumnType(col, row);
34252
+ const type = isvtableMerge
34253
+ ? 'text'
34254
+ : table.isHeader(col, row)
34255
+ ? table._getHeaderLayoutMap(col, row).headerType
34256
+ : table.getBodyColumnType(col, row);
34253
34257
  const padding = cellTheme._vtable.padding;
34254
34258
  const textAlign = cellTheme.text.textAlign;
34255
34259
  const textBaseline = cellTheme.text.textBaseline;
@@ -35413,9 +35417,12 @@
35413
35417
  }
35414
35418
  cell.needUpdateHeight = false;
35415
35419
  cell.setAttribute('height', distHeight);
35416
- const type = scene.table.isHeader(col, row)
35417
- ? scene.table._getHeaderLayoutMap(col, row).headerType
35418
- : scene.table.getBodyColumnType(col, row);
35420
+ const isvtableMerge = scene.table.getCellRawRecord(col, row)?.vtableMerge;
35421
+ const type = isvtableMerge
35422
+ ? 'text'
35423
+ : scene.table.isHeader(col, row)
35424
+ ? scene.table._getHeaderLayoutMap(col, row).headerType
35425
+ : scene.table.getBodyColumnType(col, row);
35419
35426
  if (type === 'progressbar') {
35420
35427
  const columnDefine = scene.table.getBodyColumnDefine(col, row);
35421
35428
  const style = scene.table._getCellStyle(col, row);
@@ -35477,8 +35484,8 @@
35477
35484
  let customRender;
35478
35485
  let customLayout;
35479
35486
  const cellLocation = scene.table.getCellLocation(col, row);
35480
- const { vTableMerge } = scene.table.getCellRawRecord(col, row);
35481
- if (vTableMerge && scene.table.options.groupTitleCustomLayout) {
35487
+ const { vtableMerge } = scene.table.getCellRawRecord(col, row);
35488
+ if (vtableMerge && scene.table.options.groupTitleCustomLayout) {
35482
35489
  customLayout = scene.table.options.groupTitleCustomLayout;
35483
35490
  }
35484
35491
  else if (cellLocation !== 'body') {
@@ -35751,9 +35758,12 @@
35751
35758
  return false;
35752
35759
  }
35753
35760
  const autoRowHeight = scene.table.isAutoRowHeight(row);
35754
- const type = scene.table.isHeader(col, row)
35755
- ? scene.table._getHeaderLayoutMap(col, row).headerType
35756
- : scene.table.getBodyColumnType(col, row);
35761
+ const isvtableMerge = scene.table.getCellRawRecord(col, row)?.vtableMerge;
35762
+ const type = isvtableMerge
35763
+ ? 'text'
35764
+ : scene.table.isHeader(col, row)
35765
+ ? scene.table._getHeaderLayoutMap(col, row).headerType
35766
+ : scene.table.getBodyColumnType(col, row);
35757
35767
  let isHeightChange = false;
35758
35768
  if (type === 'progressbar') {
35759
35769
  const columnDefine = scene.table.getBodyColumnDefine(col, row);
@@ -35829,8 +35839,8 @@
35829
35839
  let customRender;
35830
35840
  let customLayout;
35831
35841
  const cellType = scene.table.getCellLocation(col, row);
35832
- const { vTableMerge } = scene.table.getCellRawRecord(col, row);
35833
- if (vTableMerge && scene.table.options.groupTitleCustomLayout) {
35842
+ const { vtableMerge } = scene.table.getCellRawRecord(col, row);
35843
+ if (vtableMerge && scene.table.options.groupTitleCustomLayout) {
35834
35844
  customLayout = scene.table.options.groupTitleCustomLayout;
35835
35845
  }
35836
35846
  else if (cellType !== 'body') {
@@ -37276,10 +37286,13 @@
37276
37286
  });
37277
37287
  borderRect.addChild(shadowRect);
37278
37288
  const hackRect = createRect({
37279
- width: 1,
37280
- height: 1,
37289
+ x: borderLeft / 2,
37290
+ y: borderTop / 2,
37291
+ width: group.attribute.width,
37292
+ height: group.attribute.height,
37281
37293
  fill: 'transparent',
37282
- pickable: false
37294
+ pickable: false,
37295
+ globalCompositeOperation: 'source-over'
37283
37296
  });
37284
37297
  borderRect.addChild(hackRect);
37285
37298
  }
@@ -38167,7 +38180,11 @@
38167
38180
  else if (state.table.theme.selectionStyle.selectionFillMode === 'replace') {
38168
38181
  for (let i = 0; i < ranges.length; i++) {
38169
38182
  const range = ranges[i];
38170
- if (range.start.col <= col && range.start.row <= row && range.end.col >= col && range.end.row >= row) {
38183
+ const rangeColStart = Math.min(range.start.col, range.end.col);
38184
+ const rangeColEnd = Math.max(range.start.col, range.end.col);
38185
+ const rangeRowStart = Math.min(range.start.row, range.end.row);
38186
+ const rangeRowEnd = Math.max(range.start.row, range.end.row);
38187
+ if (rangeColStart <= col && rangeRowStart <= row && rangeColEnd >= col && rangeRowEnd >= row) {
38171
38188
  selectMode = 'cellBgColor';
38172
38189
  break;
38173
38190
  }
@@ -39787,9 +39804,11 @@
39787
39804
  cellHeight = mergeSize.cellHeight;
39788
39805
  }
39789
39806
  }
39807
+ let isvtableMerge = false;
39790
39808
  if (table.internalProps.enableTreeNodeMerge && isMerge) {
39791
- const { vtableMergeName, vTableMerge } = table.getCellRawRecord(range.start.col, range.start.row);
39792
- if (vTableMerge) {
39809
+ const { vtableMergeName, vtableMerge } = table.getCellRawRecord(range.start.col, range.start.row);
39810
+ isvtableMerge = vtableMerge;
39811
+ if (vtableMerge) {
39793
39812
  mayHaveIcon = true;
39794
39813
  if (table.options.groupTitleCustomLayout) {
39795
39814
  customResult = dealWithCustom(table.options.groupTitleCustomLayout, undefined, range.start.col, range.start.row, table.getColsWidth(range.start.col, range.end.col), table.getRowsHeight(range.start.row, range.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], range, table);
@@ -39816,9 +39835,11 @@
39816
39835
  if (cellLocation !== 'body' && !cellTheme.group.fill) {
39817
39836
  cellTheme.group.fill = '#fff';
39818
39837
  }
39819
- const type = (table.isHeader(col, row)
39820
- ? table._getHeaderLayoutMap(col, row).headerType
39821
- : table.getBodyColumnType(col, row)) || 'text';
39838
+ const type = isvtableMerge
39839
+ ? 'text'
39840
+ : (table.isHeader(col, row)
39841
+ ? table._getHeaderLayoutMap(col, row).headerType
39842
+ : table.getBodyColumnType(col, row)) || 'text';
39822
39843
  if (isPromise(value)) {
39823
39844
  createEmptyCellGroup(col, row, 0, y, cellWidth, cellHeight, columnGroup);
39824
39845
  dealPromiseData(value, table, createCell.bind(null, type, value, define, table, col, row, colWidth, cellWidth, cellHeight, columnGroup, y, padding, textAlign, textBaseline, mayHaveIcon, cellTheme, range, customResult));
@@ -44387,7 +44408,7 @@
44387
44408
  this.bodyGroup.children?.forEach((columnGroup) => {
44388
44409
  columnGroup
44389
44410
  .getChildAt(row)
44390
- .getChildren()
44411
+ ?.getChildren()
44391
44412
  .forEach((node) => {
44392
44413
  if (node.name === 'checkbox') {
44393
44414
  node.setAttribute('checked', checked);
@@ -44397,7 +44418,7 @@
44397
44418
  }
44398
44419
  else {
44399
44420
  const columnGroup = this.getColGroup(col);
44400
- columnGroup.children?.forEach((cellNode) => {
44421
+ columnGroup?.children?.forEach((cellNode) => {
44401
44422
  cellNode.getChildren().find(node => {
44402
44423
  if (node.name === 'checkbox') {
44403
44424
  node.setAttribute('checked', checked);
@@ -45032,9 +45053,12 @@
45032
45053
  this.updateNextFrame();
45033
45054
  }
45034
45055
  updateCellContentWhileResize(col, row) {
45035
- const type = this.table.isHeader(col, row)
45036
- ? this.table._getHeaderLayoutMap(col, row).headerType
45037
- : this.table.getBodyColumnType(col, row);
45056
+ const isvtableMerge = this.table.getCellRawRecord(col, row)?.vtableMerge;
45057
+ const type = isvtableMerge
45058
+ ? 'text'
45059
+ : this.table.isHeader(col, row)
45060
+ ? this.table._getHeaderLayoutMap(col, row).headerType
45061
+ : this.table.getBodyColumnType(col, row);
45038
45062
  const cellGroup = this.getCell(col, row);
45039
45063
  if (type === 'image' || type === 'video') {
45040
45064
  updateImageCellContentWhileResize(cellGroup, col, row, 0, 0, this.table);
@@ -45059,10 +45083,15 @@
45059
45083
  const drawRange = this.table.getDrawRange();
45060
45084
  if (abstractY >= drawRange.top && abstractY <= drawRange.bottom) {
45061
45085
  cell = this.table.getCellAtRelativePosition(abstractX - offset, abstractY);
45062
- return cell;
45086
+ if (cell.col === this.table.colCount - 1) {
45087
+ return cell;
45088
+ }
45063
45089
  }
45064
45090
  return { col: -1, row: -1 };
45065
45091
  }
45092
+ if (!cellGroup.stage) {
45093
+ return { col: -1, row: -1 };
45094
+ }
45066
45095
  if (abstractX < cellGroup.globalAABBBounds.x1 + offset) {
45067
45096
  cell = { col: cellGroup.col - 1, row: cellGroup.row, x: cellGroup.globalAABBBounds.x1 };
45068
45097
  }
@@ -45071,7 +45100,7 @@
45071
45100
  }
45072
45101
  if (cell &&
45073
45102
  this.table.rightFrozenColCount > 0 &&
45074
- cell.col === this.table.colCount - this.table.rightFrozenColCount - 1 &&
45103
+ cell.col >= this.table.colCount - this.table.rightFrozenColCount - 1 &&
45075
45104
  this.table.tableNoFrameWidth -
45076
45105
  this.table.getFrozenColsWidth() -
45077
45106
  this.table.getRightFrozenColsWidth() +
@@ -45097,7 +45126,7 @@
45097
45126
  }
45098
45127
  if (cell &&
45099
45128
  this.table.bottomFrozenRowCount > 0 &&
45100
- cell.row === this.table.rowCount - this.table.bottomFrozenRowCount - 1 &&
45129
+ cell.row >= this.table.rowCount - this.table.bottomFrozenRowCount - 1 &&
45101
45130
  this.table.tableNoFrameHeight -
45102
45131
  this.table.getFrozenRowsHeight() -
45103
45132
  this.table.getBottomFrozenRowsHeight() +
@@ -46351,14 +46380,14 @@
46351
46380
  !state.table.transpose) {
46352
46381
  state.table.scenegraph.component.setFrozenColumnShadow(state.table.frozenColCount - 1, state.columnResize.isRightFrozen);
46353
46382
  }
46354
- else if (state.columnResize.col >= state.table.colCount - state.table.rightFrozenColCount &&
46383
+ else if (state.table.options.frozenColCount) {
46384
+ state.table.scenegraph.component.setFrozenColumnShadow(state.table.frozenColCount - 1);
46385
+ }
46386
+ if (state.columnResize.col >= state.table.colCount - state.table.rightFrozenColCount &&
46355
46387
  !state.table.isPivotTable() &&
46356
46388
  !state.table.transpose) {
46357
46389
  state.table.scenegraph.component.setRightFrozenColumnShadow(state.table.colCount - state.table.rightFrozenColCount);
46358
46390
  }
46359
- else if (state.table.options.frozenColCount) {
46360
- state.table.scenegraph.component.setFrozenColumnShadow(state.table.frozenColCount - 1);
46361
- }
46362
46391
  else if (state.table.options.rightFrozenColCount) {
46363
46392
  state.table.scenegraph.component.setRightFrozenColumnShadow(state.table.colCount - state.table.rightFrozenColCount);
46364
46393
  }
@@ -48040,11 +48069,11 @@
48040
48069
  state.showVerticalScrollBar(true);
48041
48070
  }
48042
48071
  isWheelEvent && state.resetInteractionState();
48043
- if (event.cancelable &&
48072
+ if (event.nativeEvent.cancelable &&
48044
48073
  (state.table.internalProps.overscrollBehavior === 'none' ||
48045
48074
  (Math.abs(deltaY) >= Math.abs(deltaX) && deltaY !== 0 && isVerticalScrollable(deltaY, state)) ||
48046
48075
  (Math.abs(deltaY) <= Math.abs(deltaX) && deltaX !== 0 && isHorizontalScrollable(deltaX, state)))) {
48047
- event.preventDefault();
48076
+ event.nativeEvent.preventDefault();
48048
48077
  }
48049
48078
  }
48050
48079
  function optimizeScrollXY(x, y, ratio) {
@@ -49246,7 +49275,7 @@
49246
49275
  }
49247
49276
  }
49248
49277
  }
49249
- else {
49278
+ else if (!(e.ctrlKey || e.metaKey || e.shiftKey)) {
49250
49279
  const editCellTrigger = table.options.editCellTrigger;
49251
49280
  if ((editCellTrigger === 'keydown' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown'))) &&
49252
49281
  !table.editorManager?.editingEditor) {
@@ -52413,6 +52442,9 @@
52413
52442
  customStyleId: customStyleId
52414
52443
  });
52415
52444
  }
52445
+ else if (this.customCellStyleArrangement[index].customStyleId === customStyleId) {
52446
+ return;
52447
+ }
52416
52448
  else {
52417
52449
  this.customCellStyleArrangement[index].customStyleId = customStyleId;
52418
52450
  }
@@ -54284,7 +54316,7 @@
54284
54316
  let cacheKey;
54285
54317
  const cellType = table.getCellType(col, row);
54286
54318
  const rawRecord = table.getCellOriginRecord(col, row);
54287
- if (rawRecord?.vTableMerge) {
54319
+ if (rawRecord?.vtableMerge) {
54288
54320
  cacheKey = 'merge-title';
54289
54321
  }
54290
54322
  else if (table.isSeriesNumberInBody(col, row)) {
@@ -54298,7 +54330,7 @@
54298
54330
  cacheKey = row + cellType;
54299
54331
  }
54300
54332
  let cacheStyle;
54301
- if (rawRecord?.vTableMerge) {
54333
+ if (rawRecord?.vtableMerge) {
54302
54334
  cacheStyle = table.bodyMergeTitleCache.get(cacheKey);
54303
54335
  }
54304
54336
  else if (layoutMap.isBottomFrozenRow(row)) {
@@ -54316,7 +54348,7 @@
54316
54348
  const column = layoutMap.getBody(col, row);
54317
54349
  const styleClass = table.internalProps.bodyHelper.getStyleClass(table.getCellType(col, row));
54318
54350
  const style = column?.style;
54319
- cacheStyle = of$2(style, rawRecord?.vTableMerge && table.theme.groupTitleStyle
54351
+ cacheStyle = of$2(style, rawRecord?.vtableMerge && table.theme.groupTitleStyle
54320
54352
  ? table.theme.groupTitleStyle
54321
54353
  : layoutMap.isBottomFrozenRow(row) && table.theme.bottomFrozenStyle
54322
54354
  ? table.theme.bottomFrozenStyle
@@ -54380,7 +54412,7 @@
54380
54412
  return TABLE_EVENT_TYPE;
54381
54413
  }
54382
54414
  options;
54383
- version = "1.7.1";
54415
+ version = "1.7.3";
54384
54416
  pagination;
54385
54417
  id = `VTable${Date.now()}`;
54386
54418
  headerStyleCache;
@@ -58129,7 +58161,7 @@
58129
58161
  return;
58130
58162
  }
58131
58163
  const cellRecord = layout._table.getCellRawRecord(col, row);
58132
- if (cellRecord?.vTableMerge) {
58164
+ if (cellRecord?.vtableMerge) {
58133
58165
  cellRange.start.col = layout.rowHeaderLevelCount;
58134
58166
  cellRange.end.col = layout.colCount - 1;
58135
58167
  cellRange.start.row = cellRange.end.row = row;
@@ -73263,7 +73295,7 @@
73263
73295
  }
73264
73296
 
73265
73297
  registerForVrender();
73266
- const version = "1.7.1";
73298
+ const version = "1.7.3";
73267
73299
  function getIcons() {
73268
73300
  return get$2();
73269
73301
  }