handsontable 12.3.3 → 12.4.0-next-ddbea0c-20230512

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. package/3rdparty/walkontable/src/cell/coords.js +13 -16
  2. package/3rdparty/walkontable/src/cell/coords.mjs +13 -16
  3. package/3rdparty/walkontable/src/cell/range.js +25 -29
  4. package/3rdparty/walkontable/src/cell/range.mjs +24 -28
  5. package/3rdparty/walkontable/src/core/_base.js +16 -20
  6. package/3rdparty/walkontable/src/core/_base.mjs +16 -20
  7. package/3rdparty/walkontable/src/event.js +4 -0
  8. package/3rdparty/walkontable/src/event.mjs +4 -0
  9. package/3rdparty/walkontable/src/overlay/_base.js +6 -7
  10. package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
  11. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  12. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  13. package/3rdparty/walkontable/src/overlay/top.js +6 -7
  14. package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
  15. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  16. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  17. package/3rdparty/walkontable/src/overlays.js +55 -64
  18. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  19. package/3rdparty/walkontable/src/scroll.js +20 -23
  20. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  21. package/3rdparty/walkontable/src/settings.js +13 -15
  22. package/3rdparty/walkontable/src/settings.mjs +13 -15
  23. package/3rdparty/walkontable/src/table.js +22 -26
  24. package/3rdparty/walkontable/src/table.mjs +22 -26
  25. package/CHANGELOG.md +14 -0
  26. package/base.js +2 -4
  27. package/base.mjs +2 -2
  28. package/core.js +23 -6
  29. package/core.mjs +23 -6
  30. package/dataMap/dataSource.js +5 -5
  31. package/dataMap/dataSource.mjs +5 -5
  32. package/dataMap/metaManager/metaSchema.js +9 -7
  33. package/dataMap/metaManager/metaSchema.mjs +9 -7
  34. package/dist/handsontable.css +2 -2
  35. package/dist/handsontable.full.css +2 -2
  36. package/dist/handsontable.full.js +7364 -5992
  37. package/dist/handsontable.full.min.css +2 -2
  38. package/dist/handsontable.full.min.js +256 -234
  39. package/dist/handsontable.js +4326 -3275
  40. package/dist/handsontable.min.css +2 -2
  41. package/dist/handsontable.min.js +11 -3
  42. package/dist/languages/all.js +133 -0
  43. package/dist/languages/ar-AR.js +7 -0
  44. package/dist/languages/cs-CZ.js +7 -0
  45. package/dist/languages/de-CH.js +7 -0
  46. package/dist/languages/de-DE.js +7 -0
  47. package/dist/languages/en-US.js +7 -0
  48. package/dist/languages/es-MX.js +7 -0
  49. package/dist/languages/fr-FR.js +7 -0
  50. package/dist/languages/it-IT.js +7 -0
  51. package/dist/languages/ja-JP.js +7 -0
  52. package/dist/languages/ko-KR.js +7 -0
  53. package/dist/languages/lv-LV.js +7 -0
  54. package/dist/languages/nb-NO.js +7 -0
  55. package/dist/languages/nl-NL.js +7 -0
  56. package/dist/languages/pl-PL.js +7 -0
  57. package/dist/languages/pt-BR.js +7 -0
  58. package/dist/languages/ru-RU.js +7 -0
  59. package/dist/languages/sr-SP.js +7 -0
  60. package/dist/languages/zh-CN.js +7 -0
  61. package/dist/languages/zh-TW.js +7 -0
  62. package/editors/autocompleteEditor/autocompleteEditor.js +8 -9
  63. package/editors/autocompleteEditor/autocompleteEditor.mjs +8 -9
  64. package/helpers/mixed.js +2 -2
  65. package/helpers/mixed.mjs +2 -2
  66. package/i18n/languages/ar-AR.js +7 -1
  67. package/i18n/languages/cs-CZ.js +7 -1
  68. package/i18n/languages/de-CH.js +7 -1
  69. package/i18n/languages/de-DE.js +7 -1
  70. package/i18n/languages/en-US.js +7 -1
  71. package/i18n/languages/es-MX.js +7 -1
  72. package/i18n/languages/fr-FR.js +7 -1
  73. package/i18n/languages/it-IT.js +7 -1
  74. package/i18n/languages/ja-JP.js +7 -1
  75. package/i18n/languages/ko-KR.js +7 -1
  76. package/i18n/languages/lv-LV.js +7 -1
  77. package/i18n/languages/nb-NO.js +7 -1
  78. package/i18n/languages/nl-NL.js +7 -1
  79. package/i18n/languages/pl-PL.js +7 -1
  80. package/i18n/languages/pt-BR.js +7 -1
  81. package/i18n/languages/ru-RU.js +7 -1
  82. package/i18n/languages/sr-SP.js +7 -1
  83. package/i18n/languages/zh-CN.js +7 -1
  84. package/i18n/languages/zh-TW.js +7 -1
  85. package/languages/all.js +133 -0
  86. package/languages/ar-AR.js +7 -0
  87. package/languages/cs-CZ.js +7 -0
  88. package/languages/de-CH.js +7 -0
  89. package/languages/de-DE.js +7 -0
  90. package/languages/en-US.js +7 -0
  91. package/languages/es-MX.js +7 -0
  92. package/languages/fr-FR.js +7 -0
  93. package/languages/index.js +133 -0
  94. package/languages/it-IT.js +7 -0
  95. package/languages/ja-JP.js +7 -0
  96. package/languages/ko-KR.js +7 -0
  97. package/languages/lv-LV.js +7 -0
  98. package/languages/nb-NO.js +7 -0
  99. package/languages/nl-NL.js +7 -0
  100. package/languages/pl-PL.js +7 -0
  101. package/languages/pt-BR.js +7 -0
  102. package/languages/ru-RU.js +7 -0
  103. package/languages/sr-SP.js +7 -0
  104. package/languages/zh-CN.js +7 -0
  105. package/languages/zh-TW.js +7 -0
  106. package/package.json +3 -2
  107. package/pluginHooks.js +16 -6
  108. package/pluginHooks.mjs +15 -3
  109. package/plugins/autoRowSize/autoRowSize.js +2 -2
  110. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  111. package/plugins/base/base.js +9 -10
  112. package/plugins/base/base.mjs +9 -10
  113. package/plugins/collapsibleColumns/collapsibleColumns.js +24 -7
  114. package/plugins/collapsibleColumns/collapsibleColumns.mjs +24 -7
  115. package/plugins/copyPaste/copyPaste.js +92 -16
  116. package/plugins/copyPaste/copyPaste.mjs +92 -16
  117. package/plugins/copyPaste/copyableRanges.js +39 -39
  118. package/plugins/copyPaste/copyableRanges.mjs +32 -32
  119. package/plugins/customBorders/customBorders.d.ts +2 -0
  120. package/plugins/customBorders/customBorders.js +6 -7
  121. package/plugins/customBorders/customBorders.mjs +6 -7
  122. package/plugins/filters/filters.js +5 -0
  123. package/plugins/filters/filters.mjs +5 -0
  124. package/plugins/formulas/engine/register.js +9 -0
  125. package/plugins/formulas/engine/register.mjs +13 -4
  126. package/plugins/formulas/engine/settings.js +18 -3
  127. package/plugins/formulas/engine/settings.mjs +16 -3
  128. package/plugins/formulas/formulas.js +308 -162
  129. package/plugins/formulas/formulas.mjs +308 -163
  130. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  131. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  132. package/plugins/formulas/indexSyncer/index.js +225 -0
  133. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  134. package/plugins/formulas/utils.js +81 -0
  135. package/plugins/formulas/utils.mjs +74 -0
  136. package/plugins/hiddenColumns/hiddenColumns.js +12 -7
  137. package/plugins/hiddenColumns/hiddenColumns.mjs +12 -7
  138. package/plugins/hiddenRows/hiddenRows.js +12 -7
  139. package/plugins/hiddenRows/hiddenRows.mjs +12 -7
  140. package/plugins/manualRowMove/manualRowMove.js +26 -11
  141. package/plugins/manualRowMove/manualRowMove.mjs +27 -12
  142. package/plugins/nestedHeaders/nestedHeaders.js +26 -7
  143. package/plugins/nestedHeaders/nestedHeaders.mjs +26 -7
  144. package/plugins/nestedHeaders/stateManager/headersTree.js +23 -26
  145. package/plugins/nestedHeaders/stateManager/headersTree.mjs +20 -23
  146. package/plugins/nestedHeaders/stateManager/index.js +21 -3
  147. package/plugins/nestedHeaders/stateManager/index.mjs +18 -0
  148. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  149. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -1
  150. package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -0
  151. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -0
  152. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  153. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  154. package/plugins/registry.js +3 -1
  155. package/plugins/undoRedo/undoRedo.js +0 -1
  156. package/plugins/undoRedo/undoRedo.mjs +0 -1
  157. package/selection/highlight/visualSelection.js +5 -6
  158. package/selection/highlight/visualSelection.mjs +5 -6
  159. package/tableView.js +62 -72
  160. package/tableView.mjs +62 -72
  161. package/translations/changesObservable/observable.js +41 -46
  162. package/translations/changesObservable/observable.mjs +36 -41
  163. package/translations/changesObservable/observer.js +8 -1
  164. package/translations/changesObservable/observer.mjs +7 -0
  165. package/translations/indexMapper.js +21 -0
  166. package/translations/indexMapper.mjs +21 -0
  167. package/translations/maps/linkedPhysicalIndexToValueMap.js +6 -0
  168. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +6 -0
  169. package/utils/dataStructures/tree.js +15 -18
  170. package/utils/dataStructures/tree.mjs +15 -18
  171. package/utils/parseTable.js +5 -1
  172. package/utils/parseTable.mjs +5 -1
@@ -120,6 +120,12 @@ export var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
120
120
  args[_key] = arguments[_key];
121
121
  }
122
122
  _this = _super.call.apply(_super, [this].concat(args));
123
+ /**
124
+ * Saved borders.
125
+ *
126
+ * @private
127
+ * @type {Array}
128
+ */
123
129
  _defineProperty(_assertThisInitialized(_this), "savedBorders", []);
124
130
  return _this;
125
131
  }
@@ -870,13 +876,6 @@ export var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
870
876
  get: function get() {
871
877
  return PLUGIN_PRIORITY;
872
878
  }
873
-
874
- /**
875
- * Saved borders.
876
- *
877
- * @private
878
- * @type {Array}
879
- */
880
879
  }]);
881
880
  return CustomBorders;
882
881
  }(BasePlugin);
@@ -329,6 +329,11 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
329
329
  * * `between` - Between
330
330
  * * `by_value` - By value
331
331
  * * `contains` - Contains
332
+ * * `date_after` - After a date
333
+ * * `date_before` - Before a date
334
+ * * `date_today` - Today
335
+ * * `date_tomorrow` - Tomorrow
336
+ * * `date_yesterday` - Yesterday
332
337
  * * `empty` - Empty
333
338
  * * `ends_with` - Ends with
334
339
  * * `eq` - Equal
@@ -319,6 +319,11 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
319
319
  * * `between` - Between
320
320
  * * `by_value` - By value
321
321
  * * `contains` - Contains
322
+ * * `date_after` - After a date
323
+ * * `date_before` - Before a date
324
+ * * `date_today` - Today
325
+ * * `date_tomorrow` - Tomorrow
326
+ * * `date_yesterday` - Yesterday
322
327
  * * `empty` - Empty
323
328
  * * `ends_with` - Ends with
324
329
  * * `eq` - Equal
@@ -3,6 +3,8 @@
3
3
  require("core-js/modules/es.symbol.js");
4
4
  require("core-js/modules/es.symbol.description.js");
5
5
  require("core-js/modules/es.symbol.iterator.js");
6
+ require("core-js/modules/es.array.slice.js");
7
+ require("core-js/modules/es.object.freeze.js");
6
8
  exports.__esModule = true;
7
9
  exports.getRegisteredHotInstances = getRegisteredHotInstances;
8
10
  exports.registerCustomFunctions = registerCustomFunctions;
@@ -27,10 +29,14 @@ require("core-js/modules/web.dom-collections.for-each.js");
27
29
  require("core-js/modules/es.function.name.js");
28
30
  var _staticRegister = _interopRequireDefault(require("../../../utils/staticRegister"));
29
31
  var _mixed = require("../../../helpers/mixed");
32
+ var _templateLiteralTag = require("../../../helpers/templateLiteralTag");
30
33
  var _console = require("../../../helpers/console");
34
+ var _object = require("../../../helpers/object");
31
35
  var _formulas = require("../formulas");
32
36
  var _settings = require("./settings");
37
+ var _templateObject;
33
38
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
34
40
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
35
41
  /**
36
42
  * Prepares and returns the collection for the engine relationship with the HoT instances.
@@ -99,6 +105,9 @@ function setupEngine(hotInstance) {
99
105
  licenseKey: _settings.DEFAULT_LICENSE_KEY
100
106
  });
101
107
  }
108
+ if (engineConfigItem.getConfig().leapYear1900 !== _settings.DEFAULT_SETTINGS.leapYear1900 || (0, _object.isObjectEqual)(engineConfigItem.getConfig().nullDate, _settings.DEFAULT_SETTINGS.nullDate) === false) {
109
+ (0, _console.warn)((0, _templateLiteralTag.toSingleLine)(_templateObject || (_templateObject = _taggedTemplateLiteral(["If you use HyperFormula with Handsontable, keep the default `leapYear1900` and `nullDate` \n settings. Otherwise, HyperFormula's dates may not sync correctly with Handsontable's dates."], ["If you use HyperFormula with Handsontable, keep the default \\`leapYear1900\\` and \\`nullDate\\` \n settings. Otherwise, HyperFormula's dates may not sync correctly with Handsontable's dates."]))));
110
+ }
102
111
  return engineConfigItem;
103
112
  }
104
113
  return null;
@@ -1,3 +1,10 @@
1
+ import "core-js/modules/es.symbol.js";
2
+ import "core-js/modules/es.symbol.description.js";
3
+ import "core-js/modules/es.symbol.iterator.js";
4
+ import "core-js/modules/es.array.slice.js";
5
+ import "core-js/modules/es.object.freeze.js";
6
+ var _templateObject;
7
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
1
8
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
9
  import "core-js/modules/es.array.iterator.js";
3
10
  import "core-js/modules/es.map.js";
@@ -12,14 +19,13 @@ import "core-js/modules/es.array.splice.js";
12
19
  import "core-js/modules/es.array.index-of.js";
13
20
  import "core-js/modules/web.dom-collections.for-each.js";
14
21
  import "core-js/modules/es.function.name.js";
15
- import "core-js/modules/es.symbol.js";
16
- import "core-js/modules/es.symbol.description.js";
17
- import "core-js/modules/es.symbol.iterator.js";
18
22
  import staticRegister from "../../../utils/staticRegister.mjs";
19
23
  import { isUndefined } from "../../../helpers/mixed.mjs";
24
+ import { toSingleLine } from "../../../helpers/templateLiteralTag.mjs";
20
25
  import { warn } from "../../../helpers/console.mjs";
26
+ import { isObjectEqual } from "../../../helpers/object.mjs";
21
27
  import { PLUGIN_KEY } from "../formulas.mjs";
22
- import { DEFAULT_LICENSE_KEY, getEngineSettingsWithDefaultsAndOverrides } from "./settings.mjs";
28
+ import { DEFAULT_LICENSE_KEY, DEFAULT_SETTINGS, getEngineSettingsWithDefaultsAndOverrides } from "./settings.mjs";
23
29
  /**
24
30
  * Prepares and returns the collection for the engine relationship with the HoT instances.
25
31
  *
@@ -87,6 +93,9 @@ export function setupEngine(hotInstance) {
87
93
  licenseKey: DEFAULT_LICENSE_KEY
88
94
  });
89
95
  }
96
+ if (engineConfigItem.getConfig().leapYear1900 !== DEFAULT_SETTINGS.leapYear1900 || isObjectEqual(engineConfigItem.getConfig().nullDate, DEFAULT_SETTINGS.nullDate) === false) {
97
+ warn(toSingleLine(_templateObject || (_templateObject = _taggedTemplateLiteral(["If you use HyperFormula with Handsontable, keep the default `leapYear1900` and `nullDate` \n settings. Otherwise, HyperFormula's dates may not sync correctly with Handsontable's dates."], ["If you use HyperFormula with Handsontable, keep the default \\`leapYear1900\\` and \\`nullDate\\` \n settings. Otherwise, HyperFormula's dates may not sync correctly with Handsontable's dates."]))));
98
+ }
90
99
  return engineConfigItem;
91
100
  }
92
101
  return null;
@@ -15,10 +15,11 @@ require("core-js/modules/es.string.iterator.js");
15
15
  require("core-js/modules/web.dom-collections.iterator.js");
16
16
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
17
17
  exports.__esModule = true;
18
- exports.DEFAULT_LICENSE_KEY = void 0;
18
+ exports.DEFAULT_SETTINGS = exports.DEFAULT_LICENSE_KEY = void 0;
19
19
  exports.getEngineSettingsOverrides = getEngineSettingsOverrides;
20
20
  exports.getEngineSettingsWithDefaultsAndOverrides = getEngineSettingsWithDefaultsAndOverrides;
21
21
  exports.getEngineSettingsWithOverrides = getEngineSettingsWithOverrides;
22
+ exports.haveEngineSettingsChanged = haveEngineSettingsChanged;
22
23
  require("core-js/modules/es.array.reduce.js");
23
24
  require("core-js/modules/es.object.to-string.js");
24
25
  require("core-js/modules/es.object.keys.js");
@@ -39,11 +40,11 @@ var DEFAULT_SETTINGS = {
39
40
  precisionEpsilon: 1e-13,
40
41
  precisionRounding: 14,
41
42
  smartRounding: true,
42
- leapYear1900: true,
43
+ leapYear1900: false,
43
44
  nullDate: {
44
45
  year: 1899,
45
46
  month: 12,
46
- day: 31
47
+ day: 30
47
48
  },
48
49
  nullYear: 30,
49
50
  dateFormats: ['DD/MM/YYYY', 'DD/MM/YY'],
@@ -63,6 +64,7 @@ var DEFAULT_SETTINGS = {
63
64
  * @param {object} hotSettings Handsontable settings object.
64
65
  * @returns {object} Object containing the overriding options.
65
66
  */
67
+ exports.DEFAULT_SETTINGS = DEFAULT_SETTINGS;
66
68
  function getEngineSettingsOverrides(hotSettings) {
67
69
  var _hotSettings$PLUGIN_K, _hotSettings$PLUGIN_K2;
68
70
  return {
@@ -123,4 +125,17 @@ function getEngineSettingsWithOverrides(hotSettings) {
123
125
  var userSettings = cleanEngineSettings(pluginSettings !== null && pluginSettings !== void 0 && (_pluginSettings$engin2 = pluginSettings.engine) !== null && _pluginSettings$engin2 !== void 0 && _pluginSettings$engin2.hyperformula ? pluginSettings.engine : {});
124
126
  var overrides = getEngineSettingsOverrides(hotSettings);
125
127
  return _objectSpread(_objectSpread({}, userSettings), overrides);
128
+ }
129
+
130
+ /**
131
+ * Check if the new settings are defined and are different from the ones currently used by the engine.
132
+ *
133
+ * @param {object} currentEngineSettings Currently used engine settings.
134
+ * @param {object} newEngineSettings New engine settings.
135
+ * @returns {boolean}
136
+ */
137
+ function haveEngineSettingsChanged(currentEngineSettings, newEngineSettings) {
138
+ return Object.keys(newEngineSettings).some(function (settingOption) {
139
+ return newEngineSettings[settingOption] !== void 0 && newEngineSettings[settingOption] !== currentEngineSettings[settingOption];
140
+ });
126
141
  }
@@ -22,7 +22,7 @@ import "core-js/modules/es.string.iterator.js";
22
22
  import "core-js/modules/web.dom-collections.iterator.js";
23
23
  import { PLUGIN_KEY } from "../formulas.mjs";
24
24
  export var DEFAULT_LICENSE_KEY = 'internal-use-in-handsontable';
25
- var DEFAULT_SETTINGS = {
25
+ export var DEFAULT_SETTINGS = {
26
26
  licenseKey: DEFAULT_LICENSE_KEY,
27
27
  useArrayArithmetic: true,
28
28
  useColumnIndex: false,
@@ -31,11 +31,11 @@ var DEFAULT_SETTINGS = {
31
31
  precisionEpsilon: 1e-13,
32
32
  precisionRounding: 14,
33
33
  smartRounding: true,
34
- leapYear1900: true,
34
+ leapYear1900: false,
35
35
  nullDate: {
36
36
  year: 1899,
37
37
  month: 12,
38
- day: 31
38
+ day: 30
39
39
  },
40
40
  nullYear: 30,
41
41
  dateFormats: ['DD/MM/YYYY', 'DD/MM/YY'],
@@ -115,4 +115,17 @@ export function getEngineSettingsWithOverrides(hotSettings) {
115
115
  var userSettings = cleanEngineSettings(pluginSettings !== null && pluginSettings !== void 0 && (_pluginSettings$engin2 = pluginSettings.engine) !== null && _pluginSettings$engin2 !== void 0 && _pluginSettings$engin2.hyperformula ? pluginSettings.engine : {});
116
116
  var overrides = getEngineSettingsOverrides(hotSettings);
117
117
  return _objectSpread(_objectSpread({}, userSettings), overrides);
118
+ }
119
+
120
+ /**
121
+ * Check if the new settings are defined and are different from the ones currently used by the engine.
122
+ *
123
+ * @param {object} currentEngineSettings Currently used engine settings.
124
+ * @param {object} newEngineSettings New engine settings.
125
+ * @returns {boolean}
126
+ */
127
+ export function haveEngineSettingsChanged(currentEngineSettings, newEngineSettings) {
128
+ return Object.keys(newEngineSettings).some(function (settingOption) {
129
+ return newEngineSettings[settingOption] !== void 0 && newEngineSettings[settingOption] !== currentEngineSettings[settingOption];
130
+ });
118
131
  }