@visactor/vtable 1.23.3 → 1.24.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 (79) hide show
  1. package/cjs/ListTable.d.ts +1 -0
  2. package/cjs/ListTable.js +182 -24
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotTable.d.ts +1 -0
  5. package/cjs/PivotTable.js +10 -2
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/core/BaseTable.d.ts +9 -0
  8. package/cjs/core/BaseTable.js +64 -15
  9. package/cjs/core/BaseTable.js.map +1 -1
  10. package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
  11. package/cjs/core/TABLE_EVENT_TYPE.js +2 -0
  12. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  13. package/cjs/core/animation.js +5 -3
  14. package/cjs/core/animation.js.map +1 -1
  15. package/cjs/core/record-helper.js +83 -13
  16. package/cjs/core/record-helper.js.map +1 -1
  17. package/cjs/data/DataSource.js +3 -2
  18. package/cjs/data/DataSource.js.map +1 -1
  19. package/cjs/dataset/DataStatistics.js +1 -2
  20. package/cjs/edit/edit-manager.js +21 -15
  21. package/cjs/edit/edit-manager.js.map +1 -1
  22. package/cjs/index.d.ts +3 -3
  23. package/cjs/index.js +51 -12
  24. package/cjs/index.js.map +1 -1
  25. package/cjs/layout/cell-range/simple-cell-range.js +14 -4
  26. package/cjs/layout/cell-range/simple-cell-range.js.map +1 -1
  27. package/cjs/scenegraph/group-creater/cell-helper.js +1 -1
  28. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  29. package/cjs/scenegraph/group-creater/init-scenegraph.js +1 -1
  30. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  31. package/cjs/state/state.js +14 -11
  32. package/cjs/state/state.js.map +1 -1
  33. package/cjs/ts-types/base-table.d.ts +5 -0
  34. package/cjs/ts-types/base-table.js.map +1 -1
  35. package/cjs/ts-types/events.d.ts +16 -0
  36. package/cjs/ts-types/events.js.map +1 -1
  37. package/cjs/ts-types/table-engine.js.map +1 -1
  38. package/cjs/vrender.js.map +1 -1
  39. package/dist/vtable.js +906 -218
  40. package/dist/vtable.min.js +2 -2
  41. package/es/ListTable.d.ts +1 -0
  42. package/es/ListTable.js +177 -24
  43. package/es/ListTable.js.map +1 -1
  44. package/es/PivotTable.d.ts +1 -0
  45. package/es/PivotTable.js +8 -2
  46. package/es/PivotTable.js.map +1 -1
  47. package/es/core/BaseTable.d.ts +9 -0
  48. package/es/core/BaseTable.js +64 -15
  49. package/es/core/BaseTable.js.map +1 -1
  50. package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
  51. package/es/core/TABLE_EVENT_TYPE.js +2 -0
  52. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  53. package/es/core/animation.js +5 -3
  54. package/es/core/animation.js.map +1 -1
  55. package/es/core/record-helper.js +83 -12
  56. package/es/core/record-helper.js.map +1 -1
  57. package/es/data/DataSource.js +3 -2
  58. package/es/data/DataSource.js.map +1 -1
  59. package/es/dataset/DataStatistics.js +1 -2
  60. package/es/edit/edit-manager.js +20 -16
  61. package/es/edit/edit-manager.js.map +1 -1
  62. package/es/index.d.ts +3 -3
  63. package/es/index.js +5 -3
  64. package/es/index.js.map +1 -1
  65. package/es/layout/cell-range/simple-cell-range.js +14 -4
  66. package/es/layout/cell-range/simple-cell-range.js.map +1 -1
  67. package/es/scenegraph/group-creater/cell-helper.js +1 -1
  68. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  69. package/es/scenegraph/group-creater/init-scenegraph.js +1 -1
  70. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  71. package/es/state/state.js +14 -11
  72. package/es/state/state.js.map +1 -1
  73. package/es/ts-types/base-table.d.ts +5 -0
  74. package/es/ts-types/base-table.js.map +1 -1
  75. package/es/ts-types/events.d.ts +16 -0
  76. package/es/ts-types/events.js.map +1 -1
  77. package/es/ts-types/table-engine.js.map +1 -1
  78. package/es/vrender.js.map +1 -1
  79. package/package.json +5 -5
@@ -77,5 +77,4 @@ function dateFormat(baseField, formatString, utcOutput, mthNames, dayNames) {
77
77
  Object.defineProperty(exports, "__esModule", {
78
78
  value: !0
79
79
  }), exports.dateFormat = exports.numberFormat = void 0, exports.numberFormat = numberFormat,
80
- exports.dateFormat = dateFormat;
81
- //# sourceMappingURL=DataStatistics.js.map
80
+ exports.dateFormat = dateFormat;
@@ -60,7 +60,7 @@ class EditManager {
60
60
  this.listenersId.push(doubleClickEventId, clickEventId, selectedChangedEventId);
61
61
  }
62
62
  startEditCell(col, row, value, editElement) {
63
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
63
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
64
64
  if (this.editingEditor) return;
65
65
  const editor = this.table.getEditor(col, row);
66
66
  if (editor) {
@@ -76,7 +76,8 @@ class EditManager {
76
76
  col: col,
77
77
  row: row
78
78
  }), this.table._makeVisibleCell(col, row), this.editingEditor = editor;
79
- const dataValue = (0, vutils_1.isValid)(value) ? value : this.table.getCellOriginValue(col, row), rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row)), referencePosition = {
79
+ const customMergeText = null === (_j = this.table.getCustomMerge(col, row)) || void 0 === _j ? void 0 : _j.text, dataValue = (0,
80
+ vutils_1.isValid)(value) ? value : (0, vutils_1.isValid)(customMergeText) ? customMergeText : this.table.getCellOriginValue(col, row), rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row)), referencePosition = {
80
81
  rect: {
81
82
  left: rect.left,
82
83
  top: rect.top,
@@ -86,10 +87,10 @@ class EditManager {
86
87
  };
87
88
  col === this.table.colCount - 1 ? referencePosition.rect.width = rect.width - 1 : referencePosition.rect.width = rect.width + 1,
88
89
  row === this.table.rowCount - 1 ? referencePosition.rect.height = rect.height - 1 : referencePosition.rect.height = rect.height + 1,
89
- editor.beginEditing, null === (_j = editor.beginEditing) || void 0 === _j || _j.call(editor, this.table.getElement(), referencePosition, dataValue),
90
- editor.bindSuccessCallback, null === (_k = editor.bindSuccessCallback) || void 0 === _k || _k.call(editor, (() => {
90
+ editor.beginEditing, null === (_k = editor.beginEditing) || void 0 === _k || _k.call(editor, this.table.getElement(), referencePosition, dataValue),
91
+ editor.bindSuccessCallback, null === (_l = editor.bindSuccessCallback) || void 0 === _l || _l.call(editor, (() => {
91
92
  this.completeEdit();
92
- })), null === (_l = editor.onStart) || void 0 === _l || _l.call(editor, {
93
+ })), null === (_m = editor.onStart) || void 0 === _m || _m.call(editor, {
93
94
  value: dataValue,
94
95
  endEdit: () => {
95
96
  this.completeEdit();
@@ -103,7 +104,7 @@ class EditManager {
103
104
  }
104
105
  }
105
106
  completeEdit(e) {
106
- var _a, _b;
107
+ var _a, _b, _c;
107
108
  if (!this.editingEditor) return !0;
108
109
  if (this.isValidatingValue) return !1;
109
110
  this.cacheLastSelectedCellEditor = {};
@@ -113,7 +114,8 @@ class EditManager {
113
114
  } else if (!editor.isEditorElement || editor.isEditorElement(target)) return !1;
114
115
  if (this.editingEditor.getValue, this.editingEditor.validateValue) {
115
116
  this.isValidatingValue = !0;
116
- const newValue = this.editingEditor.getValue(), oldValue = this.table.getCellOriginValue(this.editCell.col, this.editCell.row), target = null == e ? void 0 : e.target, maybePromiseOrValue = null === (_b = (_a = this.editingEditor).validateValue) || void 0 === _b ? void 0 : _b.call(_a, newValue, oldValue, this.editCell, this.table, !!this.table.getElement().contains(target));
117
+ const newValue = this.editingEditor.getValue(), customMergeText = null === (_a = this.table.getCustomMerge(this.editCell.col, this.editCell.row)) || void 0 === _a ? void 0 : _a.text, oldValue = (0,
118
+ vutils_1.isValid)(customMergeText) ? customMergeText : this.table.getCellOriginValue(this.editCell.col, this.editCell.row), target = null == e ? void 0 : e.target, maybePromiseOrValue = null === (_c = (_b = this.editingEditor).validateValue) || void 0 === _c ? void 0 : _c.call(_b, newValue, oldValue, this.editCell, this.table, !!this.table.getElement().contains(target));
117
119
  return (0, helper_1.isPromise)(maybePromiseOrValue) ? (this.isValidatingValue = !0,
118
120
  new Promise(((resolve, reject) => {
119
121
  maybePromiseOrValue.then((result => {
@@ -127,15 +129,18 @@ class EditManager {
127
129
  }
128
130
  doExit() {
129
131
  var _a, _b, _c, _d, _e, _f, _g, _h;
130
- const changedValue = null === (_b = (_a = this.editingEditor).getValue) || void 0 === _b ? void 0 : _b.call(_a), range = this.table.getCellRange(this.editCell.col, this.editCell.row), changedValues = [];
131
- for (let row = range.start.row; row <= range.end.row; row++) {
132
- const rowChangedValues = [];
133
- for (let col = range.start.col; col <= range.end.col; col++) rowChangedValues.push(changedValue);
134
- changedValues.push(rowChangedValues);
132
+ const changedValue = null === (_b = (_a = this.editingEditor).getValue) || void 0 === _b ? void 0 : _b.call(_a), range = this.table.getCellRange(this.editCell.col, this.editCell.row);
133
+ if (null === (_d = (_c = this.editingEditor).beforeEnd) || void 0 === _d || _d.call(_c),
134
+ range.isCustom) this.table.changeCellValue(range.start.col, range.start.row, changedValue); else {
135
+ const changedValues = [];
136
+ for (let row = range.start.row; row <= range.end.row; row++) {
137
+ const rowChangedValues = [];
138
+ for (let col = range.start.col; col <= range.end.col; col++) rowChangedValues.push(changedValue);
139
+ changedValues.push(rowChangedValues);
140
+ }
141
+ this.table.changeCellValues(range.start.col, range.start.row, changedValues);
135
142
  }
136
- null === (_d = (_c = this.editingEditor).beforeEnd) || void 0 === _d || _d.call(_c),
137
- this.table.changeCellValues(range.start.col, range.start.row, changedValues), this.editingEditor.exit,
138
- null === (_f = (_e = this.editingEditor).exit) || void 0 === _f || _f.call(_e),
143
+ this.editingEditor.exit, null === (_f = (_e = this.editingEditor).exit) || void 0 === _f || _f.call(_e),
139
144
  null === (_h = (_g = this.editingEditor).onEnd) || void 0 === _h || _h.call(_g),
140
145
  this.editingEditor = null, this.isValidatingValue = !1, this.beginTriggerEditCellMode = null;
141
146
  }
@@ -163,4 +168,5 @@ function dealWithValidateValue(validateValue, editManager, oldValue, resolve) {
163
168
  !0) : (null == resolve || resolve(!1), !1);
164
169
  }
165
170
 
171
+ //# sourceMappingURL=edit-manager.js.map
166
172
  exports.EditManager = EditManager;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/edit/edit-manager.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAG5D,wCAAoD;AAEpD,4CAA4C;AAC5C,6CAA2C;AAG3C,MAAa,WAAW;IAStB,YAAY,KAAmB;QAN/B,sBAAiB,GAAY,KAAK,CAAC;QAEnC,gBAAW,GAAa,EAAE,CAAC;QAG3B,gCAA2B,GAA4B,EAAE,CAAC;QAExD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,EAAE,eAAe,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,OAAsC,CAAC;QACzF,IAAI,CAAC,SAAS,CAAC,eAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS,CAAC,eAAuB;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAqB,CAAC;QACzC,MAAM,kBAAkB,GAAG,KAAK,CAAC,EAAE,CAAC,mCAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;;YACtE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;gBAC5C,OAAO;aACR;YAED,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAGvB,MAAM,YAAY,GAAG,IAAA,0BAAmB,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAC/C,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,MAAA,YAAY,CAAC,SAAS,0CAAE,UAAU,CACnC,CAAC;YACF,IAAI,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE;gBAG9E,OAAO;aACR;YACD,IAAI,MAAC,MAAA,CAAC,CAAC,MAAM,0CAAE,SAAmC,0CAAE,QAAQ,EAAE;gBAE5D,OAAO;aACR;YACD,IAAI,CAAC,wBAAwB,GAAG,aAAa,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC,mCAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;;YAC7D,MAAM,EAAE,eAAe,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1D,IAAI,eAAe,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;gBACxG,IAAI,MAAC,MAAA,CAAC,CAAC,MAAM,0CAAE,SAAmC,0CAAE,QAAQ,EAAE;oBAE5D,OAAO;iBACR;gBACD,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC;gBACxC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;aAC9B;iBAAM,IACL,eAAe,KAAK,SAAS;gBAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACvE;aAoBD;QACH,CAAC,CAAC,CAAC;QACH,MAAM,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC,mCAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE;YAC7E,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;YACxD,MAAM,mBAAmB,GACvB,cAAc,CAAC,MAAM,KAAK,CAAC;gBAC3B,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;gBACzD,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YAC5D,IACE,mBAAmB;gBACnB,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAC1G;gBACA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpF,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAE/G,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;oBACnC,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;iBAC/C;qBAAM;oBACL,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;iBAC/C;gBACD,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;oBACnC,iBAAiB,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBACjD;qBAAM;oBACL,iBAAiB,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBACjD;gBACD,MAAM,MAAM,GAAI,IAAI,CAAC,KAAsB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAChE,MAAM;oBACJ,UAAU,CAAC,GAAG,EAAE;;wBAGd,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;4BAE3C,MAAA,MAAM,CAAC,WAAW,uDAAG;gCACnB,iBAAiB;gCACjB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gCAClC,KAAK,EAAE,IAAI,CAAC,KAAK;gCACjB,GAAG;gCACH,GAAG;6BACJ,CAAC,CAAC;yBACJ;oBACH,CAAC,EAAE,EAAE,CAAC,CAAC;aACV;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAUlF,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW,EAAE,KAAuB,EAAE,WAA8B;;QAC7F,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO;SACR;QACD,MAAM,MAAM,GAAI,IAAI,CAAC,KAAsB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,WAAW,KAAI,MAAA,MAAC,MAAc,EAAC,UAAU,mDAAG,WAAW,CAAC,CAAA,CAAC;YAezD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;gBAC/D,OAAO;aACR;YAED,IAAI,MAAA,MAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAmC,0CAAE,aAAa,mDAAG,GAAG,EAAE,GAAG,CAAC,EAAE;gBAC5F,MAAM,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,YAAY,kDAAI,CAAC;gBACjD,MAAM,2BAA2B,GAAG,YAAY;oBAC9C,CAAC,CAAC,MAAA,MAAC,IAAI,CAAC,KAAa,CAAC,aAAa,0CAAE,UAAU,0CAAE,2BAA2B;oBAC5E,CAAC,CAAC,KAAK,CAAC;gBACV,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,2BAA2B,CAAC,EAAE;oBAClE,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;oBACxE,OAAO;iBACR;aACF;YAGD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,EAAE;gBACvB,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;gBAClE,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aAC9B;YAED,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACpF,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAG/G,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;gBACnC,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;aAC/C;iBAAM;gBACL,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;aAC/C;YACD,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;gBACnC,iBAAiB,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjD;iBAAM;gBACL,iBAAiB,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjD;YAED,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YAChH,MAAA,MAAM,CAAC,YAAY,uDAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;YAE7E,IAAI,MAAM,CAAC,mBAAmB,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;aACjG;YACD,MAAA,MAAM,CAAC,mBAAmB,uDAAG,GAAG,EAAE;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,MAAA,MAAM,CAAC,OAAO,uDAAG;gBACf,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,CAAC;gBACD,iBAAiB;gBACjB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBAClC,GAAG;gBACH,GAAG;gBACH,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;SACJ;IACH,CAAC;IAID,YAAY,CAAC,CAAS;;QACpB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO,KAAK,CAAC;SACd;QACD,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAiC,CAAC;QACpD,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEvC,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,gBAAgB,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;gBAErG,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;oBACnC,OAAO,KAAK,CAAC;iBACd;aACF;iBAAM,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;gBACpE,OAAO,KAAK,CAAC;aACd;SACF;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;SAC1F;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;YACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAiC,CAAC;YAEpD,MAAM,mBAAmB,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,aAAa,mDAC1D,QAAQ,EACR,QAAQ,EACR,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,EACV,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC3C,CAAC;YAEF,IAAI,IAAA,kBAAS,EAAC,mBAAmB,CAAC,EAAE;gBAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrC,mBAAmB;yBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;wBAQb,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACzD,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;wBACpB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;wBAC/B,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;wBACpC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;aACJ;YACD,OAAO,qBAAqB,CAAC,mBAAmB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SACnE;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;;QACJ,MAAM,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,QAAQ,kDAAI,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAU,EAAE,CAAC;QAChC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3D,MAAM,gBAAgB,GAAG,EAAE,CAAC;YAC5B,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC3D,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACrC;YACD,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACtC;QACD,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,SAAS,kDAAI,CAAC;QAChC,IAAI,CAAC,KAAsB,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC/F,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC1G,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,IAAI,kDAAI,CAAC;QAC5B,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,KAAK,kDAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACvC,CAAC;IAED,UAAU;;QACR,IAAI,IAAI,CAAC,aAAa,EAAE;YAEtB,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,IAAI,kDAAI,CAAC;YAC5B,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,KAAK,kDAAI,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC3B;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,EAAE,WAAC,OAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,sDAAI,CAAA,EAAA,CAAC,CAAC;QAChG,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA1UD,kCA0UC;AAED,SAAS,qBAAqB,CAC5B,aAAqC,EACrC,WAAwB,EACxB,QAAa,EACb,OAAyD;IAEzD,WAAW,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACtC,IAAI,aAAa,KAAK,eAAe,EAAE;QACrC,WAAW,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,aAAa,KAAK,iBAAiB,EAAE;QAC7C,WAAW,CAAC,aAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtD,WAAW,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,aAAa,KAAK,mBAAmB,EAAE;QAChD,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,aAAa,KAAK,qBAAqB,EAAE;QAClD,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,aAAa,KAAK,IAAI,EAAE;QACjC,WAAW,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;IACjB,OAAO,KAAK,CAAC;AACf,CAAC","file":"edit-manager.js","sourcesContent":["import type { IEditor, ValidateEnum } from '@visactor/vtable-editors';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ListTableAPI, ListTableConstructorOptions } from '../ts-types';\nimport { getCellEventArgsSet } from '../event/util';\nimport type { SimpleHeaderLayoutMap } from '../layout';\nimport { isPromise } from '../tools/helper';\nimport { isValid } from '@visactor/vutils';\nimport type { IIconGraphicAttribute } from '../scenegraph/graphic/icon';\n\nexport class EditManager {\n table: BaseTableAPI;\n editingEditor: IEditor;\n isValidatingValue: boolean = false;\n editCell: { col: number; row: number };\n listenersId: number[] = [];\n beginTriggerEditCellMode: 'doubleclick' | 'click' | 'keydown';\n /** 主要为了editor配置成函数的情况下,点击单元格流程造成接连调用getEditor()可能生成多个editor实例,所以需要缓存 */\n cacheLastSelectedCellEditor: Record<string, IEditor> = {};\n constructor(table: BaseTableAPI) {\n this.table = table;\n const { editCellTrigger = 'doubleclick' } = table.options as ListTableConstructorOptions;\n this.bindEvent(editCellTrigger as string);\n }\n\n bindEvent(editCellTrigger: string) {\n // const handler = this.table.internalProps.handler;\n const table = this.table as ListTableAPI;\n const doubleClickEventId = table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, e => {\n if (!editCellTrigger.includes('doubleclick')) {\n return;\n }\n\n const { col, row } = e;\n\n //取双击自动列宽逻辑\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent);\n const resizeCol = table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // 判断同双击自动列宽的时间监听的DBLCLICK_CELL\n // 如果是双击自动列宽 则编辑不开启\n return;\n }\n if ((e.target?.attribute as IIconGraphicAttribute)?.funcType) {\n // 点击功能图标不进入编辑\n return;\n }\n this.beginTriggerEditCellMode = 'doubleclick';\n this.startEditCell(col, row);\n });\n\n const clickEventId = table.on(TABLE_EVENT_TYPE.CLICK_CELL, e => {\n const { editCellTrigger = 'doubleclick' } = table.options;\n if (editCellTrigger === 'click' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('click'))) {\n if ((e.target?.attribute as IIconGraphicAttribute)?.funcType) {\n // 点击功能图标不进入编辑\n return;\n }\n this.beginTriggerEditCellMode = 'click';\n const { col, row } = e;\n this.startEditCell(col, row);\n } else if (\n editCellTrigger === 'keydown' ||\n (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown'))\n ) {\n // const { col, row } = e;\n // this.beginTriggerEditCellMode = 'keydown';\n // const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n // const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n // // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n // if (col === this.table.colCount - 1) {\n // referencePosition.rect.width = rect.width - 1;\n // } else {\n // referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n // }\n // if (row === this.table.rowCount - 1) {\n // referencePosition.rect.height = rect.height - 1;\n // } else {\n // referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n // }\n // const editor = (this.table as ListTableAPI).getEditor(col, row);\n // console.log('prepareEdit click-cell');\n // //需要准备编辑环境,等待输入。否则中文输入法第一个字符会被当做英文字符\n // editor.prepareEdit?.({ referencePosition, container: this.table.getElement(), table: this.table, col, row });\n }\n });\n const selectedChangedEventId = table.on(TABLE_EVENT_TYPE.SELECTED_CHANGED, e => {\n const selectedRanges = table.stateManager.select.ranges;\n const justOneCellSelected =\n selectedRanges.length === 1 &&\n selectedRanges[0].start.col === selectedRanges[0].end.col &&\n selectedRanges[0].start.row === selectedRanges[0].end.row;\n if (\n justOneCellSelected &&\n (editCellTrigger === 'keydown' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown')))\n ) {\n const { col, row } = e;\n this.beginTriggerEditCellMode = 'keydown';\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n if (col === this.table.colCount - 1) {\n referencePosition.rect.width = rect.width - 1;\n } else {\n referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n if (row === this.table.rowCount - 1) {\n referencePosition.rect.height = rect.height - 1;\n } else {\n referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n editor &&\n setTimeout(() => {\n // 为什么要加延时:因为这个SELECTED_CHANGED事件是pointerdown过来的,\n // 如果这里不加延时,会导致鼠标抬起pointerup的时候将table.getElement()元素设置成焦点,从而导致编辑器失去焦点(因为prepareEdit只是将editor的element设置pointerEvents为none)\n if (editor && this.editingEditor !== editor) {\n // 判断当前编辑器如果是当前需要准备的编辑器,则不进行准备编辑。这个是为了container-dom文件moveEditCellOnArrowKeys前后逻辑问题,前面有个selectCell会触发这个事件,后面有startEdit了,所以这个prepare就没必要了,触发的话反而有问题\n editor.prepareEdit?.({\n referencePosition,\n container: this.table.getElement(),\n table: this.table,\n col,\n row\n });\n }\n }, 10);\n }\n });\n this.listenersId.push(doubleClickEventId, clickEventId, selectedChangedEventId);\n\n // handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => {\n // this.completeEdit();\n // });\n // handler.on(this.table.getElement(), 'resize', (e: Event) => {\n // if (this.table.autoFillWidth || this.table.autoFillHeight) {\n // this.completeEdit();\n // }\n // });\n }\n\n startEditCell(col: number, row: number, value?: string | number, editElement?: HTMLInputElement) {\n if (this.editingEditor) {\n return;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\n editElement && (editor as any).setElement?.(editElement);\n // //自定义内容单元格不允许编辑\n // if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {\n // console.warn(\"VTable Warn: cell has config custom render or layout, can't be edited\");\n // return;\n // }\n // if (!this.table.isHeader(col, row)) {\n // const range = this.table.getCellRange(col, row);\n // const isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n // if (isMerge) {\n // console.warn(\"VTable Warn: this is merge cell, can't be edited\");\n // return;\n // }\n // }\n // 序号不允许编辑\n if (this.table.internalProps.layoutMap.isSeriesNumber(col, row)) {\n return;\n }\n //ListTable聚合值不可以修改,PivotTable聚合值在updateAggregationOnEditCell false可以修改,true不可以修改\n if ((this.table.internalProps.layoutMap as SimpleHeaderLayoutMap)?.isAggregation?.(col, row)) {\n const isPivotTable = this.table.isPivotTable?.();\n const updateAggregationOnEditCell = isPivotTable\n ? (this.table as any).internalProps?.dataConfig?.updateAggregationOnEditCell\n : false;\n if (!isPivotTable || (isPivotTable && updateAggregationOnEditCell)) {\n console.warn(\"VTable Warn: this is aggregation value, can't be edited\");\n return;\n }\n }\n\n // group title cell do not allow edit\n const record = this.table.getCellRawRecord(col, row);\n if (record?.vtableMerge) {\n console.warn(\"VTable Warn: this is group title, can't be edited\");\n return;\n }\n\n if (!this.editingEditor) {\n this.editCell = { col, row };\n }\n\n this.table._makeVisibleCell(col, row);\n this.editingEditor = editor;\n const dataValue = isValid(value) ? value : this.table.getCellOriginValue(col, row);\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n\n // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n if (col === this.table.colCount - 1) {\n referencePosition.rect.width = rect.width - 1;\n } else {\n referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n if (row === this.table.rowCount - 1) {\n referencePosition.rect.height = rect.height - 1;\n } else {\n referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n\n editor.beginEditing && console.warn('VTable Warn: `beginEditing` is deprecated, please use `onStart` instead.');\n editor.beginEditing?.(this.table.getElement(), referencePosition, dataValue);\n\n if (editor.bindSuccessCallback) {\n console.warn('VTable Warn: `bindSuccessCallback` is deprecated, please use `onStart` instead.');\n }\n editor.bindSuccessCallback?.(() => {\n this.completeEdit();\n });\n editor.onStart?.({\n value: dataValue,\n endEdit: () => {\n this.completeEdit();\n },\n referencePosition,\n container: this.table.getElement(),\n col,\n row,\n table: this.table\n });\n }\n }\n\n /** 如果是鼠标事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑\n * 返回值如果为false说明没有退出编辑状态 validateValue接口返回false 说明校验失败不退出编辑 */\n completeEdit(e?: Event): boolean | Promise<boolean> {\n if (!this.editingEditor) {\n return true;\n }\n if (this.isValidatingValue) {\n return false;\n }\n this.cacheLastSelectedCellEditor = {};\n const target = e?.target as HTMLElement | undefined;\n const { editingEditor: editor } = this;\n\n if (target) {\n if (editor.targetIsOnEditor) {\n console.warn('VTable Warn: `targetIsOnEditor` is deprecated, please use `isEditorElement` instead.');\n\n if (editor.targetIsOnEditor(target)) {\n return false;\n }\n } else if (!editor.isEditorElement || editor.isEditorElement(target)) {\n return false;\n }\n }\n\n if (!this.editingEditor.getValue) {\n console.warn('VTable Warn: `getValue` is not provided, did you forget to implement it?');\n }\n if (this.editingEditor.validateValue) {\n this.isValidatingValue = true;\n const newValue = this.editingEditor.getValue();\n const oldValue = this.table.getCellOriginValue(this.editCell.col, this.editCell.row);\n const target = e?.target as HTMLElement | undefined;\n\n const maybePromiseOrValue = this.editingEditor.validateValue?.(\n newValue,\n oldValue,\n this.editCell,\n this.table,\n !!this.table.getElement().contains(target)\n );\n\n if (isPromise(maybePromiseOrValue)) {\n this.isValidatingValue = true;\n return new Promise((resolve, reject) => {\n maybePromiseOrValue\n .then(result => {\n // if (result) {\n // this.doExit();\n // resolve(true);\n // } else {\n // this.isValidatingValue = false;\n // resolve(false);\n // }\n dealWithValidateValue(result, this, oldValue, resolve);\n })\n .catch((err: Error) => {\n this.isValidatingValue = false;\n console.error('VTable Error:', err);\n reject(err);\n });\n });\n }\n return dealWithValidateValue(maybePromiseOrValue, this, oldValue);\n }\n this.doExit();\n return true;\n }\n\n doExit() {\n const changedValue = this.editingEditor.getValue?.();\n const range = this.table.getCellRange(this.editCell.col, this.editCell.row);\n const changedValues: any[] = [];\n for (let row = range.start.row; row <= range.end.row; row++) {\n const rowChangedValues = [];\n for (let col = range.start.col; col <= range.end.col; col++) {\n rowChangedValues.push(changedValue);\n }\n changedValues.push(rowChangedValues);\n }\n this.editingEditor.beforeEnd?.();\n (this.table as ListTableAPI).changeCellValues(range.start.col, range.start.row, changedValues);\n this.editingEditor.exit && console.warn('VTable Warn: `exit` is deprecated, please use `onEnd` instead.');\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n this.isValidatingValue = false;\n this.beginTriggerEditCellMode = null;\n }\n\n cancelEdit() {\n if (this.editingEditor) {\n // TODO: 添加开发时弃用警告\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n // 清理缓存的编辑器实例,避免在后续 getEditor 调用中对已结束或未启动的编辑器重复调用 onEnd\n Object.values(this.cacheLastSelectedCellEditor).forEach((editor: IEditor) => editor?.onEnd?.());\n this.cacheLastSelectedCellEditor = {};\n }\n\n release() {\n this.listenersId.forEach(id => {\n this.table.off(id);\n });\n }\n}\n\nfunction dealWithValidateValue(\n validateValue: boolean | ValidateEnum,\n editManager: EditManager,\n oldValue: any,\n resolve?: (value: boolean | PromiseLike<boolean>) => void\n): boolean {\n editManager.isValidatingValue = false;\n if (validateValue === 'validate-exit') {\n editManager.doExit();\n resolve?.(true);\n return true;\n } else if (validateValue === 'invalidate-exit') {\n (editManager.editingEditor as any).setValue(oldValue);\n editManager.doExit();\n resolve?.(true);\n return true;\n } else if (validateValue === 'validate-not-exit') {\n resolve?.(false);\n return false;\n } else if (validateValue === 'invalidate-not-exit') {\n resolve?.(false);\n return false;\n } else if (validateValue === true) {\n editManager.doExit();\n resolve?.(true);\n return true;\n }\n resolve?.(false);\n return false;\n}\n"]}
1
+ {"version":3,"sources":["../src/edit/edit-manager.ts"],"names":[],"mappings":"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","file":"edit-manager.js","sourcesContent":["import type { IEditor, ValidateEnum } from '@visactor/vtable-editors';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ListTableAPI, ListTableConstructorOptions } from '../ts-types';\nimport { getCellEventArgsSet } from '../event/util';\nimport type { SimpleHeaderLayoutMap } from '../layout';\nimport { isPromise } from '../tools/helper';\nimport { isValid } from '@visactor/vutils';\nimport type { IIconGraphicAttribute } from '../scenegraph/graphic/icon';\n\nexport class EditManager {\n table: BaseTableAPI;\n editingEditor: IEditor;\n isValidatingValue: boolean = false;\n editCell: { col: number; row: number };\n listenersId: number[] = [];\n beginTriggerEditCellMode: 'doubleclick' | 'click' | 'keydown';\n /** 主要为了editor配置成函数的情况下,点击单元格流程造成接连调用getEditor()可能生成多个editor实例,所以需要缓存 */\n cacheLastSelectedCellEditor: Record<string, IEditor> = {};\n constructor(table: BaseTableAPI) {\n this.table = table;\n const { editCellTrigger = 'doubleclick' } = table.options as ListTableConstructorOptions;\n this.bindEvent(editCellTrigger as string);\n }\n\n bindEvent(editCellTrigger: string) {\n // const handler = this.table.internalProps.handler;\n const table = this.table as ListTableAPI;\n const doubleClickEventId = table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, e => {\n if (!editCellTrigger.includes('doubleclick')) {\n return;\n }\n\n const { col, row } = e;\n\n //取双击自动列宽逻辑\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent);\n const resizeCol = table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // 判断同双击自动列宽的时间监听的DBLCLICK_CELL\n // 如果是双击自动列宽 则编辑不开启\n return;\n }\n if ((e.target?.attribute as IIconGraphicAttribute)?.funcType) {\n // 点击功能图标不进入编辑\n return;\n }\n this.beginTriggerEditCellMode = 'doubleclick';\n this.startEditCell(col, row);\n });\n\n const clickEventId = table.on(TABLE_EVENT_TYPE.CLICK_CELL, e => {\n const { editCellTrigger = 'doubleclick' } = table.options;\n if (editCellTrigger === 'click' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('click'))) {\n if ((e.target?.attribute as IIconGraphicAttribute)?.funcType) {\n // 点击功能图标不进入编辑\n return;\n }\n this.beginTriggerEditCellMode = 'click';\n const { col, row } = e;\n this.startEditCell(col, row);\n } else if (\n editCellTrigger === 'keydown' ||\n (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown'))\n ) {\n // const { col, row } = e;\n // this.beginTriggerEditCellMode = 'keydown';\n // const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n // const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n // // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n // if (col === this.table.colCount - 1) {\n // referencePosition.rect.width = rect.width - 1;\n // } else {\n // referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n // }\n // if (row === this.table.rowCount - 1) {\n // referencePosition.rect.height = rect.height - 1;\n // } else {\n // referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n // }\n // const editor = (this.table as ListTableAPI).getEditor(col, row);\n // console.log('prepareEdit click-cell');\n // //需要准备编辑环境,等待输入。否则中文输入法第一个字符会被当做英文字符\n // editor.prepareEdit?.({ referencePosition, container: this.table.getElement(), table: this.table, col, row });\n }\n });\n const selectedChangedEventId = table.on(TABLE_EVENT_TYPE.SELECTED_CHANGED, e => {\n const selectedRanges = table.stateManager.select.ranges;\n const justOneCellSelected =\n selectedRanges.length === 1 &&\n selectedRanges[0].start.col === selectedRanges[0].end.col &&\n selectedRanges[0].start.row === selectedRanges[0].end.row;\n if (\n justOneCellSelected &&\n (editCellTrigger === 'keydown' || (Array.isArray(editCellTrigger) && editCellTrigger.includes('keydown')))\n ) {\n const { col, row } = e;\n this.beginTriggerEditCellMode = 'keydown';\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n if (col === this.table.colCount - 1) {\n referencePosition.rect.width = rect.width - 1;\n } else {\n referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n if (row === this.table.rowCount - 1) {\n referencePosition.rect.height = rect.height - 1;\n } else {\n referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n editor &&\n setTimeout(() => {\n // 为什么要加延时:因为这个SELECTED_CHANGED事件是pointerdown过来的,\n // 如果这里不加延时,会导致鼠标抬起pointerup的时候将table.getElement()元素设置成焦点,从而导致编辑器失去焦点(因为prepareEdit只是将editor的element设置pointerEvents为none)\n if (editor && this.editingEditor !== editor) {\n // 判断当前编辑器如果是当前需要准备的编辑器,则不进行准备编辑。这个是为了container-dom文件moveEditCellOnArrowKeys前后逻辑问题,前面有个selectCell会触发这个事件,后面有startEdit了,所以这个prepare就没必要了,触发的话反而有问题\n editor.prepareEdit?.({\n referencePosition,\n container: this.table.getElement(),\n table: this.table,\n col,\n row\n });\n }\n }, 10);\n }\n });\n this.listenersId.push(doubleClickEventId, clickEventId, selectedChangedEventId);\n\n // handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => {\n // this.completeEdit();\n // });\n // handler.on(this.table.getElement(), 'resize', (e: Event) => {\n // if (this.table.autoFillWidth || this.table.autoFillHeight) {\n // this.completeEdit();\n // }\n // });\n }\n\n startEditCell(col: number, row: number, value?: string | number, editElement?: HTMLInputElement) {\n if (this.editingEditor) {\n return;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\n editElement && (editor as any).setElement?.(editElement);\n // //自定义内容单元格不允许编辑\n // if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {\n // console.warn(\"VTable Warn: cell has config custom render or layout, can't be edited\");\n // return;\n // }\n // if (!this.table.isHeader(col, row)) {\n // const range = this.table.getCellRange(col, row);\n // const isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n // if (isMerge) {\n // console.warn(\"VTable Warn: this is merge cell, can't be edited\");\n // return;\n // }\n // }\n // 序号不允许编辑\n if (this.table.internalProps.layoutMap.isSeriesNumber(col, row)) {\n return;\n }\n //ListTable聚合值不可以修改,PivotTable聚合值在updateAggregationOnEditCell false可以修改,true不可以修改\n if ((this.table.internalProps.layoutMap as SimpleHeaderLayoutMap)?.isAggregation?.(col, row)) {\n const isPivotTable = this.table.isPivotTable?.();\n const updateAggregationOnEditCell = isPivotTable\n ? (this.table as any).internalProps?.dataConfig?.updateAggregationOnEditCell\n : false;\n if (!isPivotTable || (isPivotTable && updateAggregationOnEditCell)) {\n console.warn(\"VTable Warn: this is aggregation value, can't be edited\");\n return;\n }\n }\n\n // group title cell do not allow edit\n const record = this.table.getCellRawRecord(col, row);\n if (record?.vtableMerge) {\n console.warn(\"VTable Warn: this is group title, can't be edited\");\n return;\n }\n\n if (!this.editingEditor) {\n this.editCell = { col, row };\n }\n\n this.table._makeVisibleCell(col, row);\n this.editingEditor = editor;\n const customMergeText = this.table.getCustomMerge(col, row)?.text;\n const dataValue = isValid(value)\n ? value\n : isValid(customMergeText)\n ? customMergeText\n : this.table.getCellOriginValue(col, row);\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n\n // adjust last col&row, same as packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw\n if (col === this.table.colCount - 1) {\n referencePosition.rect.width = rect.width - 1;\n } else {\n referencePosition.rect.width = rect.width + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n if (row === this.table.rowCount - 1) {\n referencePosition.rect.height = rect.height - 1;\n } else {\n referencePosition.rect.height = rect.height + 1; // 这里的1应该根据单元格的borderWidth来定;\n }\n\n editor.beginEditing && console.warn('VTable Warn: `beginEditing` is deprecated, please use `onStart` instead.');\n editor.beginEditing?.(this.table.getElement(), referencePosition, dataValue);\n\n if (editor.bindSuccessCallback) {\n console.warn('VTable Warn: `bindSuccessCallback` is deprecated, please use `onStart` instead.');\n }\n editor.bindSuccessCallback?.(() => {\n this.completeEdit();\n });\n editor.onStart?.({\n value: dataValue,\n endEdit: () => {\n this.completeEdit();\n },\n referencePosition,\n container: this.table.getElement(),\n col,\n row,\n table: this.table\n });\n }\n }\n\n /** 如果是鼠标事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑\n * 返回值如果为false说明没有退出编辑状态 validateValue接口返回false 说明校验失败不退出编辑 */\n completeEdit(e?: Event): boolean | Promise<boolean> {\n if (!this.editingEditor) {\n return true;\n }\n if (this.isValidatingValue) {\n return false;\n }\n this.cacheLastSelectedCellEditor = {};\n const target = e?.target as HTMLElement | undefined;\n const { editingEditor: editor } = this;\n\n if (target) {\n if (editor.targetIsOnEditor) {\n console.warn('VTable Warn: `targetIsOnEditor` is deprecated, please use `isEditorElement` instead.');\n\n if (editor.targetIsOnEditor(target)) {\n return false;\n }\n } else if (!editor.isEditorElement || editor.isEditorElement(target)) {\n return false;\n }\n }\n\n if (!this.editingEditor.getValue) {\n console.warn('VTable Warn: `getValue` is not provided, did you forget to implement it?');\n }\n if (this.editingEditor.validateValue) {\n this.isValidatingValue = true;\n const newValue = this.editingEditor.getValue();\n const customMergeText = this.table.getCustomMerge(this.editCell.col, this.editCell.row)?.text;\n // 自定义合并单元格在编辑态看到的是 customMerge.text,因此校验 oldValue 也应以 text 为准,避免“校验基准值”与用户看到的不一致。\n const oldValue = isValid(customMergeText)\n ? customMergeText\n : this.table.getCellOriginValue(this.editCell.col, this.editCell.row);\n const target = e?.target as HTMLElement | undefined;\n\n const maybePromiseOrValue = this.editingEditor.validateValue?.(\n newValue,\n oldValue,\n this.editCell,\n this.table,\n !!this.table.getElement().contains(target)\n );\n\n if (isPromise(maybePromiseOrValue)) {\n this.isValidatingValue = true;\n return new Promise((resolve, reject) => {\n maybePromiseOrValue\n .then(result => {\n // if (result) {\n // this.doExit();\n // resolve(true);\n // } else {\n // this.isValidatingValue = false;\n // resolve(false);\n // }\n dealWithValidateValue(result, this, oldValue, resolve);\n })\n .catch((err: Error) => {\n this.isValidatingValue = false;\n console.error('VTable Error:', err);\n reject(err);\n });\n });\n }\n return dealWithValidateValue(maybePromiseOrValue, this, oldValue);\n }\n this.doExit();\n return true;\n }\n\n doExit() {\n const changedValue = this.editingEditor.getValue?.();\n const range = this.table.getCellRange(this.editCell.col, this.editCell.row);\n this.editingEditor.beforeEnd?.();\n if (range.isCustom) {\n // 自定义合并单元格的“数据落点”统一写到合并范围左上角单元格;展示值由 record-helper 同步到 customMergeCell.text。\n (this.table as ListTableAPI).changeCellValue(range.start.col, range.start.row, changedValue);\n } else {\n const changedValues: any[] = [];\n for (let row = range.start.row; row <= range.end.row; row++) {\n const rowChangedValues = [];\n for (let col = range.start.col; col <= range.end.col; col++) {\n rowChangedValues.push(changedValue);\n }\n changedValues.push(rowChangedValues);\n }\n (this.table as ListTableAPI).changeCellValues(range.start.col, range.start.row, changedValues);\n }\n this.editingEditor.exit && console.warn('VTable Warn: `exit` is deprecated, please use `onEnd` instead.');\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n this.isValidatingValue = false;\n this.beginTriggerEditCellMode = null;\n }\n\n cancelEdit() {\n if (this.editingEditor) {\n // TODO: 添加开发时弃用警告\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n // 清理缓存的编辑器实例,避免在后续 getEditor 调用中对已结束或未启动的编辑器重复调用 onEnd\n Object.values(this.cacheLastSelectedCellEditor).forEach((editor: IEditor) => editor?.onEnd?.());\n this.cacheLastSelectedCellEditor = {};\n }\n\n release() {\n this.listenersId.forEach(id => {\n this.table.off(id);\n });\n }\n}\n\nfunction dealWithValidateValue(\n validateValue: boolean | ValidateEnum,\n editManager: EditManager,\n oldValue: any,\n resolve?: (value: boolean | PromiseLike<boolean>) => void\n): boolean {\n editManager.isValidatingValue = false;\n if (validateValue === 'validate-exit') {\n editManager.doExit();\n resolve?.(true);\n return true;\n } else if (validateValue === 'invalidate-exit') {\n (editManager.editingEditor as any).setValue(oldValue);\n editManager.doExit();\n resolve?.(true);\n return true;\n } else if (validateValue === 'validate-not-exit') {\n resolve?.(false);\n return false;\n } else if (validateValue === 'invalidate-not-exit') {\n resolve?.(false);\n return false;\n } else if (validateValue === true) {\n editManager.doExit();\n resolve?.(true);\n return true;\n }\n resolve?.(false);\n return false;\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { graphicUtil } from './vrender';
2
1
  import * as TYPES from './ts-types';
3
2
  import * as core from './core';
4
3
  import * as data from './data';
@@ -24,8 +23,9 @@ export { getTargetCell } from './event/util';
24
23
  export { toBoxArray } from './tools/helper';
25
24
  export { Icon } from './scenegraph/graphic/icon';
26
25
  export { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';
27
- export declare const version = "1.23.3";
28
- export { TYPES, core, ListTable, ListTableSimple, BaseTableAPI, ListTableConstructorOptions, PivotTable, PivotTableSimple, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, textMeasure, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText, pluginsDefinition };
26
+ export { matrixAllocate, transformPointForCanvas, mapToCanvasPointForCanvas, registerGlobalEventTransformer, registerWindowEventTransformer, vglobal, Group, graphicUtil } from './vrender';
27
+ export declare const version = "1.24.0-alpha.0";
28
+ export { TYPES, core, ListTable, ListTableSimple, BaseTableAPI, ListTableConstructorOptions, PivotTable, PivotTableSimple, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, textMeasure, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, setCustomAlphabetCharSet, restoreMeasureText, pluginsDefinition };
29
29
  declare function getIcons(): {
30
30
  [key: string]: TYPES.ColumnIconOption;
31
31
  };
package/cjs/index.js CHANGED
@@ -29,16 +29,11 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
29
29
 
30
30
  Object.defineProperty(exports, "__esModule", {
31
31
  value: !0
32
- }), exports.EventTarget = exports.PIVOT_TABLE_EVENT_TYPE = exports.PIVOT_CHART_EVENT_TYPE = exports.TABLE_EVENT_TYPE = exports.pluginsDefinition = exports.restoreMeasureText = exports.setCustomAlphabetCharSet = exports.graphicUtil = exports.renderChart = exports.updateCell = exports.CustomLayout = exports.DataStatistics = exports.register = exports.clearGlobal = exports.getIcons = exports.data = exports.themes = exports.textMeasure = exports.PivotChart = exports.PivotTableSimple = exports.PivotTable = exports.ListTableSimple = exports.ListTable = exports.core = exports.TYPES = exports.version = exports.CUSTOM_CONTAINER_NAME = exports.CUSTOM_MERGE_PRE_NAME = exports.Icon = exports.toBoxArray = exports.getTargetCell = exports.getDataCellPath = void 0;
32
+ }), exports.EventTarget = exports.PIVOT_TABLE_EVENT_TYPE = exports.PIVOT_CHART_EVENT_TYPE = exports.TABLE_EVENT_TYPE = exports.pluginsDefinition = exports.restoreMeasureText = exports.setCustomAlphabetCharSet = exports.renderChart = exports.updateCell = exports.CustomLayout = exports.DataStatistics = exports.register = exports.clearGlobal = exports.getIcons = exports.data = exports.themes = exports.textMeasure = exports.PivotChart = exports.PivotTableSimple = exports.PivotTable = exports.ListTableSimple = exports.ListTable = exports.core = exports.TYPES = exports.version = exports.graphicUtil = exports.Group = exports.vglobal = exports.registerWindowEventTransformer = exports.registerGlobalEventTransformer = exports.mapToCanvasPointForCanvas = exports.transformPointForCanvas = exports.matrixAllocate = exports.CUSTOM_CONTAINER_NAME = exports.CUSTOM_MERGE_PRE_NAME = exports.Icon = exports.toBoxArray = exports.getTargetCell = exports.getDataCellPath = void 0;
33
33
 
34
34
  const vrender_1 = require("./vrender");
35
35
 
36
- Object.defineProperty(exports, "graphicUtil", {
37
- enumerable: !0,
38
- get: function() {
39
- return vrender_1.graphicUtil;
40
- }
41
- }), (0, vrender_1.registerForVrender)();
36
+ (0, vrender_1.registerForVrender)();
42
37
 
43
38
  const TYPES = __importStar(require("./ts-types"));
44
39
 
@@ -192,6 +187,20 @@ Object.defineProperty(exports, "Icon", {
192
187
 
193
188
  var custom_1 = require("./scenegraph/component/custom");
194
189
 
190
+ Object.defineProperty(exports, "CUSTOM_MERGE_PRE_NAME", {
191
+ enumerable: !0,
192
+ get: function() {
193
+ return custom_1.CUSTOM_MERGE_PRE_NAME;
194
+ }
195
+ }), Object.defineProperty(exports, "CUSTOM_CONTAINER_NAME", {
196
+ enumerable: !0,
197
+ get: function() {
198
+ return custom_1.CUSTOM_CONTAINER_NAME;
199
+ }
200
+ });
201
+
202
+ var vrender_2 = require("./vrender");
203
+
195
204
  function getIcons() {
196
205
  return icons.get();
197
206
  }
@@ -200,17 +209,47 @@ function clearGlobal() {
200
209
  register.clearAll();
201
210
  }
202
211
 
203
- Object.defineProperty(exports, "CUSTOM_MERGE_PRE_NAME", {
212
+ Object.defineProperty(exports, "matrixAllocate", {
204
213
  enumerable: !0,
205
214
  get: function() {
206
- return custom_1.CUSTOM_MERGE_PRE_NAME;
215
+ return vrender_2.matrixAllocate;
207
216
  }
208
- }), Object.defineProperty(exports, "CUSTOM_CONTAINER_NAME", {
217
+ }), Object.defineProperty(exports, "transformPointForCanvas", {
209
218
  enumerable: !0,
210
219
  get: function() {
211
- return custom_1.CUSTOM_CONTAINER_NAME;
220
+ return vrender_2.transformPointForCanvas;
221
+ }
222
+ }), Object.defineProperty(exports, "mapToCanvasPointForCanvas", {
223
+ enumerable: !0,
224
+ get: function() {
225
+ return vrender_2.mapToCanvasPointForCanvas;
226
+ }
227
+ }), Object.defineProperty(exports, "registerGlobalEventTransformer", {
228
+ enumerable: !0,
229
+ get: function() {
230
+ return vrender_2.registerGlobalEventTransformer;
231
+ }
232
+ }), Object.defineProperty(exports, "registerWindowEventTransformer", {
233
+ enumerable: !0,
234
+ get: function() {
235
+ return vrender_2.registerWindowEventTransformer;
236
+ }
237
+ }), Object.defineProperty(exports, "vglobal", {
238
+ enumerable: !0,
239
+ get: function() {
240
+ return vrender_2.vglobal;
241
+ }
242
+ }), Object.defineProperty(exports, "Group", {
243
+ enumerable: !0,
244
+ get: function() {
245
+ return vrender_2.Group;
246
+ }
247
+ }), Object.defineProperty(exports, "graphicUtil", {
248
+ enumerable: !0,
249
+ get: function() {
250
+ return vrender_2.graphicUtil;
212
251
  }
213
- }), exports.version = "1.23.3", exports.getIcons = getIcons, exports.clearGlobal = clearGlobal,
252
+ }), exports.version = "1.24.0-alpha.0", exports.getIcons = getIcons, exports.clearGlobal = clearGlobal,
214
253
  TYPES.AggregationType, __exportStar(require("./components"), exports), __exportStar(require("./scenegraph/group-creater/cell-type"), exports);
215
254
 
216
255
  var TABLE_EVENT_TYPE_1 = require("./core/TABLE_EVENT_TYPE");
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA4D;AA8G1D,4FA9GO,qBAAW,OA8GP;AA7Gb,IAAA,4BAAkB,GAAE,CAAC;AAErB,kDAAoC;AAiElC,sBAAK;AAhEP,6CAA+B;AAiE7B,oBAAI;AAhEN,6CAA+B;AA4F7B,oBAAI;AA3FN,+CAAiC;AACjC,qDAAuC;AA+FrC,4BAAQ;AA9FV,iDAAmC;AAwFjC,wBAAM;AAvFR,yEAA2D;AAiGzD,wCAAc;AAhGhB,6DAA+C;AAuG7C,8CAAiB;AAjFnB,mDAA4D;AAsC1D,0FAtCuB,4BAAS,OAsCvB;AArCX,yDAAqD;AAsCnD,gGAtCO,kCAAe,OAsCP;AApCjB,qDAA+D;AAuC7D,2FAvCwB,8BAAU,OAuCxB;AAtCZ,2DAAuD;AAuCrD,iGAvCO,oCAAgB,OAuCP;AAtClB,6CAA0C;AAyCxC,2FAzCO,uBAAU,OAyCP;AAvCZ,8DAAgD;AAoE9C,oCAAY;AAlEd,wEAAoE;AAmElE,2FAnEO,wBAAU,OAmEP;AAlEZ,gGAAqF;AAmEnF,4FAnEO,iCAAW,OAmEP;AAlEb,kEAA4G;AAqE1G,mGArEO,iCAAkB,OAqEP;AADlB,yGApE2B,uCAAwB,OAoE3B;AAhBxB,4FApDqD,0BAAW,OAoDrD;AA9Cb,uDAAwD;AAA/C,gHAAA,eAAe,OAAA;AACxB,+CAA6B;AAC7B,qCAA6C;AAApC,qGAAA,aAAa,OAAA;AACtB,yCAA4C;AAAnC,oGAAA,UAAU,OAAA;AACnB,kDAAiD;AAAxC,4FAAA,IAAI,OAAA;AACb,wDAA6F;AAApF,+GAAA,qBAAqB,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAKxC,QAAA,OAAO,GAAG,QAAQ,CAAC;AA2DhC,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAvBC,4BAAQ;AAyBV,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AA5BC,kCAAW;AA6Bb,KAAK,CAAC,eAAe,CAAC;AAEtB,+CAA6B;AAC7B,uEAAqD;AAErD,4DAA2D;AAAlD,oHAAA,gBAAgB,OAAA;AACzB,wFAA+G;AAAtG,gIAAA,sBAAsB,OAAA;AAAE,gIAAA,sBAAsB,OAAA;AAEvD,mDAAkD;AAAzC,0GAAA,WAAW,OAAA","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport * as pluginsDefinition from './plugins';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTableAll as ListTable } from './ListTable-all';\nimport { ListTableSimple } from './ListTable-simple';\n// import { PivotTable } from './PivotTable';\nimport { PivotTableAll as PivotTable } from './PivotTable-all';\nimport { PivotTableSimple } from './PivotTable-simple';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet, textMeasure } from './scenegraph/utils/text-measure';\nimport type { BaseTableAPI } from './ts-types/base-table';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\nexport { getTargetCell } from './event/util';\nexport { toBoxArray } from './tools/helper';\nexport { Icon } from './scenegraph/graphic/icon';\nexport { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';\n\n// export * as VRender from './vrender';\n// import * as VRender from './vrender';\n\nexport const version = \"1.23.3\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n BaseTableAPI,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableSimple,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n textMeasure,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText,\n pluginsDefinition\n // VRender // should use import {xxx} from '@visactor/vtable/es/vrender'\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n\nexport * from './components';\nexport * from './scenegraph/group-creater/cell-type';\n\nexport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nexport { PIVOT_CHART_EVENT_TYPE, PIVOT_TABLE_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\n\nexport { EventTarget } from './event/EventTarget';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA+C;AAC/C,IAAA,4BAAkB,GAAE,CAAC;AAErB,kDAAoC;AA4ElC,sBAAK;AA3EP,6CAA+B;AA4E7B,oBAAI;AA3EN,6CAA+B;AAuG7B,oBAAI;AAtGN,+CAAiC;AACjC,qDAAuC;AA0GrC,4BAAQ;AAzGV,iDAAmC;AAmGjC,wBAAM;AAlGR,yEAA2D;AA4GzD,wCAAc;AA3GhB,6DAA+C;AAiH7C,8CAAiB;AA3FnB,mDAA4D;AAiD1D,0FAjDuB,4BAAS,OAiDvB;AAhDX,yDAAqD;AAiDnD,gGAjDO,kCAAe,OAiDP;AA/CjB,qDAA+D;AAkD7D,2FAlDwB,8BAAU,OAkDxB;AAjDZ,2DAAuD;AAkDrD,iGAlDO,oCAAgB,OAkDP;AAjDlB,6CAA0C;AAoDxC,2FApDO,uBAAU,OAoDP;AAlDZ,8DAAgD;AA+E9C,oCAAY;AA7Ed,wEAAoE;AA8ElE,2FA9EO,wBAAU,OA8EP;AA7EZ,gGAAqF;AA8EnF,4FA9EO,iCAAW,OA8EP;AA7Eb,kEAA4G;AA+E1G,mGA/EO,iCAAkB,OA+EP;AADlB,yGA9E2B,uCAAwB,OA8E3B;AAfxB,4FA/DqD,0BAAW,OA+DrD;AAzDb,uDAAwD;AAA/C,gHAAA,eAAe,OAAA;AACxB,+CAA6B;AAC7B,qCAA6C;AAApC,qGAAA,aAAa,OAAA;AACtB,yCAA4C;AAAnC,oGAAA,UAAU,OAAA;AACnB,kDAAiD;AAAxC,4FAAA,IAAI,OAAA;AACb,wDAA6F;AAApF,+GAAA,qBAAqB,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAErD,qCASmB;AARjB,yGAAA,cAAc,OAAA;AACd,kHAAA,uBAAuB,OAAA;AACvB,oHAAA,yBAAyB,OAAA;AACzB,yHAAA,8BAA8B,OAAA;AAC9B,yHAAA,8BAA8B,OAAA;AAC9B,kGAAA,OAAO,OAAA;AACP,gGAAA,KAAK,OAAA;AACL,sGAAA,WAAW,OAAA;AAMA,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAyDxC,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AArBC,4BAAQ;AAuBV,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AA1BC,kCAAW;AA2Bb,KAAK,CAAC,eAAe,CAAC;AAEtB,+CAA6B;AAC7B,uEAAqD;AAErD,4DAA2D;AAAlD,oHAAA,gBAAgB,OAAA;AACzB,wFAA+G;AAAtG,gIAAA,sBAAsB,OAAA;AAAE,gIAAA,sBAAsB,OAAA;AAEvD,mDAAkD;AAAzC,0GAAA,WAAW,OAAA","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport * as pluginsDefinition from './plugins';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTableAll as ListTable } from './ListTable-all';\nimport { ListTableSimple } from './ListTable-simple';\n// import { PivotTable } from './PivotTable';\nimport { PivotTableAll as PivotTable } from './PivotTable-all';\nimport { PivotTableSimple } from './PivotTable-simple';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet, textMeasure } from './scenegraph/utils/text-measure';\nimport type { BaseTableAPI } from './ts-types/base-table';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\nexport { getTargetCell } from './event/util';\nexport { toBoxArray } from './tools/helper';\nexport { Icon } from './scenegraph/graphic/icon';\nexport { CUSTOM_MERGE_PRE_NAME, CUSTOM_CONTAINER_NAME } from './scenegraph/component/custom';\n// 为插件等场景提供必要的 vrender 能力:只导出用到的符号,避免与 render/jsx 的导出成员发生命名冲突。\nexport {\n matrixAllocate,\n transformPointForCanvas,\n mapToCanvasPointForCanvas,\n registerGlobalEventTransformer,\n registerWindowEventTransformer,\n vglobal,\n Group,\n graphicUtil\n} from './vrender';\n\n// export * as VRender from './vrender';\n// import * as VRender from './vrender';\n\nexport const version = \"1.24.0-alpha.0\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n BaseTableAPI,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableSimple,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n textMeasure,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n setCustomAlphabetCharSet,\n restoreMeasureText,\n pluginsDefinition\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n\nexport * from './components';\nexport * from './scenegraph/group-creater/cell-type';\n\nexport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nexport { PIVOT_CHART_EVENT_TYPE, PIVOT_TABLE_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\n\nexport { EventTarget } from './event/EventTarget';\n"]}
@@ -73,11 +73,21 @@ function getCellRange(col, row, layout) {
73
73
  }
74
74
 
75
75
  function getTreeTitleMerge(col, row, cellRange, layout) {
76
+ var _a;
76
77
  if ("tree" !== layout.rowHierarchyType) return;
77
- const cellRecord = layout._table.getCellRawRecord(col, row);
78
- layout._table.internalProps.groupTitleCheckbox && layout._table.internalProps.rowSeriesNumber ? (null == cellRecord ? void 0 : cellRecord.vtableMerge) && col >= layout.leftRowSeriesNumberColumnCount && (cellRange.start.col = layout.rowHeaderLevelCount + layout.leftRowSeriesNumberColumnCount,
79
- cellRange.end.col = layout.colCount - 1, cellRange.start.row = cellRange.end.row = row) : (null == cellRecord ? void 0 : cellRecord.vtableMerge) && (cellRange.start.col = layout.rowHeaderLevelCount,
80
- cellRange.end.col = layout.colCount - 1, cellRange.start.row = cellRange.end.row = row);
78
+ const table = layout._table, internalProps = table.internalProps || {}, isGroupMode = !!internalProps.groupBy, cellRecord = table.getCellRawRecord(col, row);
79
+ if (!(null == cellRecord ? void 0 : cellRecord.vtableMerge)) return;
80
+ const treeTitleStartCol = internalProps.groupTitleCheckbox && internalProps.rowSeriesNumber ? layout.rowHeaderLevelCount + layout.leftRowSeriesNumberColumnCount : layout.rowHeaderLevelCount;
81
+ if (!(col < treeTitleStartCol) && (cellRange.start.col = treeTitleStartCol, cellRange.end.col = layout.colCount - 1,
82
+ cellRange.start.row = cellRange.end.row = row, isGroupMode && 1 === (null === (_a = layout.columnObjects) || void 0 === _a ? void 0 : _a.length))) {
83
+ const onlyColumn = layout.columnObjects[0], field = null == onlyColumn ? void 0 : onlyColumn.field;
84
+ if (null != field) {
85
+ let text = cellRecord.vtableMergeName;
86
+ const groupTitleFieldFormat = internalProps.groupTitleFieldFormat;
87
+ "function" == typeof groupTitleFieldFormat && (text = groupTitleFieldFormat(cellRecord, col, row, table));
88
+ null == cellRecord[field] && null != text && (cellRecord[field] = text);
89
+ }
90
+ }
81
91
  }
82
92
 
83
93
  function getCellRangeTranspose(col, row, layout) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/cell-range/simple-cell-range.ts"],"names":[],"mappings":"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","file":"simple-cell-range.js","sourcesContent":["import type { CellRange, TextColumnDefine } from '../../ts-types';\nimport type { SimpleHeaderLayoutMap } from '../simple-header-layout';\n\nexport function getCellRange(col: number, row: number, layout: SimpleHeaderLayoutMap): CellRange {\n if (col === -1 || row === -1) {\n return {\n start: { col, row },\n end: { col, row }\n };\n }\n if (layout._cellRangeMap.has(`$${col}$${row}`)) {\n return layout._cellRangeMap.get(`$${col}$${row}`);\n }\n let cellRange: CellRange = { start: { col, row }, end: { col, row } };\n if (layout.transpose) {\n cellRange = getCellRangeTranspose(col, row, layout);\n } else {\n // hover相关的单元格位置是-1,-1,getCellRange计算有误,先进行判断\n if (layout.headerLevelCount <= row) {\n //如果是body部分 设置了需要合并单元格 这里判断上下是否内容相同 相同的话 将cellRange范围扩大\n if (\n layout.headerLevelCount <= row &&\n (layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount]?.define as TextColumnDefine)?.mergeCell\n ) {\n const value = layout._table.getCellValue(col, row);\n for (let r = row - 1; r >= layout.headerLevelCount; r--) {\n const last_Value = layout._table.getCellValue(col, r);\n if (typeof layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell === 'boolean') {\n if (value !== last_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell as Function)(\n value,\n last_Value,\n {\n source: {\n col,\n row\n },\n target: {\n col,\n row: r\n },\n table: layout._table\n }\n )\n ) {\n break;\n }\n }\n cellRange.start.row = r;\n }\n for (let r = row + 1; r < layout.rowCount; r++) {\n const next_Value = layout._table.getCellValue(col, r);\n if (typeof layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell === 'boolean') {\n if (value !== next_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell as Function)(\n value,\n next_Value,\n {\n source: {\n col,\n row\n },\n target: {\n col,\n row: r\n },\n table: layout._table\n }\n )\n ) {\n break;\n }\n }\n cellRange.end.row = r;\n }\n }\n getTreeTitleMerge(col, row, cellRange, layout);\n // return cellRange;\n } else {\n //in header\n const id = layout.getCellId(col, row);\n for (let c = col - 1; c >= 0; c--) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n cellRange.start.col = c;\n }\n for (let c = col + 1; c < (layout.colCount ?? 0); c++) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n cellRange.end.col = c;\n }\n for (let r = row - 1; r >= 0; r--) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n cellRange.start.row = r;\n }\n for (let r = row + 1; r < layout.headerLevelCount; r++) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n cellRange.end.row = r;\n }\n // return cellRange;\n }\n }\n layout._cellRangeMap.set(`$${col}$${row}`, cellRange);\n return cellRange;\n}\n\nfunction getTreeTitleMerge(col: number, row: number, cellRange: CellRange, layout: SimpleHeaderLayoutMap) {\n if (layout.rowHierarchyType !== 'tree') {\n return;\n }\n\n const cellRecord = layout._table.getCellRawRecord(col, row);\n if (layout._table.internalProps.groupTitleCheckbox && layout._table.internalProps.rowSeriesNumber) {\n if (cellRecord?.vtableMerge && col >= layout.leftRowSeriesNumberColumnCount) {\n cellRange.start.col = layout.rowHeaderLevelCount + layout.leftRowSeriesNumberColumnCount;\n cellRange.end.col = layout.colCount - 1;\n cellRange.start.row = cellRange.end.row = row;\n }\n } else {\n if (cellRecord?.vtableMerge) {\n cellRange.start.col = layout.rowHeaderLevelCount;\n cellRange.end.col = layout.colCount - 1;\n cellRange.start.row = cellRange.end.row = row;\n }\n }\n}\n\nexport function getCellRangeTranspose(col: number, row: number, layout: SimpleHeaderLayoutMap): CellRange {\n const result: CellRange = { start: { col, row }, end: { col, row } };\n // hover相关的单元格位置是-1,-1,getCellRange计算有误,先进行判断\n if (layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount <= col || (col === -1 && row === -1)) {\n //如果是body部分 设置了需要合并单元格 这里判断左右是否内容相同 相同的话 将cellRange范围扩大\n if (\n layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount <= col &&\n layout.columnObjects[row]?.define?.mergeCell\n ) {\n const value = layout._table.getCellValue(col, row);\n for (let c = col - 1; c >= layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount; c--) {\n const last_Value = layout._table.getCellValue(c, row);\n if (typeof layout.columnObjects[row].define.mergeCell === 'boolean') {\n if (value !== last_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[row].define.mergeCell as Function)(value, last_Value, {\n source: {\n col,\n row\n },\n target: {\n col: c,\n row\n },\n table: layout._table\n })\n ) {\n break;\n }\n }\n result.start.col = c;\n }\n for (let c = col + 1; c < (layout.colCount ?? 0); c++) {\n const next_Value = layout._table.getCellValue(c, row);\n if (typeof layout.columnObjects[row].define.mergeCell === 'boolean') {\n if (value !== next_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[row].define.mergeCell as Function)(value, next_Value, {\n source: {\n col,\n row\n },\n target: {\n col: c,\n row\n },\n table: layout._table\n })\n ) {\n break;\n }\n }\n result.end.col = c;\n }\n }\n return result;\n }\n //in header\n const id = layout.getCellId(col, row);\n for (let r = row - 1; r >= 0; r--) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n result.start.row = r;\n }\n for (let r = row + 1; r < (layout.rowCount ?? 0); r++) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n result.end.row = r;\n }\n for (let c = col - 1; c >= 0; c--) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n result.start.col = c;\n }\n for (let c = col + 1; c < layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount; c++) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n result.end.col = c;\n }\n return result;\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/cell-range/simple-cell-range.ts"],"names":[],"mappings":"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","file":"simple-cell-range.js","sourcesContent":["import type { CellRange, TextColumnDefine } from '../../ts-types';\nimport type { SimpleHeaderLayoutMap } from '../simple-header-layout';\n\nexport function getCellRange(col: number, row: number, layout: SimpleHeaderLayoutMap): CellRange {\n if (col === -1 || row === -1) {\n return {\n start: { col, row },\n end: { col, row }\n };\n }\n if (layout._cellRangeMap.has(`$${col}$${row}`)) {\n return layout._cellRangeMap.get(`$${col}$${row}`);\n }\n let cellRange: CellRange = { start: { col, row }, end: { col, row } };\n if (layout.transpose) {\n cellRange = getCellRangeTranspose(col, row, layout);\n } else {\n // hover相关的单元格位置是-1,-1,getCellRange计算有误,先进行判断\n if (layout.headerLevelCount <= row) {\n //如果是body部分 设置了需要合并单元格 这里判断上下是否内容相同 相同的话 将cellRange范围扩大\n if (\n layout.headerLevelCount <= row &&\n (layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount]?.define as TextColumnDefine)?.mergeCell\n ) {\n const value = layout._table.getCellValue(col, row);\n for (let r = row - 1; r >= layout.headerLevelCount; r--) {\n const last_Value = layout._table.getCellValue(col, r);\n if (typeof layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell === 'boolean') {\n if (value !== last_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell as Function)(\n value,\n last_Value,\n {\n source: {\n col,\n row\n },\n target: {\n col,\n row: r\n },\n table: layout._table\n }\n )\n ) {\n break;\n }\n }\n cellRange.start.row = r;\n }\n for (let r = row + 1; r < layout.rowCount; r++) {\n const next_Value = layout._table.getCellValue(col, r);\n if (typeof layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell === 'boolean') {\n if (value !== next_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell as Function)(\n value,\n next_Value,\n {\n source: {\n col,\n row\n },\n target: {\n col,\n row: r\n },\n table: layout._table\n }\n )\n ) {\n break;\n }\n }\n cellRange.end.row = r;\n }\n }\n getTreeTitleMerge(col, row, cellRange, layout);\n // return cellRange;\n } else {\n //in header\n const id = layout.getCellId(col, row);\n for (let c = col - 1; c >= 0; c--) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n cellRange.start.col = c;\n }\n for (let c = col + 1; c < (layout.colCount ?? 0); c++) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n cellRange.end.col = c;\n }\n for (let r = row - 1; r >= 0; r--) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n cellRange.start.row = r;\n }\n for (let r = row + 1; r < layout.headerLevelCount; r++) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n cellRange.end.row = r;\n }\n // return cellRange;\n }\n }\n layout._cellRangeMap.set(`$${col}$${row}`, cellRange);\n return cellRange;\n}\n\nfunction getTreeTitleMerge(col: number, row: number, cellRange: CellRange, layout: SimpleHeaderLayoutMap) {\n if (layout.rowHierarchyType !== 'tree') {\n return;\n }\n\n const table: any = layout._table;\n const internalProps = table.internalProps || {};\n const isGroupMode = !!internalProps.groupBy;\n const cellRecord = table.getCellRawRecord(col, row);\n\n if (!cellRecord?.vtableMerge) {\n return;\n }\n\n const treeTitleStartCol =\n internalProps.groupTitleCheckbox && internalProps.rowSeriesNumber\n ? layout.rowHeaderLevelCount + layout.leftRowSeriesNumberColumnCount\n : layout.rowHeaderLevelCount;\n if (col < treeTitleStartCol) {\n return;\n }\n cellRange.start.col = treeTitleStartCol;\n cellRange.end.col = layout.colCount - 1;\n cellRange.start.row = cellRange.end.row = row;\n\n // 特殊处理:分组模式下且仅有一列数据列时,分组标题行本质上仍应视为“整行合并”\n // 为了在这种情况下正确展示分组标题文本(尤其是 vtableMerge/vtableMergeName 与 groupTitleFieldFormat),\n // 这里在源记录上补充该单列对应字段的值,避免依赖多列合并逻辑。\n if (isGroupMode && layout.columnObjects?.length === 1) {\n const onlyColumn = layout.columnObjects[0];\n const field = onlyColumn?.field;\n if (field != null) {\n let text = cellRecord.vtableMergeName;\n const groupTitleFieldFormat = internalProps.groupTitleFieldFormat;\n if (typeof groupTitleFieldFormat === 'function') {\n text = groupTitleFieldFormat(cellRecord, col, row, table);\n }\n const current = (cellRecord as any)[field as any];\n if (current == null && text != null) {\n (cellRecord as any)[field as any] = text;\n }\n }\n }\n}\n\nexport function getCellRangeTranspose(col: number, row: number, layout: SimpleHeaderLayoutMap): CellRange {\n const result: CellRange = { start: { col, row }, end: { col, row } };\n // hover相关的单元格位置是-1,-1,getCellRange计算有误,先进行判断\n if (layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount <= col || (col === -1 && row === -1)) {\n //如果是body部分 设置了需要合并单元格 这里判断左右是否内容相同 相同的话 将cellRange范围扩大\n if (\n layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount <= col &&\n layout.columnObjects[row]?.define?.mergeCell\n ) {\n const value = layout._table.getCellValue(col, row);\n for (let c = col - 1; c >= layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount; c--) {\n const last_Value = layout._table.getCellValue(c, row);\n if (typeof layout.columnObjects[row].define.mergeCell === 'boolean') {\n if (value !== last_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[row].define.mergeCell as Function)(value, last_Value, {\n source: {\n col,\n row\n },\n target: {\n col: c,\n row\n },\n table: layout._table\n })\n ) {\n break;\n }\n }\n result.start.col = c;\n }\n for (let c = col + 1; c < (layout.colCount ?? 0); c++) {\n const next_Value = layout._table.getCellValue(c, row);\n if (typeof layout.columnObjects[row].define.mergeCell === 'boolean') {\n if (value !== next_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[row].define.mergeCell as Function)(value, next_Value, {\n source: {\n col,\n row\n },\n target: {\n col: c,\n row\n },\n table: layout._table\n })\n ) {\n break;\n }\n }\n result.end.col = c;\n }\n }\n return result;\n }\n //in header\n const id = layout.getCellId(col, row);\n for (let r = row - 1; r >= 0; r--) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n result.start.row = r;\n }\n for (let r = row + 1; r < (layout.rowCount ?? 0); r++) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n result.end.row = r;\n }\n for (let c = col - 1; c >= 0; c--) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n result.start.col = c;\n }\n for (let c = col + 1; c < layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount; c++) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n result.end.col = c;\n }\n return result;\n}\n"]}
@@ -98,7 +98,7 @@ function _generateCustomElementsGroup(table, define, col, row, cellWidth, cellHe
98
98
  function updateCell(col, row, table, addNew, isShadow, forceFastUpdate) {
99
99
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
100
100
  const oldCellGroup = table.scenegraph.highPerformanceGetCell(col, row, !0);
101
- if ("cell" !== oldCellGroup.role && !addNew) return;
101
+ if ("cell" !== oldCellGroup.role && "shadow-cell" !== oldCellGroup.role && !addNew) return;
102
102
  const cellLocation = table.getCellLocation(col, row);
103
103
  let isMerge, range, customStyle, customResult, value = table.getCellValue(col, row), isCustomMerge = !1;
104
104
  if (table.internalProps.customMergeCell) {