handsontable 0.0.0-next-3d099da-20231208 → 0.0.0-next-51d3397-20231211

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (129) hide show
  1. package/3rdparty/walkontable/src/calculator/index.js +11 -6
  2. package/3rdparty/walkontable/src/calculator/index.mjs +5 -3
  3. package/3rdparty/walkontable/src/calculator/renderAllColumns.js +50 -0
  4. package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +46 -0
  5. package/3rdparty/walkontable/src/calculator/renderAllRows.js +50 -0
  6. package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +46 -0
  7. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -122
  8. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +2 -124
  9. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -1
  10. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +2 -3
  11. package/3rdparty/walkontable/src/core/_base.js +0 -12
  12. package/3rdparty/walkontable/src/core/_base.mjs +0 -12
  13. package/3rdparty/walkontable/src/core/core.js +0 -2
  14. package/3rdparty/walkontable/src/core/core.mjs +0 -2
  15. package/3rdparty/walkontable/src/facade/core.js +0 -9
  16. package/3rdparty/walkontable/src/facade/core.mjs +0 -9
  17. package/3rdparty/walkontable/src/index.js +3 -4
  18. package/3rdparty/walkontable/src/index.mjs +1 -2
  19. package/3rdparty/walkontable/src/overlays.js +0 -3
  20. package/3rdparty/walkontable/src/overlays.mjs +0 -4
  21. package/3rdparty/walkontable/src/renderer/colGroup.js +10 -0
  22. package/3rdparty/walkontable/src/renderer/colGroup.mjs +10 -0
  23. package/3rdparty/walkontable/src/renderer/rows.js +4 -3
  24. package/3rdparty/walkontable/src/renderer/rows.mjs +4 -3
  25. package/3rdparty/walkontable/src/selection/manager.js +0 -1
  26. package/3rdparty/walkontable/src/selection/manager.mjs +0 -1
  27. package/3rdparty/walkontable/src/settings.js +3 -0
  28. package/3rdparty/walkontable/src/settings.mjs +2 -0
  29. package/3rdparty/walkontable/src/table.js +0 -1
  30. package/3rdparty/walkontable/src/table.mjs +0 -1
  31. package/3rdparty/walkontable/src/utils/column.js +27 -12
  32. package/3rdparty/walkontable/src/utils/column.mjs +27 -12
  33. package/3rdparty/walkontable/src/utils/columnStretching.js +219 -0
  34. package/3rdparty/walkontable/src/utils/columnStretching.mjs +215 -0
  35. package/3rdparty/walkontable/src/viewport.js +22 -17
  36. package/3rdparty/walkontable/src/viewport.mjs +23 -18
  37. package/base.js +4 -2
  38. package/base.mjs +2 -2
  39. package/core/focusCatcher/index.js +44 -6
  40. package/core/focusCatcher/index.mjs +44 -6
  41. package/core.js +0 -11
  42. package/core.mjs +0 -11
  43. package/dataMap/dataMap.js +1 -0
  44. package/dataMap/metaManager/metaSchema.js +28 -2
  45. package/dataMap/metaManager/metaSchema.mjs +28 -2
  46. package/dataMap/metaManager/mods/extendMetaProperties.js +12 -0
  47. package/dataMap/metaManager/mods/extendMetaProperties.mjs +12 -0
  48. package/dist/handsontable.css +2 -2
  49. package/dist/handsontable.full.css +3 -3
  50. package/dist/handsontable.full.js +3979 -5577
  51. package/dist/handsontable.full.min.css +3 -3
  52. package/dist/handsontable.full.min.js +66 -71
  53. package/dist/handsontable.js +3058 -4305
  54. package/dist/handsontable.min.css +2 -2
  55. package/dist/handsontable.min.js +35 -39
  56. package/editorManager.js +3 -4
  57. package/editorManager.mjs +3 -4
  58. package/editors/autocompleteEditor/autocompleteEditor.js +0 -2
  59. package/editors/autocompleteEditor/autocompleteEditor.mjs +0 -2
  60. package/editors/dateEditor/dateEditor.d.ts +1 -1
  61. package/editors/dateEditor/dateEditor.js +4 -1
  62. package/editors/dateEditor/dateEditor.mjs +4 -1
  63. package/editors/handsontableEditor/handsontableEditor.js +0 -1
  64. package/editors/handsontableEditor/handsontableEditor.mjs +0 -1
  65. package/editors/textEditor/textEditor.js +0 -4
  66. package/editors/textEditor/textEditor.mjs +0 -4
  67. package/helpers/browser.js +5 -2
  68. package/helpers/browser.mjs +5 -2
  69. package/helpers/feature.js +10 -0
  70. package/helpers/feature.mjs +9 -0
  71. package/helpers/mixed.js +1 -1
  72. package/helpers/mixed.mjs +1 -1
  73. package/package.json +3 -4
  74. package/pluginHooks.d.ts +6 -29
  75. package/pluginHooks.js +65 -123
  76. package/pluginHooks.mjs +62 -122
  77. package/plugins/copyPaste/clipboardData.js +18 -0
  78. package/plugins/copyPaste/clipboardData.mjs +14 -0
  79. package/plugins/copyPaste/copyPaste.js +129 -51
  80. package/plugins/copyPaste/copyPaste.mjs +132 -54
  81. package/plugins/copyPaste/copyableRanges.js +43 -7
  82. package/plugins/copyPaste/copyableRanges.mjs +42 -7
  83. package/plugins/copyPaste/pasteEvent.mjs +1 -1
  84. package/plugins/customBorders/customBorders.js +0 -5
  85. package/plugins/customBorders/customBorders.mjs +0 -5
  86. package/plugins/customBorders/utils.js +0 -1
  87. package/plugins/customBorders/utils.mjs +0 -1
  88. package/plugins/filters/ui/radioInput.js +1 -1
  89. package/plugins/filters/ui/radioInput.mjs +1 -1
  90. package/plugins/formulas/formulas.js +0 -2
  91. package/plugins/formulas/formulas.mjs +0 -2
  92. package/plugins/formulas/indexSyncer/axisSyncer.js +0 -1
  93. package/plugins/formulas/indexSyncer/axisSyncer.mjs +0 -1
  94. package/plugins/manualColumnResize/manualColumnResize.js +0 -1
  95. package/plugins/manualColumnResize/manualColumnResize.mjs +0 -1
  96. package/plugins/mergeCells/mergeCells.js +1 -127
  97. package/plugins/mergeCells/mergeCells.mjs +1 -127
  98. package/plugins/nestedHeaders/nestedHeaders.js +41 -87
  99. package/plugins/nestedHeaders/nestedHeaders.mjs +42 -88
  100. package/plugins/nestedHeaders/stateManager/headersTree.js +0 -1
  101. package/plugins/nestedHeaders/stateManager/headersTree.mjs +0 -1
  102. package/plugins/undoRedo/undoRedo.js +0 -2
  103. package/plugins/undoRedo/undoRedo.mjs +0 -2
  104. package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -1
  105. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +0 -1
  106. package/renderers/checkboxRenderer/checkboxRenderer.js +0 -2
  107. package/renderers/checkboxRenderer/checkboxRenderer.mjs +0 -2
  108. package/selection/highlight/highlight.js +0 -1
  109. package/selection/highlight/highlight.mjs +0 -1
  110. package/selection/index.js +1 -3
  111. package/selection/index.mjs +2 -2
  112. package/selection/utils.js +0 -34
  113. package/selection/utils.mjs +0 -33
  114. package/settings.d.ts +2 -1
  115. package/tableView.js +1 -2
  116. package/tableView.mjs +1 -2
  117. package/translations/indexMapper.js +2 -1
  118. package/utils/parseTable.js +84 -538
  119. package/utils/parseTable.mjs +83 -534
  120. package/validators/timeValidator/timeValidator.js +0 -1
  121. package/validators/timeValidator/timeValidator.mjs +0 -1
  122. package/plugins/copyPaste/clipboardData/clipboardData.js +0 -588
  123. package/plugins/copyPaste/clipboardData/clipboardData.mjs +0 -584
  124. package/plugins/copyPaste/clipboardData/copyClipboardData.js +0 -69
  125. package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +0 -65
  126. package/plugins/copyPaste/clipboardData/index.js +0 -9
  127. package/plugins/copyPaste/clipboardData/index.mjs +0 -4
  128. package/plugins/copyPaste/clipboardData/pasteClipboardData.js +0 -81
  129. package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +0 -77
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ require("core-js/modules/es.error.cause.js");
5
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
6
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
7
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
9
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
10
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
11
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
12
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
13
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
14
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
15
+ var _totalTargetWidth = /*#__PURE__*/new WeakMap();
16
+ var _totalColumns = /*#__PURE__*/new WeakMap();
17
+ var _stretchingColumnWidthFn = /*#__PURE__*/new WeakMap();
18
+ var _columnWidthFn = /*#__PURE__*/new WeakMap();
19
+ var _stretchMode = /*#__PURE__*/new WeakMap();
20
+ /**
21
+ * @typedef {object} ColumnStretchingOptions
22
+ * @property {number} totalColumns Total number of columns.
23
+ * @property {Function} columnWidthFn Function that returns the width of the column at a given index (in px).
24
+ * @property {'all' | 'last' | 'none'} stretchMode Stretch mode 'all', 'last' or 'none'.
25
+ * @property {Function} stretchingColumnWidthFn Function that returns the new width of the stretched column.
26
+ */
27
+ /**
28
+ * @class ColumnStretching
29
+ */
30
+ class ColumnStretching {
31
+ /**
32
+ * Default column width.
33
+ *
34
+ * @type {number}
35
+ */
36
+ static get DEFAULT_WIDTH() {
37
+ return 50;
38
+ }
39
+
40
+ /**
41
+ * @type {number}
42
+ */
43
+
44
+ /**
45
+ * @param {ColumnStretchingOptions} options Object with all options specified for column viewport calculation.
46
+ */
47
+ constructor(_ref) {
48
+ let {
49
+ totalColumns,
50
+ stretchMode,
51
+ stretchingColumnWidthFn,
52
+ columnWidthFn
53
+ } = _ref;
54
+ _defineProperty(this, "stretchAllRatio", 0);
55
+ /**
56
+ * @type {number}
57
+ */
58
+ _defineProperty(this, "stretchLastWidth", 0);
59
+ /**
60
+ * @type {number[]}
61
+ */
62
+ _defineProperty(this, "stretchAllColumnsWidth", []);
63
+ /**
64
+ * @type {number}
65
+ */
66
+ _classPrivateFieldInitSpec(this, _totalTargetWidth, {
67
+ writable: true,
68
+ value: 0
69
+ });
70
+ /**
71
+ * @type {boolean}
72
+ */
73
+ _defineProperty(this, "needVerifyLastColumnWidth", true);
74
+ /**
75
+ * The total number of columns.
76
+ *
77
+ * @type {function(): number}
78
+ */
79
+ _classPrivateFieldInitSpec(this, _totalColumns, {
80
+ writable: true,
81
+ value: () => 0
82
+ });
83
+ /**
84
+ * Function that returns the width of the stretched column at a given index (in px).
85
+ *
86
+ * @type {function(): number}
87
+ */
88
+ _classPrivateFieldInitSpec(this, _stretchingColumnWidthFn, {
89
+ writable: true,
90
+ value: width => width
91
+ });
92
+ /**
93
+ * Function that returns the width of the column at a given index (in px).
94
+ *
95
+ * @type {function(): number}
96
+ */
97
+ _classPrivateFieldInitSpec(this, _columnWidthFn, {
98
+ writable: true,
99
+ value: width => width
100
+ });
101
+ /**
102
+ * Stretch mode.
103
+ *
104
+ * @type {function(): 'all' | 'last' | 'none'}
105
+ */
106
+ _classPrivateFieldInitSpec(this, _stretchMode, {
107
+ writable: true,
108
+ value: () => 'none'
109
+ });
110
+ _classPrivateFieldSet(this, _totalColumns, totalColumns);
111
+ _classPrivateFieldSet(this, _stretchMode, stretchMode);
112
+ _classPrivateFieldSet(this, _stretchingColumnWidthFn, stretchingColumnWidthFn !== null && stretchingColumnWidthFn !== void 0 ? stretchingColumnWidthFn : _classPrivateFieldGet(this, _stretchingColumnWidthFn));
113
+ _classPrivateFieldSet(this, _columnWidthFn, columnWidthFn !== null && columnWidthFn !== void 0 ? columnWidthFn : _classPrivateFieldGet(this, _columnWidthFn));
114
+ }
115
+
116
+ /**
117
+ * Recalculate columns stretching.
118
+ *
119
+ * @param {number} totalWidth The total width of the table.
120
+ */
121
+ refreshStretching(totalWidth) {
122
+ if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'none') {
123
+ return;
124
+ }
125
+ _classPrivateFieldSet(this, _totalTargetWidth, totalWidth);
126
+ let sumAll = 0;
127
+ for (let i = 0; i < _classPrivateFieldGet(this, _totalColumns).call(this); i++) {
128
+ const columnWidth = this._getColumnWidth(i);
129
+ const permanentColumnWidth = _classPrivateFieldGet(this, _stretchingColumnWidthFn).call(this, undefined, i);
130
+ if (typeof permanentColumnWidth === 'number') {
131
+ totalWidth -= permanentColumnWidth;
132
+ } else {
133
+ sumAll += columnWidth;
134
+ }
135
+ }
136
+ const remainingSize = totalWidth - sumAll;
137
+ if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'all' && remainingSize > 0) {
138
+ this.stretchAllRatio = totalWidth / sumAll;
139
+ this.stretchAllColumnsWidth = [];
140
+ this.needVerifyLastColumnWidth = true;
141
+ } else if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'last' && totalWidth !== Infinity) {
142
+ const columnWidth = this._getColumnWidth(_classPrivateFieldGet(this, _totalColumns).call(this) - 1);
143
+ const lastColumnWidth = remainingSize + columnWidth;
144
+ this.stretchLastWidth = lastColumnWidth >= 0 ? lastColumnWidth : columnWidth;
145
+ }
146
+ }
147
+
148
+ /**
149
+ * Get stretched column width based on stretchH (all or last) setting passed in handsontable instance.
150
+ *
151
+ * @param {number} column The visual column index.
152
+ * @param {number} baseWidth The default column width.
153
+ * @returns {number|null}
154
+ */
155
+ getStretchedColumnWidth(column, baseWidth) {
156
+ let result = null;
157
+ if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'all' && this.stretchAllRatio !== 0) {
158
+ result = this._getStretchedAllColumnWidth(column, baseWidth);
159
+ } else if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'last' && this.stretchLastWidth !== 0) {
160
+ result = this._getStretchedLastColumnWidth(column);
161
+ }
162
+ return result;
163
+ }
164
+
165
+ /**
166
+ * @param {number} column The visual column index.
167
+ * @param {number} baseWidth The default column width.
168
+ * @returns {number}
169
+ * @private
170
+ */
171
+ _getStretchedAllColumnWidth(column, baseWidth) {
172
+ let sumRatioWidth = 0;
173
+ if (!this.stretchAllColumnsWidth[column]) {
174
+ const stretchedWidth = Math.round(baseWidth * this.stretchAllRatio);
175
+ const newStretchedWidth = _classPrivateFieldGet(this, _stretchingColumnWidthFn).call(this, stretchedWidth, column);
176
+ if (newStretchedWidth === undefined) {
177
+ this.stretchAllColumnsWidth[column] = stretchedWidth;
178
+ } else {
179
+ this.stretchAllColumnsWidth[column] = isNaN(newStretchedWidth) ? this._getColumnWidth(column) : newStretchedWidth;
180
+ }
181
+ }
182
+ if (this.stretchAllColumnsWidth.length === _classPrivateFieldGet(this, _totalColumns).call(this) && this.needVerifyLastColumnWidth) {
183
+ this.needVerifyLastColumnWidth = false;
184
+ for (let i = 0; i < this.stretchAllColumnsWidth.length; i++) {
185
+ sumRatioWidth += this.stretchAllColumnsWidth[i];
186
+ }
187
+ if (sumRatioWidth !== _classPrivateFieldGet(this, _totalTargetWidth)) {
188
+ this.stretchAllColumnsWidth[this.stretchAllColumnsWidth.length - 1] += _classPrivateFieldGet(this, _totalTargetWidth) - sumRatioWidth;
189
+ }
190
+ }
191
+ return this.stretchAllColumnsWidth[column];
192
+ }
193
+
194
+ /**
195
+ * @param {number} column The visual column index.
196
+ * @returns {number|null}
197
+ * @private
198
+ */
199
+ _getStretchedLastColumnWidth(column) {
200
+ if (column === _classPrivateFieldGet(this, _totalColumns).call(this) - 1) {
201
+ return this.stretchLastWidth;
202
+ }
203
+ return null;
204
+ }
205
+
206
+ /**
207
+ * @param {number} column The visual column index.
208
+ * @returns {number}
209
+ * @private
210
+ */
211
+ _getColumnWidth(column) {
212
+ let width = _classPrivateFieldGet(this, _columnWidthFn).call(this, column);
213
+ if (isNaN(width)) {
214
+ width = ColumnStretching.DEFAULT_WIDTH;
215
+ }
216
+ return width;
217
+ }
218
+ }
219
+ exports.ColumnStretching = ColumnStretching;
@@ -0,0 +1,215 @@
1
+ import "core-js/modules/es.error.cause.js";
2
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
3
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
8
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
9
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
10
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
11
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
12
+ var _totalTargetWidth = /*#__PURE__*/new WeakMap();
13
+ var _totalColumns = /*#__PURE__*/new WeakMap();
14
+ var _stretchingColumnWidthFn = /*#__PURE__*/new WeakMap();
15
+ var _columnWidthFn = /*#__PURE__*/new WeakMap();
16
+ var _stretchMode = /*#__PURE__*/new WeakMap();
17
+ /**
18
+ * @typedef {object} ColumnStretchingOptions
19
+ * @property {number} totalColumns Total number of columns.
20
+ * @property {Function} columnWidthFn Function that returns the width of the column at a given index (in px).
21
+ * @property {'all' | 'last' | 'none'} stretchMode Stretch mode 'all', 'last' or 'none'.
22
+ * @property {Function} stretchingColumnWidthFn Function that returns the new width of the stretched column.
23
+ */
24
+ /**
25
+ * @class ColumnStretching
26
+ */
27
+ export class ColumnStretching {
28
+ /**
29
+ * Default column width.
30
+ *
31
+ * @type {number}
32
+ */
33
+ static get DEFAULT_WIDTH() {
34
+ return 50;
35
+ }
36
+
37
+ /**
38
+ * @type {number}
39
+ */
40
+
41
+ /**
42
+ * @param {ColumnStretchingOptions} options Object with all options specified for column viewport calculation.
43
+ */
44
+ constructor(_ref) {
45
+ let {
46
+ totalColumns,
47
+ stretchMode,
48
+ stretchingColumnWidthFn,
49
+ columnWidthFn
50
+ } = _ref;
51
+ _defineProperty(this, "stretchAllRatio", 0);
52
+ /**
53
+ * @type {number}
54
+ */
55
+ _defineProperty(this, "stretchLastWidth", 0);
56
+ /**
57
+ * @type {number[]}
58
+ */
59
+ _defineProperty(this, "stretchAllColumnsWidth", []);
60
+ /**
61
+ * @type {number}
62
+ */
63
+ _classPrivateFieldInitSpec(this, _totalTargetWidth, {
64
+ writable: true,
65
+ value: 0
66
+ });
67
+ /**
68
+ * @type {boolean}
69
+ */
70
+ _defineProperty(this, "needVerifyLastColumnWidth", true);
71
+ /**
72
+ * The total number of columns.
73
+ *
74
+ * @type {function(): number}
75
+ */
76
+ _classPrivateFieldInitSpec(this, _totalColumns, {
77
+ writable: true,
78
+ value: () => 0
79
+ });
80
+ /**
81
+ * Function that returns the width of the stretched column at a given index (in px).
82
+ *
83
+ * @type {function(): number}
84
+ */
85
+ _classPrivateFieldInitSpec(this, _stretchingColumnWidthFn, {
86
+ writable: true,
87
+ value: width => width
88
+ });
89
+ /**
90
+ * Function that returns the width of the column at a given index (in px).
91
+ *
92
+ * @type {function(): number}
93
+ */
94
+ _classPrivateFieldInitSpec(this, _columnWidthFn, {
95
+ writable: true,
96
+ value: width => width
97
+ });
98
+ /**
99
+ * Stretch mode.
100
+ *
101
+ * @type {function(): 'all' | 'last' | 'none'}
102
+ */
103
+ _classPrivateFieldInitSpec(this, _stretchMode, {
104
+ writable: true,
105
+ value: () => 'none'
106
+ });
107
+ _classPrivateFieldSet(this, _totalColumns, totalColumns);
108
+ _classPrivateFieldSet(this, _stretchMode, stretchMode);
109
+ _classPrivateFieldSet(this, _stretchingColumnWidthFn, stretchingColumnWidthFn !== null && stretchingColumnWidthFn !== void 0 ? stretchingColumnWidthFn : _classPrivateFieldGet(this, _stretchingColumnWidthFn));
110
+ _classPrivateFieldSet(this, _columnWidthFn, columnWidthFn !== null && columnWidthFn !== void 0 ? columnWidthFn : _classPrivateFieldGet(this, _columnWidthFn));
111
+ }
112
+
113
+ /**
114
+ * Recalculate columns stretching.
115
+ *
116
+ * @param {number} totalWidth The total width of the table.
117
+ */
118
+ refreshStretching(totalWidth) {
119
+ if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'none') {
120
+ return;
121
+ }
122
+ _classPrivateFieldSet(this, _totalTargetWidth, totalWidth);
123
+ let sumAll = 0;
124
+ for (let i = 0; i < _classPrivateFieldGet(this, _totalColumns).call(this); i++) {
125
+ const columnWidth = this._getColumnWidth(i);
126
+ const permanentColumnWidth = _classPrivateFieldGet(this, _stretchingColumnWidthFn).call(this, undefined, i);
127
+ if (typeof permanentColumnWidth === 'number') {
128
+ totalWidth -= permanentColumnWidth;
129
+ } else {
130
+ sumAll += columnWidth;
131
+ }
132
+ }
133
+ const remainingSize = totalWidth - sumAll;
134
+ if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'all' && remainingSize > 0) {
135
+ this.stretchAllRatio = totalWidth / sumAll;
136
+ this.stretchAllColumnsWidth = [];
137
+ this.needVerifyLastColumnWidth = true;
138
+ } else if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'last' && totalWidth !== Infinity) {
139
+ const columnWidth = this._getColumnWidth(_classPrivateFieldGet(this, _totalColumns).call(this) - 1);
140
+ const lastColumnWidth = remainingSize + columnWidth;
141
+ this.stretchLastWidth = lastColumnWidth >= 0 ? lastColumnWidth : columnWidth;
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Get stretched column width based on stretchH (all or last) setting passed in handsontable instance.
147
+ *
148
+ * @param {number} column The visual column index.
149
+ * @param {number} baseWidth The default column width.
150
+ * @returns {number|null}
151
+ */
152
+ getStretchedColumnWidth(column, baseWidth) {
153
+ let result = null;
154
+ if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'all' && this.stretchAllRatio !== 0) {
155
+ result = this._getStretchedAllColumnWidth(column, baseWidth);
156
+ } else if (_classPrivateFieldGet(this, _stretchMode).call(this) === 'last' && this.stretchLastWidth !== 0) {
157
+ result = this._getStretchedLastColumnWidth(column);
158
+ }
159
+ return result;
160
+ }
161
+
162
+ /**
163
+ * @param {number} column The visual column index.
164
+ * @param {number} baseWidth The default column width.
165
+ * @returns {number}
166
+ * @private
167
+ */
168
+ _getStretchedAllColumnWidth(column, baseWidth) {
169
+ let sumRatioWidth = 0;
170
+ if (!this.stretchAllColumnsWidth[column]) {
171
+ const stretchedWidth = Math.round(baseWidth * this.stretchAllRatio);
172
+ const newStretchedWidth = _classPrivateFieldGet(this, _stretchingColumnWidthFn).call(this, stretchedWidth, column);
173
+ if (newStretchedWidth === undefined) {
174
+ this.stretchAllColumnsWidth[column] = stretchedWidth;
175
+ } else {
176
+ this.stretchAllColumnsWidth[column] = isNaN(newStretchedWidth) ? this._getColumnWidth(column) : newStretchedWidth;
177
+ }
178
+ }
179
+ if (this.stretchAllColumnsWidth.length === _classPrivateFieldGet(this, _totalColumns).call(this) && this.needVerifyLastColumnWidth) {
180
+ this.needVerifyLastColumnWidth = false;
181
+ for (let i = 0; i < this.stretchAllColumnsWidth.length; i++) {
182
+ sumRatioWidth += this.stretchAllColumnsWidth[i];
183
+ }
184
+ if (sumRatioWidth !== _classPrivateFieldGet(this, _totalTargetWidth)) {
185
+ this.stretchAllColumnsWidth[this.stretchAllColumnsWidth.length - 1] += _classPrivateFieldGet(this, _totalTargetWidth) - sumRatioWidth;
186
+ }
187
+ }
188
+ return this.stretchAllColumnsWidth[column];
189
+ }
190
+
191
+ /**
192
+ * @param {number} column The visual column index.
193
+ * @returns {number|null}
194
+ * @private
195
+ */
196
+ _getStretchedLastColumnWidth(column) {
197
+ if (column === _classPrivateFieldGet(this, _totalColumns).call(this) - 1) {
198
+ return this.stretchLastWidth;
199
+ }
200
+ return null;
201
+ }
202
+
203
+ /**
204
+ * @param {number} column The visual column index.
205
+ * @returns {number}
206
+ * @private
207
+ */
208
+ _getColumnWidth(column) {
209
+ let width = _classPrivateFieldGet(this, _columnWidthFn).call(this, column);
210
+ if (isNaN(width)) {
211
+ width = ColumnStretching.DEFAULT_WIDTH;
212
+ }
213
+ return width;
214
+ }
215
+ }
@@ -255,15 +255,15 @@ class Viewport {
255
255
  wtSettings,
256
256
  wtTable
257
257
  } = this;
258
- let height;
258
+ if (wtSettings.getSetting('renderAllRows') && calculationType === _calculator.RENDER_TYPE) {
259
+ return new _calculator.RenderAllRowsCalculator({
260
+ totalRows: wtSettings.getSetting('totalRows')
261
+ });
262
+ }
263
+ let height = this.getViewportHeight();
259
264
  let scrollbarHeight;
260
265
  let fixedRowsHeight;
261
266
  this.rowHeaderWidth = NaN;
262
- if (wtSettings.getSetting('renderAllRows') && calculationType === _calculator.RENDER_TYPE) {
263
- height = Infinity;
264
- } else {
265
- height = this.getViewportHeight();
266
- }
267
267
  let pos = this.dataAccessObject.topScrollPosition - this.dataAccessObject.topParentOffset;
268
268
  const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
269
269
  const fixedRowsBottom = wtSettings.getSetting('fixedRowsBottom');
@@ -308,6 +308,11 @@ class Viewport {
308
308
  wtSettings,
309
309
  wtTable
310
310
  } = this;
311
+ if (wtSettings.getSetting('renderAllColumns') && calculationType === _calculator.RENDER_TYPE) {
312
+ return new _calculator.RenderAllColumnsCalculator({
313
+ totalColumns: wtSettings.getSetting('totalColumns')
314
+ });
315
+ }
311
316
  let width = this.getViewportWidth();
312
317
  let pos = Math.abs(this.dataAccessObject.inlineStartScrollPosition) - this.dataAccessObject.inlineStartParentOffset;
313
318
  this.columnHeaderHeight = NaN;
@@ -327,10 +332,6 @@ class Viewport {
327
332
  columnWidthFn: sourceCol => wtTable.getColumnWidth(sourceCol),
328
333
  overrideFn: wtSettings.getSettingPure('viewportColumnCalculatorOverride'),
329
334
  calculationType,
330
- stretchMode: wtSettings.getSetting('stretchH'),
331
- stretchingColumnWidthFn: (stretchedWidth, column) => {
332
- return wtSettings.getSetting('onBeforeStretchingColumnWidth', stretchedWidth, column);
333
- },
334
335
  inlineStartOffset: this.dataAccessObject.inlineStartParentOffset
335
336
  });
336
337
  }
@@ -345,22 +346,26 @@ class Viewport {
345
346
  */
346
347
  createRenderCalculators() {
347
348
  let fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
348
- let runFastDraw = fastDraw;
349
- if (runFastDraw) {
349
+ const {
350
+ wtSettings
351
+ } = this;
352
+ if (fastDraw && !wtSettings.getSetting('renderAllRows')) {
350
353
  const proposedRowsVisibleCalculator = this.createRowsCalculator(_calculator.FULLY_VISIBLE_TYPE);
354
+ fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator);
355
+ }
356
+ if (fastDraw && !wtSettings.getSetting('renderAllColumns')) {
351
357
  const proposedColumnsVisibleCalculator = this.createColumnsCalculator(_calculator.FULLY_VISIBLE_TYPE);
352
- if (!(this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) && this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator))) {
353
- runFastDraw = false;
354
- }
358
+ fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator);
355
359
  }
356
- if (!runFastDraw) {
360
+ if (!fastDraw) {
357
361
  this.rowsRenderCalculator = this.createRowsCalculator(_calculator.RENDER_TYPE);
358
362
  this.columnsRenderCalculator = this.createColumnsCalculator(_calculator.RENDER_TYPE);
359
363
  }
364
+
360
365
  // delete temporarily to make sure that renderers always use rowsRenderCalculator, not rowsVisibleCalculator
361
366
  this.rowsVisibleCalculator = null;
362
367
  this.columnsVisibleCalculator = null;
363
- return runFastDraw;
368
+ return fastDraw;
364
369
  }
365
370
 
366
371
  /**
@@ -1,6 +1,6 @@
1
1
  import { getScrollbarWidth, getStyle, offset, outerHeight, outerWidth } from "../../../helpers/dom/element.mjs";
2
2
  import { objectEach } from "../../../helpers/object.mjs";
3
- import { RENDER_TYPE, FULLY_VISIBLE_TYPE, ViewportColumnsCalculator, ViewportRowsCalculator } from "./calculator/index.mjs";
3
+ import { RENDER_TYPE, FULLY_VISIBLE_TYPE, RenderAllColumnsCalculator, RenderAllRowsCalculator, ViewportColumnsCalculator, ViewportRowsCalculator } from "./calculator/index.mjs";
4
4
  /**
5
5
  * @class Viewport
6
6
  */
@@ -252,15 +252,15 @@ class Viewport {
252
252
  wtSettings,
253
253
  wtTable
254
254
  } = this;
255
- let height;
255
+ if (wtSettings.getSetting('renderAllRows') && calculationType === RENDER_TYPE) {
256
+ return new RenderAllRowsCalculator({
257
+ totalRows: wtSettings.getSetting('totalRows')
258
+ });
259
+ }
260
+ let height = this.getViewportHeight();
256
261
  let scrollbarHeight;
257
262
  let fixedRowsHeight;
258
263
  this.rowHeaderWidth = NaN;
259
- if (wtSettings.getSetting('renderAllRows') && calculationType === RENDER_TYPE) {
260
- height = Infinity;
261
- } else {
262
- height = this.getViewportHeight();
263
- }
264
264
  let pos = this.dataAccessObject.topScrollPosition - this.dataAccessObject.topParentOffset;
265
265
  const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
266
266
  const fixedRowsBottom = wtSettings.getSetting('fixedRowsBottom');
@@ -305,6 +305,11 @@ class Viewport {
305
305
  wtSettings,
306
306
  wtTable
307
307
  } = this;
308
+ if (wtSettings.getSetting('renderAllColumns') && calculationType === RENDER_TYPE) {
309
+ return new RenderAllColumnsCalculator({
310
+ totalColumns: wtSettings.getSetting('totalColumns')
311
+ });
312
+ }
308
313
  let width = this.getViewportWidth();
309
314
  let pos = Math.abs(this.dataAccessObject.inlineStartScrollPosition) - this.dataAccessObject.inlineStartParentOffset;
310
315
  this.columnHeaderHeight = NaN;
@@ -324,10 +329,6 @@ class Viewport {
324
329
  columnWidthFn: sourceCol => wtTable.getColumnWidth(sourceCol),
325
330
  overrideFn: wtSettings.getSettingPure('viewportColumnCalculatorOverride'),
326
331
  calculationType,
327
- stretchMode: wtSettings.getSetting('stretchH'),
328
- stretchingColumnWidthFn: (stretchedWidth, column) => {
329
- return wtSettings.getSetting('onBeforeStretchingColumnWidth', stretchedWidth, column);
330
- },
331
332
  inlineStartOffset: this.dataAccessObject.inlineStartParentOffset
332
333
  });
333
334
  }
@@ -342,22 +343,26 @@ class Viewport {
342
343
  */
343
344
  createRenderCalculators() {
344
345
  let fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
345
- let runFastDraw = fastDraw;
346
- if (runFastDraw) {
346
+ const {
347
+ wtSettings
348
+ } = this;
349
+ if (fastDraw && !wtSettings.getSetting('renderAllRows')) {
347
350
  const proposedRowsVisibleCalculator = this.createRowsCalculator(FULLY_VISIBLE_TYPE);
351
+ fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator);
352
+ }
353
+ if (fastDraw && !wtSettings.getSetting('renderAllColumns')) {
348
354
  const proposedColumnsVisibleCalculator = this.createColumnsCalculator(FULLY_VISIBLE_TYPE);
349
- if (!(this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) && this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator))) {
350
- runFastDraw = false;
351
- }
355
+ fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator);
352
356
  }
353
- if (!runFastDraw) {
357
+ if (!fastDraw) {
354
358
  this.rowsRenderCalculator = this.createRowsCalculator(RENDER_TYPE);
355
359
  this.columnsRenderCalculator = this.createColumnsCalculator(RENDER_TYPE);
356
360
  }
361
+
357
362
  // delete temporarily to make sure that renderers always use rowsRenderCalculator, not rowsVisibleCalculator
358
363
  this.rowsVisibleCalculator = null;
359
364
  this.columnsVisibleCalculator = null;
360
- return runFastDraw;
365
+ return fastDraw;
361
366
  }
362
367
 
363
368
  /**
package/base.js CHANGED
@@ -15,7 +15,9 @@ exports.CellRange = _src.CellRange;
15
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
16
  // FIXME: Bug in eslint-plugin-import: https://github.com/benmosher/eslint-plugin-import/issues/1883
17
17
  /* eslint-disable import/named */
18
+
18
19
  /* eslint-enable import/named */
20
+
19
21
  // register default mandatory cell type for the Base package
20
22
  (0, _registry2.registerCellType)(_textType.TextCellType);
21
23
 
@@ -43,8 +45,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
43
45
  Handsontable.CellCoords = _src.CellCoords;
44
46
  Handsontable.CellRange = _src.CellRange;
45
47
  Handsontable.packageName = 'handsontable';
46
- Handsontable.buildDate = "08/12/2023 08:37:33";
47
- Handsontable.version = "0.0.0-next-3d099da-20231208";
48
+ Handsontable.buildDate = "11/12/2023 13:18:24";
49
+ Handsontable.version = "0.0.0-next-51d3397-20231211";
48
50
  Handsontable.languages = {
49
51
  dictionaryKeys: _registry.dictionaryKeys,
50
52
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "08/12/2023 08:37:39";
39
- Handsontable.version = "0.0.0-next-3d099da-20231208";
38
+ Handsontable.buildDate = "11/12/2023 13:18:31";
39
+ Handsontable.version = "0.0.0-next-51d3397-20231211";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,