handsontable 14.3.0 → 14.4.0-next-0a79a1f-20240521

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 (195) hide show
  1. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  2. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  3. package/3rdparty/walkontable/src/core/_base.js +1 -1
  4. package/3rdparty/walkontable/src/core/_base.mjs +1 -1
  5. package/3rdparty/walkontable/src/overlay/_base.js +24 -20
  6. package/3rdparty/walkontable/src/overlay/_base.mjs +24 -20
  7. package/3rdparty/walkontable/src/overlay/bottom.js +3 -6
  8. package/3rdparty/walkontable/src/overlay/bottom.mjs +3 -6
  9. package/3rdparty/walkontable/src/overlay/inlineStart.js +22 -19
  10. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +22 -19
  11. package/3rdparty/walkontable/src/overlay/top.js +13 -12
  12. package/3rdparty/walkontable/src/overlay/top.mjs +13 -12
  13. package/3rdparty/walkontable/src/overlays.js +46 -24
  14. package/3rdparty/walkontable/src/overlays.mjs +46 -24
  15. package/3rdparty/walkontable/src/selection/manager.js +7 -0
  16. package/3rdparty/walkontable/src/selection/manager.mjs +7 -0
  17. package/3rdparty/walkontable/src/selection/scanner.js +7 -0
  18. package/3rdparty/walkontable/src/selection/scanner.mjs +7 -0
  19. package/3rdparty/walkontable/src/table.js +10 -11
  20. package/3rdparty/walkontable/src/table.mjs +10 -11
  21. package/3rdparty/walkontable/src/utils/columnStretching.js +4 -0
  22. package/3rdparty/walkontable/src/utils/columnStretching.mjs +4 -0
  23. package/3rdparty/walkontable/src/viewport.js +18 -10
  24. package/3rdparty/walkontable/src/viewport.mjs +18 -10
  25. package/CHANGELOG.md +37 -0
  26. package/base.js +2 -2
  27. package/base.mjs +2 -2
  28. package/core.d.ts +2 -2
  29. package/core.js +93 -162
  30. package/core.mjs +93 -162
  31. package/dataMap/dataMap.js +10 -4
  32. package/dataMap/dataMap.mjs +10 -4
  33. package/dataMap/dataSource.js +16 -3
  34. package/dataMap/dataSource.mjs +16 -3
  35. package/dataMap/metaManager/lazyFactoryMap.js +7 -0
  36. package/dataMap/metaManager/lazyFactoryMap.mjs +7 -0
  37. package/dataMap/metaManager/metaSchema.js +38 -0
  38. package/dataMap/metaManager/metaSchema.mjs +38 -0
  39. package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -0
  40. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -0
  41. package/dataMap/metaManager/mods/extendMetaProperties.js +44 -31
  42. package/dataMap/metaManager/mods/extendMetaProperties.mjs +44 -31
  43. package/dataMap/metaManager/utils.js +7 -0
  44. package/dataMap/metaManager/utils.mjs +7 -0
  45. package/dist/handsontable.css +4 -5
  46. package/dist/handsontable.full.css +4 -5
  47. package/dist/handsontable.full.js +5878 -4657
  48. package/dist/handsontable.full.min.css +4 -4
  49. package/dist/handsontable.full.min.js +59 -59
  50. package/dist/handsontable.js +5383 -4277
  51. package/dist/handsontable.min.css +4 -4
  52. package/dist/handsontable.min.js +20 -20
  53. package/editorManager.js +0 -67
  54. package/editorManager.mjs +0 -67
  55. package/editors/autocompleteEditor/autocompleteEditor.js +6 -4
  56. package/editors/autocompleteEditor/autocompleteEditor.mjs +6 -4
  57. package/editors/baseEditor/baseEditor.js +1 -36
  58. package/editors/baseEditor/baseEditor.mjs +2 -37
  59. package/editors/dateEditor/dateEditor.js +4 -1
  60. package/editors/dateEditor/dateEditor.mjs +4 -1
  61. package/editors/dropdownEditor/dropdownEditor.js +8 -5
  62. package/editors/dropdownEditor/dropdownEditor.mjs +8 -5
  63. package/editors/handsontableEditor/handsontableEditor.js +2 -2
  64. package/editors/handsontableEditor/handsontableEditor.mjs +2 -2
  65. package/editors/selectEditor/selectEditor.js +1 -9
  66. package/editors/selectEditor/selectEditor.mjs +1 -9
  67. package/editors/textEditor/textEditor.js +2 -11
  68. package/editors/textEditor/textEditor.mjs +2 -11
  69. package/focusManager.js +3 -5
  70. package/focusManager.mjs +3 -5
  71. package/helpers/array.js +7 -0
  72. package/helpers/array.mjs +7 -0
  73. package/helpers/mixed.js +2 -2
  74. package/helpers/mixed.mjs +2 -2
  75. package/helpers/number.js +12 -2
  76. package/helpers/number.mjs +12 -2
  77. package/package.json +3 -3
  78. package/pluginHooks.d.ts +1 -1
  79. package/pluginHooks.js +79 -2
  80. package/pluginHooks.mjs +79 -2
  81. package/plugins/autoColumnSize/autoColumnSize.js +7 -0
  82. package/plugins/autoColumnSize/autoColumnSize.mjs +7 -0
  83. package/plugins/autoRowSize/autoRowSize.js +2 -2
  84. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  85. package/plugins/autofill/autofill.js +1 -1
  86. package/plugins/autofill/autofill.mjs +1 -1
  87. package/plugins/base/base.d.ts +1 -1
  88. package/plugins/base/base.js +6 -2
  89. package/plugins/base/base.mjs +6 -2
  90. package/plugins/collapsibleColumns/collapsibleColumns.js +1 -1
  91. package/plugins/collapsibleColumns/collapsibleColumns.mjs +1 -1
  92. package/plugins/columnSorting/sortFunction/date.js +2 -46
  93. package/plugins/columnSorting/sortFunction/date.mjs +2 -45
  94. package/plugins/columnSorting/sortFunction/time.js +17 -0
  95. package/plugins/columnSorting/sortFunction/time.mjs +13 -0
  96. package/plugins/columnSorting/sortService/registry.js +4 -2
  97. package/plugins/columnSorting/sortService/registry.mjs +3 -1
  98. package/plugins/columnSorting/utils.js +64 -0
  99. package/plugins/columnSorting/utils.mjs +62 -0
  100. package/plugins/columnSummary/columnSummary.js +27 -10
  101. package/plugins/columnSummary/columnSummary.mjs +27 -10
  102. package/plugins/columnSummary/endpoints.js +15 -0
  103. package/plugins/columnSummary/endpoints.mjs +15 -0
  104. package/plugins/comments/comments.js +2 -8
  105. package/plugins/comments/comments.mjs +2 -8
  106. package/plugins/comments/contextMenuItem/addEditComment.js +0 -1
  107. package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -1
  108. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  109. package/plugins/copyPaste/copyPaste.js +9 -2
  110. package/plugins/copyPaste/copyPaste.mjs +9 -2
  111. package/plugins/copyPaste/pasteEvent.js +1 -0
  112. package/plugins/copyPaste/pasteEvent.mjs +1 -0
  113. package/plugins/filters/filters.js +1 -1
  114. package/plugins/filters/filters.mjs +1 -1
  115. package/plugins/filters/ui/multipleSelect.js +22 -14
  116. package/plugins/filters/ui/multipleSelect.mjs +22 -14
  117. package/plugins/filters/utils.js +7 -0
  118. package/plugins/filters/utils.mjs +7 -0
  119. package/plugins/formulas/formulas.d.ts +10 -0
  120. package/plugins/formulas/formulas.js +11 -2
  121. package/plugins/formulas/formulas.mjs +11 -2
  122. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
  123. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -1
  124. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -1
  125. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -1
  126. package/plugins/hiddenColumns/hiddenColumns.js +8 -1
  127. package/plugins/hiddenColumns/hiddenColumns.mjs +8 -1
  128. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
  129. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -1
  130. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -1
  131. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -1
  132. package/plugins/hiddenRows/hiddenRows.js +7 -0
  133. package/plugins/hiddenRows/hiddenRows.mjs +7 -0
  134. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  135. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  136. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  137. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  138. package/plugins/manualColumnMove/manualColumnMove.js +1 -1
  139. package/plugins/manualColumnMove/manualColumnMove.mjs +1 -1
  140. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  141. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  142. package/plugins/manualRowMove/manualRowMove.js +1 -1
  143. package/plugins/manualRowMove/manualRowMove.mjs +1 -1
  144. package/plugins/manualRowResize/manualRowResize.d.ts +1 -0
  145. package/plugins/manualRowResize/manualRowResize.js +11 -2
  146. package/plugins/manualRowResize/manualRowResize.mjs +11 -2
  147. package/plugins/mergeCells/cellsCollection.js +7 -0
  148. package/plugins/mergeCells/cellsCollection.mjs +7 -0
  149. package/plugins/mergeCells/mergeCells.js +7 -0
  150. package/plugins/mergeCells/mergeCells.mjs +7 -0
  151. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +7 -0
  152. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +7 -0
  153. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.js +7 -0
  154. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +7 -0
  155. package/plugins/nestedRows/nestedRows.js +7 -0
  156. package/plugins/nestedRows/nestedRows.mjs +7 -0
  157. package/plugins/trimRows/trimRows.js +7 -0
  158. package/plugins/trimRows/trimRows.mjs +7 -0
  159. package/selection/selection.js +163 -4
  160. package/selection/selection.mjs +163 -4
  161. package/selection/utils.js +7 -0
  162. package/selection/utils.mjs +7 -0
  163. package/settings.d.ts +1 -0
  164. package/shortcutContexts/commands/editor/closeAndSave.js +2 -3
  165. package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -3
  166. package/shortcutContexts/commands/editor/closeAndSaveByArrowKeys.js +27 -0
  167. package/shortcutContexts/commands/editor/closeAndSaveByArrowKeys.mjs +24 -0
  168. package/shortcutContexts/commands/editor/closeAndSaveByEnter.js +11 -0
  169. package/shortcutContexts/commands/editor/closeAndSaveByEnter.mjs +8 -0
  170. package/shortcutContexts/commands/editor/index.js +3 -1
  171. package/shortcutContexts/commands/editor/index.mjs +3 -1
  172. package/shortcutContexts/editor.js +9 -1
  173. package/shortcutContexts/editor.mjs +9 -1
  174. package/shortcutContexts/index.js +1 -1
  175. package/shortcutContexts/index.mjs +1 -1
  176. package/shortcuts/keyObserver.js +7 -0
  177. package/shortcuts/keyObserver.mjs +7 -0
  178. package/shortcuts/utils.js +7 -0
  179. package/shortcuts/utils.mjs +7 -0
  180. package/tableView.js +1 -4
  181. package/tableView.mjs +1 -4
  182. package/translations/changesObservable/observable.js +7 -0
  183. package/translations/changesObservable/observable.mjs +7 -0
  184. package/translations/indexMapper.js +7 -0
  185. package/translations/indexMapper.mjs +8 -1
  186. package/utils/dataStructures/uniqueSet.js +7 -0
  187. package/utils/dataStructures/uniqueSet.mjs +7 -0
  188. package/utils/ghostTable.js +0 -4
  189. package/utils/ghostTable.mjs +0 -4
  190. package/utils/paginator.js +7 -0
  191. package/utils/paginator.mjs +7 -0
  192. package/validators/dateValidator/dateValidator.js +1 -3
  193. package/validators/dateValidator/dateValidator.mjs +1 -3
  194. package/validators/timeValidator/timeValidator.js +1 -3
  195. package/validators/timeValidator/timeValidator.mjs +1 -3
@@ -1536,6 +1536,44 @@ var _default = () => {
1536
1536
  * ```
1537
1537
  */
1538
1538
  data: undefined,
1539
+ /**
1540
+ * @description
1541
+ * If `true`, Handsontable will interpret the dots in the columns mapping as a nested object path. If your dataset contains
1542
+ * the dots in the object keys and you don't want Handsontable to interpret them as a nested object path, set this option to `false`.
1543
+ *
1544
+ * The option only works when defined in the global table settings.
1545
+ *
1546
+ * @since 14.4.0
1547
+ * @memberof Options#
1548
+ * @type {boolean}
1549
+ * @default true
1550
+ * @category Core
1551
+ *
1552
+ * @example
1553
+ * ```js
1554
+ * // All dots are interpreted as nested object paths
1555
+ * dataDotNotation: true,
1556
+ * data: [
1557
+ * { id: 1, name: { first: 'Ted', last: 'Right' }, user: { address: '1234 Any Street' } },
1558
+ * ],
1559
+ * columns={[
1560
+ * { data: 'name.first' },
1561
+ * { data: 'user.address' },
1562
+ * ]},
1563
+ * ```
1564
+ * ```js
1565
+ * // All dots are interpreted as simple object keys
1566
+ * dataDotNotation: false,
1567
+ * data: [
1568
+ * { id: 1, 'name.first': 'Ted', 'user.address': '1234 Any Street' },
1569
+ * ],
1570
+ * columns={[
1571
+ * { data: 'name.first' },
1572
+ * { data: 'user.address' },
1573
+ * ]},
1574
+ * ```
1575
+ */
1576
+ dataDotNotation: true,
1539
1577
  /**
1540
1578
  * @description
1541
1579
  * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects)
@@ -1533,6 +1533,44 @@ export default (() => {
1533
1533
  * ```
1534
1534
  */
1535
1535
  data: undefined,
1536
+ /**
1537
+ * @description
1538
+ * If `true`, Handsontable will interpret the dots in the columns mapping as a nested object path. If your dataset contains
1539
+ * the dots in the object keys and you don't want Handsontable to interpret them as a nested object path, set this option to `false`.
1540
+ *
1541
+ * The option only works when defined in the global table settings.
1542
+ *
1543
+ * @since 14.4.0
1544
+ * @memberof Options#
1545
+ * @type {boolean}
1546
+ * @default true
1547
+ * @category Core
1548
+ *
1549
+ * @example
1550
+ * ```js
1551
+ * // All dots are interpreted as nested object paths
1552
+ * dataDotNotation: true,
1553
+ * data: [
1554
+ * { id: 1, name: { first: 'Ted', last: 'Right' }, user: { address: '1234 Any Street' } },
1555
+ * ],
1556
+ * columns={[
1557
+ * { data: 'name.first' },
1558
+ * { data: 'user.address' },
1559
+ * ]},
1560
+ * ```
1561
+ * ```js
1562
+ * // All dots are interpreted as simple object keys
1563
+ * dataDotNotation: false,
1564
+ * data: [
1565
+ * { id: 1, 'name.first': 'Ted', 'user.address': '1234 Any Street' },
1566
+ * ],
1567
+ * columns={[
1568
+ * { data: 'name.first' },
1569
+ * { data: 'user.address' },
1570
+ * ]},
1571
+ * ```
1572
+ */
1573
+ dataDotNotation: true,
1536
1574
  /**
1537
1575
  * @description
1538
1576
  * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects)
@@ -2,6 +2,13 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/esnext.set.difference.v2.js");
6
+ require("core-js/modules/esnext.set.intersection.v2.js");
7
+ require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
8
+ require("core-js/modules/esnext.set.is-subset-of.v2.js");
9
+ require("core-js/modules/esnext.set.is-superset-of.v2.js");
10
+ require("core-js/modules/esnext.set.symmetric-difference.v2.js");
11
+ require("core-js/modules/esnext.set.union.v2.js");
5
12
  var _pluginHooks = _interopRequireDefault(require("../../../pluginHooks"));
6
13
  var _object = require("../../../helpers/object");
7
14
  var _function = require("../../../helpers/function");
@@ -1,4 +1,11 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.set.difference.v2.js";
3
+ import "core-js/modules/esnext.set.intersection.v2.js";
4
+ import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
5
+ import "core-js/modules/esnext.set.is-subset-of.v2.js";
6
+ import "core-js/modules/esnext.set.is-superset-of.v2.js";
7
+ import "core-js/modules/esnext.set.symmetric-difference.v2.js";
8
+ import "core-js/modules/esnext.set.union.v2.js";
2
9
  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; }
3
10
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
11
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -2,9 +2,22 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/esnext.set.difference.v2.js");
7
+ require("core-js/modules/esnext.set.intersection.v2.js");
8
+ require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
9
+ require("core-js/modules/esnext.set.is-subset-of.v2.js");
10
+ require("core-js/modules/esnext.set.is-superset-of.v2.js");
11
+ require("core-js/modules/esnext.set.symmetric-difference.v2.js");
12
+ require("core-js/modules/esnext.set.union.v2.js");
13
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
14
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
15
  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; }
6
16
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
17
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
19
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
20
+ var _initOnlyCallback = /*#__PURE__*/new WeakMap();
8
21
  /**
9
22
  * @class ExtendMetaPropertiesMod
10
23
  */
@@ -22,11 +35,7 @@ class ExtendMetaPropertiesMod {
22
35
  * @type {Map}
23
36
  */
24
37
  _defineProperty(this, "propDescriptors", new Map([['ariaTags', {
25
- onChange(propName, value, isInitialChange) {
26
- if (!isInitialChange) {
27
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable instance was initialized.`);
28
- }
29
- }
38
+ initOnly: true
30
39
  }], ['fixedColumnsLeft', {
31
40
  target: 'fixedColumnsStart',
32
41
  onChange(propName) {
@@ -39,48 +48,52 @@ class ExtendMetaPropertiesMod {
39
48
  }
40
49
  }
41
50
  }], ['layoutDirection', {
42
- onChange(propName, value, isInitialChange) {
43
- if (!isInitialChange) {
44
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
45
- }
51
+ initOnly: true
52
+ }], ['renderAllColumns', {
53
+ initOnly: true
54
+ }], ['renderAllRows', {
55
+ initOnly: true
56
+ }]]));
57
+ /**
58
+ * Callback called when the prop is marked as `initOnly`.
59
+ *
60
+ * @param {string} propName The property name.
61
+ * @param {*} value The new value.
62
+ * @param {boolean} isInitialChange Is the change initial.
63
+ */
64
+ _classPrivateFieldInitSpec(this, _initOnlyCallback, (propName, value, isInitialChange) => {
65
+ if (!isInitialChange) {
66
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
46
67
  }
47
- }]
48
- // Temporary commented out due to the bug in the React wrapper.
49
- // ['renderAllColumns', {
50
- // onChange(propName, value, isInitialChange) {
51
- // if (!isInitialChange) {
52
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
53
- // }
54
- // }
55
- // }],
56
- // ['renderAllRows', {
57
- // onChange(propName, value, isInitialChange) {
58
- // if (!isInitialChange) {
59
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
60
- // }
61
- // }
62
- // }],
63
- ]));
68
+ });
64
69
  this.metaManager = metaManager;
65
70
  this.extendMetaProps();
66
71
  }
67
-
68
72
  /**
69
73
  * Extends the meta options based on the object descriptors from the `propDescriptors` list.
70
74
  */
71
75
  extendMetaProps() {
72
76
  this.propDescriptors.forEach((descriptor, alias) => {
73
77
  const {
78
+ initOnly,
74
79
  target,
75
- onChange = () => {}
80
+ onChange
76
81
  } = descriptor;
77
82
  const hasTarget = typeof target === 'string';
78
83
  const targetProp = hasTarget ? target : alias;
79
84
  const origProp = `_${targetProp}`;
80
85
  this.metaManager.globalMeta.meta[origProp] = this.metaManager.globalMeta.meta[targetProp];
81
- this.installPropWatcher(alias, origProp, onChange);
82
- if (hasTarget) {
83
- this.installPropWatcher(target, origProp, onChange);
86
+ if (onChange) {
87
+ this.installPropWatcher(alias, origProp, onChange);
88
+ if (hasTarget) {
89
+ this.installPropWatcher(target, origProp, onChange);
90
+ }
91
+ } else if (initOnly) {
92
+ this.installPropWatcher(alias, origProp, _classPrivateFieldGet(_initOnlyCallback, this));
93
+ if (!this.metaManager.globalMeta.meta._initOnlySettings) {
94
+ this.metaManager.globalMeta.meta._initOnlySettings = [];
95
+ }
96
+ this.metaManager.globalMeta.meta._initOnlySettings.push(alias);
84
97
  }
85
98
  });
86
99
  }
@@ -1,7 +1,20 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.set.difference.v2.js";
4
+ import "core-js/modules/esnext.set.intersection.v2.js";
5
+ import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
6
+ import "core-js/modules/esnext.set.is-subset-of.v2.js";
7
+ import "core-js/modules/esnext.set.is-superset-of.v2.js";
8
+ import "core-js/modules/esnext.set.symmetric-difference.v2.js";
9
+ import "core-js/modules/esnext.set.union.v2.js";
10
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
11
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
2
12
  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; }
3
13
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
14
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
16
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
17
+ var _initOnlyCallback = /*#__PURE__*/new WeakMap();
5
18
  /**
6
19
  * @class ExtendMetaPropertiesMod
7
20
  */
@@ -19,11 +32,7 @@ export class ExtendMetaPropertiesMod {
19
32
  * @type {Map}
20
33
  */
21
34
  _defineProperty(this, "propDescriptors", new Map([['ariaTags', {
22
- onChange(propName, value, isInitialChange) {
23
- if (!isInitialChange) {
24
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable instance was initialized.`);
25
- }
26
- }
35
+ initOnly: true
27
36
  }], ['fixedColumnsLeft', {
28
37
  target: 'fixedColumnsStart',
29
38
  onChange(propName) {
@@ -36,48 +45,52 @@ export class ExtendMetaPropertiesMod {
36
45
  }
37
46
  }
38
47
  }], ['layoutDirection', {
39
- onChange(propName, value, isInitialChange) {
40
- if (!isInitialChange) {
41
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
42
- }
48
+ initOnly: true
49
+ }], ['renderAllColumns', {
50
+ initOnly: true
51
+ }], ['renderAllRows', {
52
+ initOnly: true
53
+ }]]));
54
+ /**
55
+ * Callback called when the prop is marked as `initOnly`.
56
+ *
57
+ * @param {string} propName The property name.
58
+ * @param {*} value The new value.
59
+ * @param {boolean} isInitialChange Is the change initial.
60
+ */
61
+ _classPrivateFieldInitSpec(this, _initOnlyCallback, (propName, value, isInitialChange) => {
62
+ if (!isInitialChange) {
63
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
43
64
  }
44
- }]
45
- // Temporary commented out due to the bug in the React wrapper.
46
- // ['renderAllColumns', {
47
- // onChange(propName, value, isInitialChange) {
48
- // if (!isInitialChange) {
49
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
50
- // }
51
- // }
52
- // }],
53
- // ['renderAllRows', {
54
- // onChange(propName, value, isInitialChange) {
55
- // if (!isInitialChange) {
56
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
57
- // }
58
- // }
59
- // }],
60
- ]));
65
+ });
61
66
  this.metaManager = metaManager;
62
67
  this.extendMetaProps();
63
68
  }
64
-
65
69
  /**
66
70
  * Extends the meta options based on the object descriptors from the `propDescriptors` list.
67
71
  */
68
72
  extendMetaProps() {
69
73
  this.propDescriptors.forEach((descriptor, alias) => {
70
74
  const {
75
+ initOnly,
71
76
  target,
72
- onChange = () => {}
77
+ onChange
73
78
  } = descriptor;
74
79
  const hasTarget = typeof target === 'string';
75
80
  const targetProp = hasTarget ? target : alias;
76
81
  const origProp = `_${targetProp}`;
77
82
  this.metaManager.globalMeta.meta[origProp] = this.metaManager.globalMeta.meta[targetProp];
78
- this.installPropWatcher(alias, origProp, onChange);
79
- if (hasTarget) {
80
- this.installPropWatcher(target, origProp, onChange);
83
+ if (onChange) {
84
+ this.installPropWatcher(alias, origProp, onChange);
85
+ if (hasTarget) {
86
+ this.installPropWatcher(target, origProp, onChange);
87
+ }
88
+ } else if (initOnly) {
89
+ this.installPropWatcher(alias, origProp, _classPrivateFieldGet(_initOnlyCallback, this));
90
+ if (!this.metaManager.globalMeta.meta._initOnlySettings) {
91
+ this.metaManager.globalMeta.meta._initOnlySettings = [];
92
+ }
93
+ this.metaManager.globalMeta.meta._initOnlySettings.push(alias);
81
94
  }
82
95
  });
83
96
  }
@@ -7,6 +7,13 @@ exports.extendByMetaType = extendByMetaType;
7
7
  exports.isNullish = isNullish;
8
8
  exports.isUnsignedNumber = isUnsignedNumber;
9
9
  require("core-js/modules/es.error.cause.js");
10
+ require("core-js/modules/esnext.set.difference.v2.js");
11
+ require("core-js/modules/esnext.set.intersection.v2.js");
12
+ require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
13
+ require("core-js/modules/esnext.set.is-subset-of.v2.js");
14
+ require("core-js/modules/esnext.set.is-superset-of.v2.js");
15
+ require("core-js/modules/esnext.set.symmetric-difference.v2.js");
16
+ require("core-js/modules/esnext.set.union.v2.js");
10
17
  var _object = require("../../helpers/object");
11
18
  var _registry = require("../../cellTypes/registry");
12
19
  /**
@@ -1,4 +1,11 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.set.difference.v2.js";
3
+ import "core-js/modules/esnext.set.intersection.v2.js";
4
+ import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
5
+ import "core-js/modules/esnext.set.is-subset-of.v2.js";
6
+ import "core-js/modules/esnext.set.is-superset-of.v2.js";
7
+ import "core-js/modules/esnext.set.symmetric-difference.v2.js";
8
+ import "core-js/modules/esnext.set.union.v2.js";
2
9
  import { hasOwnProperty, isObject, objectEach, inherit, extend } from "../../helpers/object.mjs";
3
10
  import { getCellType } from "../../cellTypes/registry.mjs";
4
11
  /**
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 14.3.0
29
- * Release date: 16/04/2024 (built at 16/04/2024 10:23:29)
28
+ * Version: 14.4.0-next-0a79a1f-20240521
29
+ * Release date: 28/05/2024 (built at 21/05/2024 10:48:00)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -203,12 +203,11 @@
203
203
  }
204
204
 
205
205
  .handsontable th:first-child,
206
- .handsontable th:nth-child(2),
207
206
  .handsontable td:first-of-type {
208
207
  border-left: 1px solid #ccc;
209
208
  }
210
209
 
211
- [dir=rtl].handsontable th:first-child, [dir=rtl].handsontable th:nth-child(2), [dir=rtl].handsontable td:first-of-type {
210
+ [dir=rtl].handsontable th:first-child, [dir=rtl].handsontable td:first-of-type {
212
211
  border-right: 1px solid #ccc;
213
212
  }
214
213
 
@@ -1412,7 +1411,7 @@ textarea.HandsontableCopyPaste {
1412
1411
  }
1413
1412
 
1414
1413
  .htUIMultipleSelect .ht_master .wtHolder {
1415
- overflow-y: scroll;
1414
+ overflow: auto;
1416
1415
  }
1417
1416
 
1418
1417
  .handsontable .htFiltersActive .changeType {
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 14.3.0
29
- * Release date: 16/04/2024 (built at 16/04/2024 10:23:29)
28
+ * Version: 14.4.0-next-0a79a1f-20240521
29
+ * Release date: 28/05/2024 (built at 21/05/2024 10:48:00)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -203,12 +203,11 @@
203
203
  }
204
204
 
205
205
  .handsontable th:first-child,
206
- .handsontable th:nth-child(2),
207
206
  .handsontable td:first-of-type {
208
207
  border-left: 1px solid #ccc;
209
208
  }
210
209
 
211
- [dir=rtl].handsontable th:first-child, [dir=rtl].handsontable th:nth-child(2), [dir=rtl].handsontable td:first-of-type {
210
+ [dir=rtl].handsontable th:first-child, [dir=rtl].handsontable td:first-of-type {
212
211
  border-right: 1px solid #ccc;
213
212
  }
214
213
 
@@ -1645,7 +1644,7 @@ textarea.HandsontableCopyPaste {
1645
1644
  }
1646
1645
 
1647
1646
  .htUIMultipleSelect .ht_master .wtHolder {
1648
- overflow-y: scroll;
1647
+ overflow: auto;
1649
1648
  }
1650
1649
 
1651
1650
  .handsontable .htFiltersActive .changeType {