@handsontable/vue3 17.0.1 → 17.1.0-rc1

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.
@@ -63,30 +63,34 @@ function _typeof(o) {
63
63
  }
64
64
 
65
65
  var unassignedPropSymbol = Symbol('unassigned');
66
- /**
67
- * Message for the warning thrown if the Handsontable instance has been destroyed.
66
+
67
+ /**
68
+ * Message for the warning thrown if the Handsontable instance has been destroyed.
68
69
  */
69
70
  var HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' + ' used properly.';
70
- /**
71
- * Check if at specified `key` there is any value for `object`.
72
- *
73
- * @param {object} object Object to search value at specyfic key.
74
- * @param {string} key String key to check.
75
- * @returns {boolean}
71
+
72
+ /**
73
+ * Check if at specified `key` there is any value for `object`.
74
+ *
75
+ * @param {object} object Object to search value at specyfic key.
76
+ * @param {string} key String key to check.
77
+ * @returns {boolean}
76
78
  */
77
79
  function hasOwnProperty(object, key) {
78
80
  return Object.prototype.hasOwnProperty.call(object, key);
79
81
  }
80
- /**
81
- * Generate an object containing all the available Handsontable properties and plugin hooks.
82
- *
83
- * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
84
- * @returns {object}
82
+
83
+ /**
84
+ * Generate an object containing all the available Handsontable properties and plugin hooks.
85
+ *
86
+ * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
87
+ * @returns {object}
85
88
  */
86
89
  function propFactory(source) {
87
90
  var registeredHooks = Handsontable__default["default"].hooks.getRegistered();
88
91
  var propSchema = {};
89
92
  Object.assign(propSchema, Handsontable__default["default"].DefaultSettings);
93
+
90
94
  // eslint-disable-next-line no-restricted-syntax, guard-for-in
91
95
  for (var prop in propSchema) {
92
96
  propSchema[prop] = {
@@ -109,11 +113,12 @@ function propFactory(source) {
109
113
  }
110
114
  return propSchema;
111
115
  }
112
- /**
113
- * Filter out all of the unassigned props, and return only the one passed to the component.
114
- *
115
- * @param {object} props Object containing all the possible props.
116
- * @returns {object} Object containing only used props.
116
+
117
+ /**
118
+ * Filter out all of the unassigned props, and return only the one passed to the component.
119
+ *
120
+ * @param {object} props Object containing all the possible props.
121
+ * @returns {object} Object containing only used props.
117
122
  */
118
123
  function filterPassedProps(props) {
119
124
  var filteredProps = {};
@@ -126,6 +131,7 @@ function filterPassedProps(props) {
126
131
  }
127
132
  }
128
133
  }
134
+
129
135
  // eslint-disable-next-line no-restricted-syntax
130
136
  for (var _propName in props) {
131
137
  if (hasOwnProperty(props, _propName) && _propName !== 'settings' && props[_propName] !== unassignedPropSymbol) {
@@ -134,40 +140,45 @@ function filterPassedProps(props) {
134
140
  }
135
141
  return filteredProps;
136
142
  }
137
- /**
138
- * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
139
- *
140
- * @param {HotTableProps} props The props passed to the component.
141
- * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
142
- * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
143
+
144
+ /**
145
+ * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
146
+ *
147
+ * @param {HotTableProps} props The props passed to the component.
148
+ * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
149
+ * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
143
150
  */
144
151
  function prepareSettings(props, currentSettings) {
145
152
  var assignedProps = filterPassedProps(props);
146
153
  var hotSettingsInProps = props.settings ? props.settings : assignedProps;
147
154
  var additionalHotSettingsInProps = props.settings ? assignedProps : null;
155
+ var initOnlySettingKeys = (currentSettings === null || currentSettings === void 0 ? void 0 : currentSettings._initOnlySettings) || [];
148
156
  var newSettings = {};
157
+
149
158
  // eslint-disable-next-line no-restricted-syntax
150
159
  for (var key in hotSettingsInProps) {
151
- if (hasOwnProperty(hotSettingsInProps, key) && hotSettingsInProps[key] !== void 0 && (currentSettings && key !== 'data' ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)) {
160
+ if (hasOwnProperty(hotSettingsInProps, key) && hotSettingsInProps[key] !== void 0 && !initOnlySettingKeys.includes(key) && (currentSettings && key !== 'data' ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)) {
152
161
  newSettings[key] = hotSettingsInProps[key];
153
162
  }
154
163
  }
164
+
155
165
  // eslint-disable-next-line no-restricted-syntax
156
166
  for (var _key in additionalHotSettingsInProps) {
157
- if (hasOwnProperty(additionalHotSettingsInProps, _key) && _key !== 'id' && _key !== 'settings' && additionalHotSettingsInProps[_key] !== void 0 && (currentSettings && _key !== 'data' ? !simpleEqual(currentSettings[_key], additionalHotSettingsInProps[_key]) : true)) {
167
+ if (hasOwnProperty(additionalHotSettingsInProps, _key) && _key !== 'id' && _key !== 'settings' && additionalHotSettingsInProps[_key] !== void 0 && !initOnlySettingKeys.includes(_key) && (currentSettings && _key !== 'data' ? !simpleEqual(currentSettings[_key], additionalHotSettingsInProps[_key]) : true)) {
158
168
  newSettings[_key] = additionalHotSettingsInProps[_key];
159
169
  }
160
170
  }
161
171
  return newSettings;
162
172
  }
163
- /**
164
- * Compare two objects using `JSON.stringify`.
165
- * *Note: * As it's using the stringify function to compare objects, the property order in both objects is
166
- * important. It will return `false` for the same objects, if they're defined in a different order.
167
- *
168
- * @param {object} objectA First object to compare.
169
- * @param {object} objectB Second object to compare.
170
- * @returns {boolean} `true` if they're the same, `false` otherwise.
173
+
174
+ /**
175
+ * Compare two objects using `JSON.stringify`.
176
+ * *Note: * As it's using the stringify function to compare objects, the property order in both objects is
177
+ * important. It will return `false` for the same objects, if they're defined in a different order.
178
+ *
179
+ * @param {object} objectA First object to compare.
180
+ * @param {object} objectB Second object to compare.
181
+ * @returns {boolean} `true` if they're the same, `false` otherwise.
171
182
  */
172
183
  function simpleEqual(objectA, objectB) {
173
184
  var stringifyToJSON = function stringifyToJSON(val) {
@@ -194,7 +205,7 @@ function simpleEqual(objectA, objectB) {
194
205
  }
195
206
  }
196
207
 
197
- var version="17.0.1";
208
+ var version="17.1.0-rc1";
198
209
 
199
210
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
200
211
  // @ts-ignore
@@ -217,10 +228,12 @@ var HotTable = vue.defineComponent({
217
228
  if (this.hotInstance.isColumnModificationAllowed() || !this.hotInstance.isColumnModificationAllowed() && this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns) {
218
229
  // If the dataset dimensions change, update the index mappers.
219
230
  this.matchHotMappersSize();
231
+
220
232
  // Data is automatically synchronized by reference.
221
233
  delete settings.data;
222
234
  }
223
235
  }
236
+
224
237
  // If there are another options changed, update the HOT settings, render the table otherwise.
225
238
  if (Object.keys(settings).length) {
226
239
  this.hotInstance.updateSettings(settings);
@@ -259,8 +272,8 @@ var HotTable = vue.defineComponent({
259
272
  };
260
273
  },
261
274
  methods: {
262
- /**
263
- * Initialize Handsontable.
275
+ /**
276
+ * Initialize Handsontable.
264
277
  */
265
278
  hotInit: function hotInit() {
266
279
  var newSettings = prepareSettings(this.$props);
@@ -313,10 +326,10 @@ var HotTable = vue.defineComponent({
313
326
  }
314
327
  });
315
328
  },
316
- /**
317
- * Get settings for the columns provided in the `hot-column` components.
318
- *
319
- * @returns {HotTableProps[] | undefined}
329
+ /**
330
+ * Get settings for the columns provided in the `hot-column` components.
331
+ *
332
+ * @returns {HotTableProps[] | undefined}
320
333
  */
321
334
  getColumnSettings: function getColumnSettings() {
322
335
  var columnSettings = Array.from(this.columnsCache.values());
@@ -350,9 +363,9 @@ var HotColumn = vue.defineComponent({
350
363
  props: propFactory('HotColumn'),
351
364
  inject: ['columnsCache'],
352
365
  methods: {
353
- /**
354
- * Create the column settings based on the data provided to the `hot-column`
355
- * component and it's child components.
366
+ /**
367
+ * Create the column settings based on the data provided to the `hot-column`
368
+ * component and it's child components.
356
369
  */
357
370
  createColumnSettings: function createColumnSettings() {
358
371
  var assignedProps = filterPassedProps(this.$props);
@@ -25,7 +25,7 @@
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: 17.0.1 (built at Wed Mar 25 2026 09:29:29 GMT+0000 (Coordinated Universal Time))
28
+ * Version: 17.1.0-rc1 (built at Wed Apr 22 2026 11:56:30 GMT+0000 (Coordinated Universal Time))
29
29
  */
30
30
  (function (global, factory) {
31
31
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('handsontable/base')) :
@@ -91,30 +91,34 @@ function _typeof(o) {
91
91
  }
92
92
 
93
93
  var unassignedPropSymbol = Symbol('unassigned');
94
- /**
95
- * Message for the warning thrown if the Handsontable instance has been destroyed.
94
+
95
+ /**
96
+ * Message for the warning thrown if the Handsontable instance has been destroyed.
96
97
  */
97
98
  var HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' + ' used properly.';
98
- /**
99
- * Check if at specified `key` there is any value for `object`.
100
- *
101
- * @param {object} object Object to search value at specyfic key.
102
- * @param {string} key String key to check.
103
- * @returns {boolean}
99
+
100
+ /**
101
+ * Check if at specified `key` there is any value for `object`.
102
+ *
103
+ * @param {object} object Object to search value at specyfic key.
104
+ * @param {string} key String key to check.
105
+ * @returns {boolean}
104
106
  */
105
107
  function hasOwnProperty(object, key) {
106
108
  return Object.prototype.hasOwnProperty.call(object, key);
107
109
  }
108
- /**
109
- * Generate an object containing all the available Handsontable properties and plugin hooks.
110
- *
111
- * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
112
- * @returns {object}
110
+
111
+ /**
112
+ * Generate an object containing all the available Handsontable properties and plugin hooks.
113
+ *
114
+ * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
115
+ * @returns {object}
113
116
  */
114
117
  function propFactory(source) {
115
118
  var registeredHooks = Handsontable__default["default"].hooks.getRegistered();
116
119
  var propSchema = {};
117
120
  Object.assign(propSchema, Handsontable__default["default"].DefaultSettings);
121
+
118
122
  // eslint-disable-next-line no-restricted-syntax, guard-for-in
119
123
  for (var prop in propSchema) {
120
124
  propSchema[prop] = {
@@ -137,11 +141,12 @@ function propFactory(source) {
137
141
  }
138
142
  return propSchema;
139
143
  }
140
- /**
141
- * Filter out all of the unassigned props, and return only the one passed to the component.
142
- *
143
- * @param {object} props Object containing all the possible props.
144
- * @returns {object} Object containing only used props.
144
+
145
+ /**
146
+ * Filter out all of the unassigned props, and return only the one passed to the component.
147
+ *
148
+ * @param {object} props Object containing all the possible props.
149
+ * @returns {object} Object containing only used props.
145
150
  */
146
151
  function filterPassedProps(props) {
147
152
  var filteredProps = {};
@@ -154,6 +159,7 @@ function filterPassedProps(props) {
154
159
  }
155
160
  }
156
161
  }
162
+
157
163
  // eslint-disable-next-line no-restricted-syntax
158
164
  for (var _propName in props) {
159
165
  if (hasOwnProperty(props, _propName) && _propName !== 'settings' && props[_propName] !== unassignedPropSymbol) {
@@ -162,40 +168,45 @@ function filterPassedProps(props) {
162
168
  }
163
169
  return filteredProps;
164
170
  }
165
- /**
166
- * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
167
- *
168
- * @param {HotTableProps} props The props passed to the component.
169
- * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
170
- * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
171
+
172
+ /**
173
+ * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
174
+ *
175
+ * @param {HotTableProps} props The props passed to the component.
176
+ * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
177
+ * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
171
178
  */
172
179
  function prepareSettings(props, currentSettings) {
173
180
  var assignedProps = filterPassedProps(props);
174
181
  var hotSettingsInProps = props.settings ? props.settings : assignedProps;
175
182
  var additionalHotSettingsInProps = props.settings ? assignedProps : null;
183
+ var initOnlySettingKeys = (currentSettings === null || currentSettings === void 0 ? void 0 : currentSettings._initOnlySettings) || [];
176
184
  var newSettings = {};
185
+
177
186
  // eslint-disable-next-line no-restricted-syntax
178
187
  for (var key in hotSettingsInProps) {
179
- if (hasOwnProperty(hotSettingsInProps, key) && hotSettingsInProps[key] !== void 0 && (currentSettings && key !== 'data' ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)) {
188
+ if (hasOwnProperty(hotSettingsInProps, key) && hotSettingsInProps[key] !== void 0 && !initOnlySettingKeys.includes(key) && (currentSettings && key !== 'data' ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)) {
180
189
  newSettings[key] = hotSettingsInProps[key];
181
190
  }
182
191
  }
192
+
183
193
  // eslint-disable-next-line no-restricted-syntax
184
194
  for (var _key in additionalHotSettingsInProps) {
185
- if (hasOwnProperty(additionalHotSettingsInProps, _key) && _key !== 'id' && _key !== 'settings' && additionalHotSettingsInProps[_key] !== void 0 && (currentSettings && _key !== 'data' ? !simpleEqual(currentSettings[_key], additionalHotSettingsInProps[_key]) : true)) {
195
+ if (hasOwnProperty(additionalHotSettingsInProps, _key) && _key !== 'id' && _key !== 'settings' && additionalHotSettingsInProps[_key] !== void 0 && !initOnlySettingKeys.includes(_key) && (currentSettings && _key !== 'data' ? !simpleEqual(currentSettings[_key], additionalHotSettingsInProps[_key]) : true)) {
186
196
  newSettings[_key] = additionalHotSettingsInProps[_key];
187
197
  }
188
198
  }
189
199
  return newSettings;
190
200
  }
191
- /**
192
- * Compare two objects using `JSON.stringify`.
193
- * *Note: * As it's using the stringify function to compare objects, the property order in both objects is
194
- * important. It will return `false` for the same objects, if they're defined in a different order.
195
- *
196
- * @param {object} objectA First object to compare.
197
- * @param {object} objectB Second object to compare.
198
- * @returns {boolean} `true` if they're the same, `false` otherwise.
201
+
202
+ /**
203
+ * Compare two objects using `JSON.stringify`.
204
+ * *Note: * As it's using the stringify function to compare objects, the property order in both objects is
205
+ * important. It will return `false` for the same objects, if they're defined in a different order.
206
+ *
207
+ * @param {object} objectA First object to compare.
208
+ * @param {object} objectB Second object to compare.
209
+ * @returns {boolean} `true` if they're the same, `false` otherwise.
199
210
  */
200
211
  function simpleEqual(objectA, objectB) {
201
212
  var stringifyToJSON = function stringifyToJSON(val) {
@@ -222,7 +233,7 @@ function simpleEqual(objectA, objectB) {
222
233
  }
223
234
  }
224
235
 
225
- var version="17.0.1";
236
+ var version="17.1.0-rc1";
226
237
 
227
238
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
228
239
  // @ts-ignore
@@ -245,10 +256,12 @@ var HotTable = vue.defineComponent({
245
256
  if (this.hotInstance.isColumnModificationAllowed() || !this.hotInstance.isColumnModificationAllowed() && this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns) {
246
257
  // If the dataset dimensions change, update the index mappers.
247
258
  this.matchHotMappersSize();
259
+
248
260
  // Data is automatically synchronized by reference.
249
261
  delete settings.data;
250
262
  }
251
263
  }
264
+
252
265
  // If there are another options changed, update the HOT settings, render the table otherwise.
253
266
  if (Object.keys(settings).length) {
254
267
  this.hotInstance.updateSettings(settings);
@@ -287,8 +300,8 @@ var HotTable = vue.defineComponent({
287
300
  };
288
301
  },
289
302
  methods: {
290
- /**
291
- * Initialize Handsontable.
303
+ /**
304
+ * Initialize Handsontable.
292
305
  */
293
306
  hotInit: function hotInit() {
294
307
  var newSettings = prepareSettings(this.$props);
@@ -341,10 +354,10 @@ var HotTable = vue.defineComponent({
341
354
  }
342
355
  });
343
356
  },
344
- /**
345
- * Get settings for the columns provided in the `hot-column` components.
346
- *
347
- * @returns {HotTableProps[] | undefined}
357
+ /**
358
+ * Get settings for the columns provided in the `hot-column` components.
359
+ *
360
+ * @returns {HotTableProps[] | undefined}
348
361
  */
349
362
  getColumnSettings: function getColumnSettings() {
350
363
  var columnSettings = Array.from(this.columnsCache.values());
@@ -378,9 +391,9 @@ var HotColumn = vue.defineComponent({
378
391
  props: propFactory('HotColumn'),
379
392
  inject: ['columnsCache'],
380
393
  methods: {
381
- /**
382
- * Create the column settings based on the data provided to the `hot-column`
383
- * component and it's child components.
394
+ /**
395
+ * Create the column settings based on the data provided to the `hot-column`
396
+ * component and it's child components.
384
397
  */
385
398
  createColumnSettings: function createColumnSettings() {
386
399
  var assignedProps = filterPassedProps(this.$props);
@@ -1 +1 @@
1
- {"version":3,"file":"vue-handsontable.js","sources":["../src/helpers.ts","../src/HotTable.vue","../src/HotTable.vue?vue&type=template&id=54bcc3fa&lang.js","../src/HotColumn.vue"],"sourcesContent":["import Handsontable from 'handsontable/base';\nimport { HotTableProps, VueProps } from './types';\n\nconst unassignedPropSymbol = Symbol('unassigned');\n\n/**\n * Message for the warning thrown if the Handsontable instance has been destroyed.\n */\nexport const HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' +\n ' used properly.';\n\n/**\n * Check if at specified `key` there is any value for `object`.\n *\n * @param {object} object Object to search value at specyfic key.\n * @param {string} key String key to check.\n * @returns {boolean}\n */\nexport function hasOwnProperty(object: unknown, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Generate an object containing all the available Handsontable properties and plugin hooks.\n *\n * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').\n * @returns {object}\n */\nexport function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps> {\n const registeredHooks = Handsontable.hooks.getRegistered();\n const propSchema: VueProps<HotTableProps> = {};\n\n Object.assign(propSchema, Handsontable.DefaultSettings);\n\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const prop in propSchema) {\n propSchema[prop] = {\n default: unassignedPropSymbol\n };\n }\n\n for (let i = 0; i < registeredHooks.length; i++) {\n propSchema[registeredHooks[i]] = {\n default: unassignedPropSymbol\n };\n }\n\n propSchema.settings = {\n default: unassignedPropSymbol\n };\n\n if (source === 'HotTable') {\n propSchema.id = {\n type: String,\n default: `hot-${Math.random().toString(36).substring(5)}`\n };\n }\n\n return propSchema;\n}\n\n/**\n * Filter out all of the unassigned props, and return only the one passed to the component.\n *\n * @param {object} props Object containing all the possible props.\n * @returns {object} Object containing only used props.\n */\nexport function filterPassedProps(props) {\n const filteredProps: VueProps<HotTableProps> = {};\n const columnSettingsProp = props.settings;\n\n if (columnSettingsProp !== unassignedPropSymbol) {\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in columnSettingsProp) {\n if (hasOwnProperty(columnSettingsProp, propName) && columnSettingsProp[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = columnSettingsProp[propName];\n }\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in props) {\n if (hasOwnProperty(props, propName) && propName !== 'settings' && props[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = props[propName];\n }\n }\n\n return filteredProps;\n}\n\n/**\n * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.\n *\n * @param {HotTableProps} props The props passed to the component.\n * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.\n * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.\n */\nexport function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps {\n const assignedProps: VueProps<HotTableProps> = filterPassedProps(props);\n const hotSettingsInProps: Handsontable.GridSettings = props.settings ? props.settings : assignedProps;\n const additionalHotSettingsInProps: Handsontable.GridSettings = props.settings ? assignedProps : null;\n const newSettings: Handsontable.GridSettings = {};\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in hotSettingsInProps) {\n if (\n hasOwnProperty(hotSettingsInProps, key) &&\n hotSettingsInProps[key] !== void 0 &&\n ((currentSettings && key !== 'data') ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = hotSettingsInProps[key];\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in additionalHotSettingsInProps) {\n if (\n hasOwnProperty(additionalHotSettingsInProps, key) &&\n key !== 'id' &&\n key !== 'settings' &&\n additionalHotSettingsInProps[key] !== void 0 &&\n ((currentSettings && key !== 'data')\n ? !simpleEqual(currentSettings[key], additionalHotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = additionalHotSettingsInProps[key];\n }\n }\n\n return newSettings;\n}\n\n/**\n * Compare two objects using `JSON.stringify`.\n * *Note: * As it's using the stringify function to compare objects, the property order in both objects is\n * important. It will return `false` for the same objects, if they're defined in a different order.\n *\n * @param {object} objectA First object to compare.\n * @param {object} objectB Second object to compare.\n * @returns {boolean} `true` if they're the same, `false` otherwise.\n */\nfunction simpleEqual(objectA, objectB) {\n const stringifyToJSON = (val) => {\n const circularReplacer = (function() {\n const seen = new WeakSet();\n\n return function(key, value) {\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return;\n }\n\n seen.add(value);\n }\n\n return value;\n };\n }());\n\n return JSON.stringify(val, circularReplacer);\n };\n\n if (typeof objectA === 'function' && typeof objectB === 'function') {\n return objectA.toString() === objectB.toString();\n\n } else if (typeof objectA !== typeof objectB) {\n return false;\n\n } else {\n return stringifyToJSON(objectA) === stringifyToJSON(objectB);\n }\n}\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport {\n propFactory,\n filterPassedProps\n} from './helpers';\n\nconst HotColumn = defineComponent({\n name: 'HotColumn',\n props: propFactory('HotColumn'),\n inject: ['columnsCache'],\n methods: {\n /**\n * Create the column settings based on the data provided to the `hot-column`\n * component and it's child components.\n */\n createColumnSettings(): void {\n const assignedProps = filterPassedProps(this.$props);\n const columnSettings = { ...assignedProps };\n\n if (assignedProps.renderer) {\n columnSettings.renderer = assignedProps.renderer;\n }\n\n if (assignedProps.editor) {\n columnSettings.editor = assignedProps.editor;\n }\n\n this.columnsCache.set(this, columnSettings);\n }\n },\n mounted() {\n this.createColumnSettings();\n },\n unmounted() {\n this.columnsCache.delete(this);\n },\n render() {\n return null;\n }\n});\n\nexport default HotColumn;\nexport { HotColumn };\n</script>\n"],"names":["unassignedPropSymbol","Symbol","HOT_DESTROYED_WARNING","hasOwnProperty","object","key","Object","prototype","call","propFactory","source","registeredHooks","Handsontable","hooks","getRegistered","propSchema","assign","DefaultSettings","prop","i","length","settings","id","type","String","concat","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","newSettings","simpleEqual","objectA","objectB","stringifyToJSON","val","circularReplacer","seen","WeakSet","value","_typeof","has","add","JSON","stringify","HotTable","defineComponent","name","provide","columnsCache","watch","$props","handler","hotInstance","getSettings","data","isColumnModificationAllowed","countSourceCols","miscCache","currentSourceColumns","matchHotMappersSize","keys","updateSettings","render","deep","immediate","__hotInstance","columnSettings","Map","isDestroyed","console","warn","methods","hotInit","columns","markRaw","Core","$el","init","_this","getSourceData","rowsToRemove","columnsToRemove","indexMapperRowCount","rowIndexMapper","getNumberOfIndexes","indexMapperColumnCount","r","push","_data$","columnIndexMapper","c","batch","removeIndexes","insertIndexes","getColumnSettings","Array","from","values","mounted","beforeUnmount","destroy","version","packageJson","_createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","_objectSpread","renderer","editor","set","unmounted"],"mappings":"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"}
1
+ {"version":3,"file":"vue-handsontable.js","sources":["../src/helpers.ts","../src/HotTable.vue","../src/HotTable.vue?vue&type=template&id=54bcc3fa&lang.js","../src/HotColumn.vue"],"sourcesContent":["import Handsontable from 'handsontable/base';\nimport { HotTableProps, VueProps } from './types';\n\nconst unassignedPropSymbol = Symbol('unassigned');\n\n/**\n * Message for the warning thrown if the Handsontable instance has been destroyed.\n */\nexport const HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' +\n ' used properly.';\n\n/**\n * Check if at specified `key` there is any value for `object`.\n *\n * @param {object} object Object to search value at specyfic key.\n * @param {string} key String key to check.\n * @returns {boolean}\n */\nexport function hasOwnProperty(object: unknown, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Generate an object containing all the available Handsontable properties and plugin hooks.\n *\n * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').\n * @returns {object}\n */\nexport function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps> {\n const registeredHooks = Handsontable.hooks.getRegistered();\n const propSchema: VueProps<HotTableProps> = {};\n\n Object.assign(propSchema, Handsontable.DefaultSettings);\n\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const prop in propSchema) {\n propSchema[prop] = {\n default: unassignedPropSymbol\n };\n }\n\n for (let i = 0; i < registeredHooks.length; i++) {\n propSchema[registeredHooks[i]] = {\n default: unassignedPropSymbol\n };\n }\n\n propSchema.settings = {\n default: unassignedPropSymbol\n };\n\n if (source === 'HotTable') {\n propSchema.id = {\n type: String,\n default: `hot-${Math.random().toString(36).substring(5)}`\n };\n }\n\n return propSchema;\n}\n\n/**\n * Filter out all of the unassigned props, and return only the one passed to the component.\n *\n * @param {object} props Object containing all the possible props.\n * @returns {object} Object containing only used props.\n */\nexport function filterPassedProps(props) {\n const filteredProps: VueProps<HotTableProps> = {};\n const columnSettingsProp = props.settings;\n\n if (columnSettingsProp !== unassignedPropSymbol) {\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in columnSettingsProp) {\n if (hasOwnProperty(columnSettingsProp, propName) && columnSettingsProp[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = columnSettingsProp[propName];\n }\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in props) {\n if (hasOwnProperty(props, propName) && propName !== 'settings' && props[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = props[propName];\n }\n }\n\n return filteredProps;\n}\n\n/**\n * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.\n *\n * @param {HotTableProps} props The props passed to the component.\n * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.\n * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.\n */\nexport function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps {\n const assignedProps: VueProps<HotTableProps> = filterPassedProps(props);\n const hotSettingsInProps: Handsontable.GridSettings = props.settings ? props.settings : assignedProps;\n const additionalHotSettingsInProps: Handsontable.GridSettings = props.settings ? assignedProps : null;\n const initOnlySettingKeys: string[] =\n (currentSettings as any)?._initOnlySettings || [];\n const newSettings: Handsontable.GridSettings = {};\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in hotSettingsInProps) {\n if (\n hasOwnProperty(hotSettingsInProps, key) &&\n hotSettingsInProps[key] !== void 0 &&\n !initOnlySettingKeys.includes(key) &&\n ((currentSettings && key !== 'data') ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = hotSettingsInProps[key];\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in additionalHotSettingsInProps) {\n if (\n hasOwnProperty(additionalHotSettingsInProps, key) &&\n key !== 'id' &&\n key !== 'settings' &&\n additionalHotSettingsInProps[key] !== void 0 &&\n !initOnlySettingKeys.includes(key) &&\n ((currentSettings && key !== 'data')\n ? !simpleEqual(currentSettings[key], additionalHotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = additionalHotSettingsInProps[key];\n }\n }\n\n return newSettings;\n}\n\n/**\n * Compare two objects using `JSON.stringify`.\n * *Note: * As it's using the stringify function to compare objects, the property order in both objects is\n * important. It will return `false` for the same objects, if they're defined in a different order.\n *\n * @param {object} objectA First object to compare.\n * @param {object} objectB Second object to compare.\n * @returns {boolean} `true` if they're the same, `false` otherwise.\n */\nfunction simpleEqual(objectA, objectB) {\n const stringifyToJSON = (val) => {\n const circularReplacer = (function() {\n const seen = new WeakSet();\n\n return function(key, value) {\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return;\n }\n\n seen.add(value);\n }\n\n return value;\n };\n }());\n\n return JSON.stringify(val, circularReplacer);\n };\n\n if (typeof objectA === 'function' && typeof objectB === 'function') {\n return objectA.toString() === objectB.toString();\n\n } else if (typeof objectA !== typeof objectB) {\n return false;\n\n } else {\n return stringifyToJSON(objectA) === stringifyToJSON(objectB);\n }\n}\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport {\n propFactory,\n filterPassedProps\n} from './helpers';\n\nconst HotColumn = defineComponent({\n name: 'HotColumn',\n props: propFactory('HotColumn'),\n inject: ['columnsCache'],\n methods: {\n /**\n * Create the column settings based on the data provided to the `hot-column`\n * component and it's child components.\n */\n createColumnSettings(): void {\n const assignedProps = filterPassedProps(this.$props);\n const columnSettings = { ...assignedProps };\n\n if (assignedProps.renderer) {\n columnSettings.renderer = assignedProps.renderer;\n }\n\n if (assignedProps.editor) {\n columnSettings.editor = assignedProps.editor;\n }\n\n this.columnsCache.set(this, columnSettings);\n }\n },\n mounted() {\n this.createColumnSettings();\n },\n unmounted() {\n this.columnsCache.delete(this);\n },\n render() {\n return null;\n }\n});\n\nexport default HotColumn;\nexport { HotColumn };\n</script>\n"],"names":["unassignedPropSymbol","Symbol","HOT_DESTROYED_WARNING","hasOwnProperty","object","key","Object","prototype","call","propFactory","source","registeredHooks","Handsontable","hooks","getRegistered","propSchema","assign","DefaultSettings","prop","i","length","settings","id","type","String","concat","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","initOnlySettingKeys","_initOnlySettings","newSettings","includes","simpleEqual","objectA","objectB","stringifyToJSON","val","circularReplacer","seen","WeakSet","value","_typeof","has","add","JSON","stringify","HotTable","defineComponent","name","provide","columnsCache","watch","$props","handler","hotInstance","getSettings","data","isColumnModificationAllowed","countSourceCols","miscCache","currentSourceColumns","matchHotMappersSize","keys","updateSettings","render","deep","immediate","__hotInstance","columnSettings","Map","isDestroyed","console","warn","methods","hotInit","columns","markRaw","Core","$el","init","_this","getSourceData","rowsToRemove","columnsToRemove","indexMapperRowCount","rowIndexMapper","getNumberOfIndexes","indexMapperColumnCount","r","push","_data$","columnIndexMapper","c","batch","removeIndexes","insertIndexes","getColumnSettings","Array","from","values","mounted","beforeUnmount","destroy","version","packageJson","_createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","_objectSpread","renderer","editor","set","unmounted"],"mappings":"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"}
@@ -25,7 +25,7 @@
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: 17.0.1 (built at Wed Mar 25 2026 09:29:33 GMT+0000 (Coordinated Universal Time))
28
+ * Version: 17.1.0-rc1 (built at Wed Apr 22 2026 11:56:33 GMT+0000 (Coordinated Universal Time))
29
29
  */
30
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue"),require("handsontable/base")):"function"==typeof define&&define.amd?define(["exports","vue","handsontable/base"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).Handsontable=t.Handsontable||{},t.Handsontable.vue={}),t.Vue,t.Handsontable)}(this,function(t,e,n){"use strict";function o(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=o(n);function i(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var c=Symbol("unassigned");function u(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function l(t){var e=r.default.hooks.getRegistered(),n={};for(var o in Object.assign(n,r.default.DefaultSettings),n)n[o]={default:c};for(var i=0;e.length>i;i++)n[e[i]]={default:c};return n.settings={default:c},"HotTable"===t&&(n.id={type:String,default:"hot-".concat(Math.random().toString(36).substring(5))}),n}function h(t){var e={},n=t.settings;if(n!==c)for(var o in n)u(n,o)&&n[o]!==c&&(e[o]=n[o]);for(var r in t)u(t,r)&&"settings"!==r&&t[r]!==c&&(e[r]=t[r]);return e}function f(t,e){var n=h(t),o=t.settings?t.settings:n,r=t.settings?n:null,i={};for(var s in o)!u(o,s)||void 0===o[s]||e&&"data"!==s&&d(e[s],o[s])||(i[s]=o[s]);for(var a in r)!u(r,a)||"id"===a||"settings"===a||void 0===r[a]||e&&"data"!==a&&d(e[a],r[a])||(i[a]=r[a]);return i}function d(t,e){var n=function(t){var e,n=(e=new WeakSet,function(t,n){if("object"===a(n)&&null!==n){if(e.has(n))return;e.add(n)}return n});return JSON.stringify(t,n)};return"function"==typeof t&&"function"==typeof e?""+t==""+e:a(t)===a(e)&&n(t)===n(e)}var p=e.defineComponent({name:"HotTable",props:l("HotTable"),provide:function(){return{columnsCache:this.columnsCache}},watch:{$props:{handler:function(t){var e=f(t,this.hotInstance?this.hotInstance.getSettings():void 0);this.hotInstance&&void 0!==e&&(e.data&&(this.hotInstance.isColumnModificationAllowed()||!this.hotInstance.isColumnModificationAllowed()&&this.hotInstance.countSourceCols()===this.miscCache.currentSourceColumns)&&(this.matchHotMappersSize(),delete e.data),Object.keys(e).length?this.hotInstance.updateSettings(e):this.hotInstance.render(),this.miscCache.currentSourceColumns=this.hotInstance.countSourceCols())},deep:!0,immediate:!0}},data:function(){return{__hotInstance:null,miscCache:{currentSourceColumns:null},columnSettings:null,columnsCache:new Map,get hotInstance(){return!this.__hotInstance||this.__hotInstance&&!this.__hotInstance.isDestroyed?this.__hotInstance:(console.warn("The Handsontable instance bound to this component was destroyed and cannot be used properly."),null)},set hotInstance(t){this.__hotInstance=t}}},methods:{hotInit:function(){var t=f(this.$props);t.columns=this.columnSettings?this.columnSettings:t.columns,this.hotInstance=e.markRaw(new r.default.Core(this.$el,t)),this.hotInstance.init(),this.miscCache.currentSourceColumns=this.hotInstance.countSourceCols()},matchHotMappersSize:function(){var t=this;if(this.hotInstance){var e,n=this.hotInstance.getSourceData(),o=[],r=[],i=this.hotInstance.rowIndexMapper.getNumberOfIndexes(),s=this.hotInstance.isColumnModificationAllowed(),a=0;if(n&&n.length!==i&&i>n.length)for(var c=n.length;i>c;c++)o.push(c);if(s)if(a=this.hotInstance.columnIndexMapper.getNumberOfIndexes(),n&&n[0]&&(null===(e=n[0])||void 0===e?void 0:e.length)!==a&&a>n[0].length)for(var u=n[0].length;a>u;u++)r.push(u);this.hotInstance.batch(function(){o.length>0?t.hotInstance.rowIndexMapper.removeIndexes(o):t.hotInstance.rowIndexMapper.insertIndexes(i-1,n.length-i),s&&0!==n.length&&(r.length>0?t.hotInstance.columnIndexMapper.removeIndexes(r):t.hotInstance.columnIndexMapper.insertIndexes(a-1,n[0].length-a))})}},getColumnSettings:function(){var t=Array.from(this.columnsCache.values());return t.length?t:void 0}},mounted:function(){this.columnSettings=this.getColumnSettings(),this.hotInit()},beforeUnmount:function(){this.hotInstance&&this.hotInstance.destroy()},version:"17.0.1"}),m=["id"];p.render=function(t,n,o,r,i,s){return e.openBlock(),e.createElementBlock("div",{id:t.id},[e.renderSlot(t.$slots,"default")],8,m)},p.__file="src/HotTable.vue";var b=e.defineComponent({name:"HotColumn",props:l("HotColumn"),inject:["columnsCache"],methods:{createColumnSettings:function(){var t=h(this.$props),e=function(t){for(var e=1;arguments.length>e;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?s(Object(n),!0).forEach(function(e){i(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},t);t.renderer&&(e.renderer=t.renderer),t.editor&&(e.editor=t.editor),this.columnsCache.set(this,e)}},mounted:function(){this.createColumnSettings()},unmounted:function(){this.columnsCache.delete(this)},render:function(){return null}});b.__file="src/HotColumn.vue",t.HotColumn=b,t.HotTable=p,t.default=p,Object.defineProperty(t,"__esModule",{value:!0})});
30
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue"),require("handsontable/base")):"function"==typeof define&&define.amd?define(["exports","vue","handsontable/base"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).Handsontable=t.Handsontable||{},t.Handsontable.vue={}),t.Vue,t.Handsontable)}(this,function(t,e,n){"use strict";function o(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=o(n);function i(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var c=Symbol("unassigned");function u(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function l(t){var e=r.default.hooks.getRegistered(),n={};for(var o in Object.assign(n,r.default.DefaultSettings),n)n[o]={default:c};for(var i=0;e.length>i;i++)n[e[i]]={default:c};return n.settings={default:c},"HotTable"===t&&(n.id={type:String,default:"hot-".concat(Math.random().toString(36).substring(5))}),n}function h(t){var e={},n=t.settings;if(n!==c)for(var o in n)u(n,o)&&n[o]!==c&&(e[o]=n[o]);for(var r in t)u(t,r)&&"settings"!==r&&t[r]!==c&&(e[r]=t[r]);return e}function f(t,e){var n=h(t),o=t.settings?t.settings:n,r=t.settings?n:null,i=(null==e?void 0:e._initOnlySettings)||[],s={};for(var a in o)!u(o,a)||void 0===o[a]||i.includes(a)||e&&"data"!==a&&d(e[a],o[a])||(s[a]=o[a]);for(var c in r)!u(r,c)||"id"===c||"settings"===c||void 0===r[c]||i.includes(c)||e&&"data"!==c&&d(e[c],r[c])||(s[c]=r[c]);return s}function d(t,e){var n=function(t){var e,n=(e=new WeakSet,function(t,n){if("object"===a(n)&&null!==n){if(e.has(n))return;e.add(n)}return n});return JSON.stringify(t,n)};return"function"==typeof t&&"function"==typeof e?""+t==""+e:a(t)===a(e)&&n(t)===n(e)}var p=e.defineComponent({name:"HotTable",props:l("HotTable"),provide:function(){return{columnsCache:this.columnsCache}},watch:{$props:{handler:function(t){var e=f(t,this.hotInstance?this.hotInstance.getSettings():void 0);this.hotInstance&&void 0!==e&&(e.data&&(this.hotInstance.isColumnModificationAllowed()||!this.hotInstance.isColumnModificationAllowed()&&this.hotInstance.countSourceCols()===this.miscCache.currentSourceColumns)&&(this.matchHotMappersSize(),delete e.data),Object.keys(e).length?this.hotInstance.updateSettings(e):this.hotInstance.render(),this.miscCache.currentSourceColumns=this.hotInstance.countSourceCols())},deep:!0,immediate:!0}},data:function(){return{__hotInstance:null,miscCache:{currentSourceColumns:null},columnSettings:null,columnsCache:new Map,get hotInstance(){return!this.__hotInstance||this.__hotInstance&&!this.__hotInstance.isDestroyed?this.__hotInstance:(console.warn("The Handsontable instance bound to this component was destroyed and cannot be used properly."),null)},set hotInstance(t){this.__hotInstance=t}}},methods:{hotInit:function(){var t=f(this.$props);t.columns=this.columnSettings?this.columnSettings:t.columns,this.hotInstance=e.markRaw(new r.default.Core(this.$el,t)),this.hotInstance.init(),this.miscCache.currentSourceColumns=this.hotInstance.countSourceCols()},matchHotMappersSize:function(){var t=this;if(this.hotInstance){var e,n=this.hotInstance.getSourceData(),o=[],r=[],i=this.hotInstance.rowIndexMapper.getNumberOfIndexes(),s=this.hotInstance.isColumnModificationAllowed(),a=0;if(n&&n.length!==i&&i>n.length)for(var c=n.length;i>c;c++)o.push(c);if(s)if(a=this.hotInstance.columnIndexMapper.getNumberOfIndexes(),n&&n[0]&&(null===(e=n[0])||void 0===e?void 0:e.length)!==a&&a>n[0].length)for(var u=n[0].length;a>u;u++)r.push(u);this.hotInstance.batch(function(){o.length>0?t.hotInstance.rowIndexMapper.removeIndexes(o):t.hotInstance.rowIndexMapper.insertIndexes(i-1,n.length-i),s&&0!==n.length&&(r.length>0?t.hotInstance.columnIndexMapper.removeIndexes(r):t.hotInstance.columnIndexMapper.insertIndexes(a-1,n[0].length-a))})}},getColumnSettings:function(){var t=Array.from(this.columnsCache.values());return t.length?t:void 0}},mounted:function(){this.columnSettings=this.getColumnSettings(),this.hotInit()},beforeUnmount:function(){this.hotInstance&&this.hotInstance.destroy()},version:"17.1.0-rc1"}),m=["id"];p.render=function(t,n,o,r,i,s){return e.openBlock(),e.createElementBlock("div",{id:t.id},[e.renderSlot(t.$slots,"default")],8,m)},p.__file="src/HotTable.vue";var b=e.defineComponent({name:"HotColumn",props:l("HotColumn"),inject:["columnsCache"],methods:{createColumnSettings:function(){var t=h(this.$props),e=function(t){for(var e=1;arguments.length>e;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?s(Object(n),!0).forEach(function(e){i(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},t);t.renderer&&(e.renderer=t.renderer),t.editor&&(e.editor=t.editor),this.columnsCache.set(this,e)}},mounted:function(){this.createColumnSettings()},unmounted:function(){this.columnsCache.delete(this)},render:function(){return null}});b.__file="src/HotColumn.vue",t.HotColumn=b,t.HotTable=p,t.default=p,Object.defineProperty(t,"__esModule",{value:!0})});
31
31
  //# sourceMappingURL=vue-handsontable.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vue-handsontable.min.js","sources":["../src/helpers.ts","../src/HotTable.vue","../src/HotTable.vue?vue&type=template&id=54bcc3fa&lang.js","../src/HotColumn.vue"],"sourcesContent":["import Handsontable from 'handsontable/base';\nimport { HotTableProps, VueProps } from './types';\n\nconst unassignedPropSymbol = Symbol('unassigned');\n\n/**\n * Message for the warning thrown if the Handsontable instance has been destroyed.\n */\nexport const HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' +\n ' used properly.';\n\n/**\n * Check if at specified `key` there is any value for `object`.\n *\n * @param {object} object Object to search value at specyfic key.\n * @param {string} key String key to check.\n * @returns {boolean}\n */\nexport function hasOwnProperty(object: unknown, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Generate an object containing all the available Handsontable properties and plugin hooks.\n *\n * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').\n * @returns {object}\n */\nexport function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps> {\n const registeredHooks = Handsontable.hooks.getRegistered();\n const propSchema: VueProps<HotTableProps> = {};\n\n Object.assign(propSchema, Handsontable.DefaultSettings);\n\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const prop in propSchema) {\n propSchema[prop] = {\n default: unassignedPropSymbol\n };\n }\n\n for (let i = 0; i < registeredHooks.length; i++) {\n propSchema[registeredHooks[i]] = {\n default: unassignedPropSymbol\n };\n }\n\n propSchema.settings = {\n default: unassignedPropSymbol\n };\n\n if (source === 'HotTable') {\n propSchema.id = {\n type: String,\n default: `hot-${Math.random().toString(36).substring(5)}`\n };\n }\n\n return propSchema;\n}\n\n/**\n * Filter out all of the unassigned props, and return only the one passed to the component.\n *\n * @param {object} props Object containing all the possible props.\n * @returns {object} Object containing only used props.\n */\nexport function filterPassedProps(props) {\n const filteredProps: VueProps<HotTableProps> = {};\n const columnSettingsProp = props.settings;\n\n if (columnSettingsProp !== unassignedPropSymbol) {\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in columnSettingsProp) {\n if (hasOwnProperty(columnSettingsProp, propName) && columnSettingsProp[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = columnSettingsProp[propName];\n }\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in props) {\n if (hasOwnProperty(props, propName) && propName !== 'settings' && props[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = props[propName];\n }\n }\n\n return filteredProps;\n}\n\n/**\n * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.\n *\n * @param {HotTableProps} props The props passed to the component.\n * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.\n * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.\n */\nexport function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps {\n const assignedProps: VueProps<HotTableProps> = filterPassedProps(props);\n const hotSettingsInProps: Handsontable.GridSettings = props.settings ? props.settings : assignedProps;\n const additionalHotSettingsInProps: Handsontable.GridSettings = props.settings ? assignedProps : null;\n const newSettings: Handsontable.GridSettings = {};\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in hotSettingsInProps) {\n if (\n hasOwnProperty(hotSettingsInProps, key) &&\n hotSettingsInProps[key] !== void 0 &&\n ((currentSettings && key !== 'data') ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = hotSettingsInProps[key];\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in additionalHotSettingsInProps) {\n if (\n hasOwnProperty(additionalHotSettingsInProps, key) &&\n key !== 'id' &&\n key !== 'settings' &&\n additionalHotSettingsInProps[key] !== void 0 &&\n ((currentSettings && key !== 'data')\n ? !simpleEqual(currentSettings[key], additionalHotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = additionalHotSettingsInProps[key];\n }\n }\n\n return newSettings;\n}\n\n/**\n * Compare two objects using `JSON.stringify`.\n * *Note: * As it's using the stringify function to compare objects, the property order in both objects is\n * important. It will return `false` for the same objects, if they're defined in a different order.\n *\n * @param {object} objectA First object to compare.\n * @param {object} objectB Second object to compare.\n * @returns {boolean} `true` if they're the same, `false` otherwise.\n */\nfunction simpleEqual(objectA, objectB) {\n const stringifyToJSON = (val) => {\n const circularReplacer = (function() {\n const seen = new WeakSet();\n\n return function(key, value) {\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return;\n }\n\n seen.add(value);\n }\n\n return value;\n };\n }());\n\n return JSON.stringify(val, circularReplacer);\n };\n\n if (typeof objectA === 'function' && typeof objectB === 'function') {\n return objectA.toString() === objectB.toString();\n\n } else if (typeof objectA !== typeof objectB) {\n return false;\n\n } else {\n return stringifyToJSON(objectA) === stringifyToJSON(objectB);\n }\n}\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport {\n propFactory,\n filterPassedProps\n} from './helpers';\n\nconst HotColumn = defineComponent({\n name: 'HotColumn',\n props: propFactory('HotColumn'),\n inject: ['columnsCache'],\n methods: {\n /**\n * Create the column settings based on the data provided to the `hot-column`\n * component and it's child components.\n */\n createColumnSettings(): void {\n const assignedProps = filterPassedProps(this.$props);\n const columnSettings = { ...assignedProps };\n\n if (assignedProps.renderer) {\n columnSettings.renderer = assignedProps.renderer;\n }\n\n if (assignedProps.editor) {\n columnSettings.editor = assignedProps.editor;\n }\n\n this.columnsCache.set(this, columnSettings);\n }\n },\n mounted() {\n this.createColumnSettings();\n },\n unmounted() {\n this.columnsCache.delete(this);\n },\n render() {\n return null;\n }\n});\n\nexport default HotColumn;\nexport { HotColumn };\n</script>\n"],"names":["unassignedPropSymbol","Symbol","hasOwnProperty","object","key","Object","prototype","call","propFactory","source","registeredHooks","Handsontable","hooks","getRegistered","propSchema","prop","assign","DefaultSettings","default","i","length","settings","id","type","String","concat","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","newSettings","simpleEqual","objectA","objectB","stringifyToJSON","val","seen","circularReplacer","WeakSet","value","_typeof","has","add","JSON","stringify","HotTable","defineComponent","name","provide","columnsCache","this","watch","$props","handler","hotInstance","getSettings","data","isColumnModificationAllowed","countSourceCols","miscCache","currentSourceColumns","matchHotMappersSize","keys","updateSettings","render","deep","immediate","__hotInstance","columnSettings","Map","isDestroyed","console","warn","methods","hotInit","columns","markRaw","Core","$el","init","_this","_data$","getSourceData","rowsToRemove","columnsToRemove","indexMapperRowCount","rowIndexMapper","getNumberOfIndexes","indexMapperColumnCount","r","push","columnIndexMapper","c","batch","removeIndexes","insertIndexes","getColumnSettings","Array","from","values","mounted","beforeUnmount","destroy","version","_createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","_objectSpread","renderer","editor","set","unmounted"],"mappings":"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"}
1
+ {"version":3,"file":"vue-handsontable.min.js","sources":["../src/helpers.ts","../src/HotTable.vue","../src/HotTable.vue?vue&type=template&id=54bcc3fa&lang.js","../src/HotColumn.vue"],"sourcesContent":["import Handsontable from 'handsontable/base';\nimport { HotTableProps, VueProps } from './types';\n\nconst unassignedPropSymbol = Symbol('unassigned');\n\n/**\n * Message for the warning thrown if the Handsontable instance has been destroyed.\n */\nexport const HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' +\n ' used properly.';\n\n/**\n * Check if at specified `key` there is any value for `object`.\n *\n * @param {object} object Object to search value at specyfic key.\n * @param {string} key String key to check.\n * @returns {boolean}\n */\nexport function hasOwnProperty(object: unknown, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Generate an object containing all the available Handsontable properties and plugin hooks.\n *\n * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').\n * @returns {object}\n */\nexport function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps> {\n const registeredHooks = Handsontable.hooks.getRegistered();\n const propSchema: VueProps<HotTableProps> = {};\n\n Object.assign(propSchema, Handsontable.DefaultSettings);\n\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const prop in propSchema) {\n propSchema[prop] = {\n default: unassignedPropSymbol\n };\n }\n\n for (let i = 0; i < registeredHooks.length; i++) {\n propSchema[registeredHooks[i]] = {\n default: unassignedPropSymbol\n };\n }\n\n propSchema.settings = {\n default: unassignedPropSymbol\n };\n\n if (source === 'HotTable') {\n propSchema.id = {\n type: String,\n default: `hot-${Math.random().toString(36).substring(5)}`\n };\n }\n\n return propSchema;\n}\n\n/**\n * Filter out all of the unassigned props, and return only the one passed to the component.\n *\n * @param {object} props Object containing all the possible props.\n * @returns {object} Object containing only used props.\n */\nexport function filterPassedProps(props) {\n const filteredProps: VueProps<HotTableProps> = {};\n const columnSettingsProp = props.settings;\n\n if (columnSettingsProp !== unassignedPropSymbol) {\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in columnSettingsProp) {\n if (hasOwnProperty(columnSettingsProp, propName) && columnSettingsProp[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = columnSettingsProp[propName];\n }\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in props) {\n if (hasOwnProperty(props, propName) && propName !== 'settings' && props[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = props[propName];\n }\n }\n\n return filteredProps;\n}\n\n/**\n * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.\n *\n * @param {HotTableProps} props The props passed to the component.\n * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.\n * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.\n */\nexport function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps {\n const assignedProps: VueProps<HotTableProps> = filterPassedProps(props);\n const hotSettingsInProps: Handsontable.GridSettings = props.settings ? props.settings : assignedProps;\n const additionalHotSettingsInProps: Handsontable.GridSettings = props.settings ? assignedProps : null;\n const initOnlySettingKeys: string[] =\n (currentSettings as any)?._initOnlySettings || [];\n const newSettings: Handsontable.GridSettings = {};\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in hotSettingsInProps) {\n if (\n hasOwnProperty(hotSettingsInProps, key) &&\n hotSettingsInProps[key] !== void 0 &&\n !initOnlySettingKeys.includes(key) &&\n ((currentSettings && key !== 'data') ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = hotSettingsInProps[key];\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in additionalHotSettingsInProps) {\n if (\n hasOwnProperty(additionalHotSettingsInProps, key) &&\n key !== 'id' &&\n key !== 'settings' &&\n additionalHotSettingsInProps[key] !== void 0 &&\n !initOnlySettingKeys.includes(key) &&\n ((currentSettings && key !== 'data')\n ? !simpleEqual(currentSettings[key], additionalHotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = additionalHotSettingsInProps[key];\n }\n }\n\n return newSettings;\n}\n\n/**\n * Compare two objects using `JSON.stringify`.\n * *Note: * As it's using the stringify function to compare objects, the property order in both objects is\n * important. It will return `false` for the same objects, if they're defined in a different order.\n *\n * @param {object} objectA First object to compare.\n * @param {object} objectB Second object to compare.\n * @returns {boolean} `true` if they're the same, `false` otherwise.\n */\nfunction simpleEqual(objectA, objectB) {\n const stringifyToJSON = (val) => {\n const circularReplacer = (function() {\n const seen = new WeakSet();\n\n return function(key, value) {\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return;\n }\n\n seen.add(value);\n }\n\n return value;\n };\n }());\n\n return JSON.stringify(val, circularReplacer);\n };\n\n if (typeof objectA === 'function' && typeof objectB === 'function') {\n return objectA.toString() === objectB.toString();\n\n } else if (typeof objectA !== typeof objectB) {\n return false;\n\n } else {\n return stringifyToJSON(objectA) === stringifyToJSON(objectB);\n }\n}\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport {\n propFactory,\n filterPassedProps\n} from './helpers';\n\nconst HotColumn = defineComponent({\n name: 'HotColumn',\n props: propFactory('HotColumn'),\n inject: ['columnsCache'],\n methods: {\n /**\n * Create the column settings based on the data provided to the `hot-column`\n * component and it's child components.\n */\n createColumnSettings(): void {\n const assignedProps = filterPassedProps(this.$props);\n const columnSettings = { ...assignedProps };\n\n if (assignedProps.renderer) {\n columnSettings.renderer = assignedProps.renderer;\n }\n\n if (assignedProps.editor) {\n columnSettings.editor = assignedProps.editor;\n }\n\n this.columnsCache.set(this, columnSettings);\n }\n },\n mounted() {\n this.createColumnSettings();\n },\n unmounted() {\n this.columnsCache.delete(this);\n },\n render() {\n return null;\n }\n});\n\nexport default HotColumn;\nexport { HotColumn };\n</script>\n"],"names":["unassignedPropSymbol","Symbol","hasOwnProperty","object","key","Object","prototype","call","propFactory","source","registeredHooks","Handsontable","hooks","getRegistered","propSchema","prop","assign","DefaultSettings","default","i","length","settings","id","type","String","concat","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","initOnlySettingKeys","_initOnlySettings","newSettings","includes","simpleEqual","objectA","objectB","stringifyToJSON","val","seen","circularReplacer","WeakSet","value","_typeof","has","add","JSON","stringify","HotTable","defineComponent","name","provide","columnsCache","this","watch","$props","handler","hotInstance","getSettings","data","isColumnModificationAllowed","countSourceCols","miscCache","currentSourceColumns","matchHotMappersSize","keys","updateSettings","render","deep","immediate","__hotInstance","columnSettings","Map","isDestroyed","console","warn","methods","hotInit","columns","markRaw","Core","$el","init","_this","_data$","getSourceData","rowsToRemove","columnsToRemove","indexMapperRowCount","rowIndexMapper","getNumberOfIndexes","indexMapperColumnCount","r","push","columnIndexMapper","c","batch","removeIndexes","insertIndexes","getColumnSettings","Array","from","values","mounted","beforeUnmount","destroy","version","_createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","_objectSpread","renderer","editor","set","unmounted"],"mappings":"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"}
@@ -55,30 +55,34 @@ function _typeof(o) {
55
55
  }
56
56
 
57
57
  var unassignedPropSymbol = Symbol('unassigned');
58
- /**
59
- * Message for the warning thrown if the Handsontable instance has been destroyed.
58
+
59
+ /**
60
+ * Message for the warning thrown if the Handsontable instance has been destroyed.
60
61
  */
61
62
  var HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' + ' used properly.';
62
- /**
63
- * Check if at specified `key` there is any value for `object`.
64
- *
65
- * @param {object} object Object to search value at specyfic key.
66
- * @param {string} key String key to check.
67
- * @returns {boolean}
63
+
64
+ /**
65
+ * Check if at specified `key` there is any value for `object`.
66
+ *
67
+ * @param {object} object Object to search value at specyfic key.
68
+ * @param {string} key String key to check.
69
+ * @returns {boolean}
68
70
  */
69
71
  function hasOwnProperty(object, key) {
70
72
  return Object.prototype.hasOwnProperty.call(object, key);
71
73
  }
72
- /**
73
- * Generate an object containing all the available Handsontable properties and plugin hooks.
74
- *
75
- * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
76
- * @returns {object}
74
+
75
+ /**
76
+ * Generate an object containing all the available Handsontable properties and plugin hooks.
77
+ *
78
+ * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
79
+ * @returns {object}
77
80
  */
78
81
  function propFactory(source) {
79
82
  var registeredHooks = Handsontable.hooks.getRegistered();
80
83
  var propSchema = {};
81
84
  Object.assign(propSchema, Handsontable.DefaultSettings);
85
+
82
86
  // eslint-disable-next-line no-restricted-syntax, guard-for-in
83
87
  for (var prop in propSchema) {
84
88
  propSchema[prop] = {
@@ -101,11 +105,12 @@ function propFactory(source) {
101
105
  }
102
106
  return propSchema;
103
107
  }
104
- /**
105
- * Filter out all of the unassigned props, and return only the one passed to the component.
106
- *
107
- * @param {object} props Object containing all the possible props.
108
- * @returns {object} Object containing only used props.
108
+
109
+ /**
110
+ * Filter out all of the unassigned props, and return only the one passed to the component.
111
+ *
112
+ * @param {object} props Object containing all the possible props.
113
+ * @returns {object} Object containing only used props.
109
114
  */
110
115
  function filterPassedProps(props) {
111
116
  var filteredProps = {};
@@ -118,6 +123,7 @@ function filterPassedProps(props) {
118
123
  }
119
124
  }
120
125
  }
126
+
121
127
  // eslint-disable-next-line no-restricted-syntax
122
128
  for (var _propName in props) {
123
129
  if (hasOwnProperty(props, _propName) && _propName !== 'settings' && props[_propName] !== unassignedPropSymbol) {
@@ -126,40 +132,45 @@ function filterPassedProps(props) {
126
132
  }
127
133
  return filteredProps;
128
134
  }
129
- /**
130
- * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
131
- *
132
- * @param {HotTableProps} props The props passed to the component.
133
- * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
134
- * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
135
+
136
+ /**
137
+ * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
138
+ *
139
+ * @param {HotTableProps} props The props passed to the component.
140
+ * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
141
+ * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
135
142
  */
136
143
  function prepareSettings(props, currentSettings) {
137
144
  var assignedProps = filterPassedProps(props);
138
145
  var hotSettingsInProps = props.settings ? props.settings : assignedProps;
139
146
  var additionalHotSettingsInProps = props.settings ? assignedProps : null;
147
+ var initOnlySettingKeys = (currentSettings === null || currentSettings === void 0 ? void 0 : currentSettings._initOnlySettings) || [];
140
148
  var newSettings = {};
149
+
141
150
  // eslint-disable-next-line no-restricted-syntax
142
151
  for (var key in hotSettingsInProps) {
143
- if (hasOwnProperty(hotSettingsInProps, key) && hotSettingsInProps[key] !== void 0 && (currentSettings && key !== 'data' ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)) {
152
+ if (hasOwnProperty(hotSettingsInProps, key) && hotSettingsInProps[key] !== void 0 && !initOnlySettingKeys.includes(key) && (currentSettings && key !== 'data' ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)) {
144
153
  newSettings[key] = hotSettingsInProps[key];
145
154
  }
146
155
  }
156
+
147
157
  // eslint-disable-next-line no-restricted-syntax
148
158
  for (var _key in additionalHotSettingsInProps) {
149
- if (hasOwnProperty(additionalHotSettingsInProps, _key) && _key !== 'id' && _key !== 'settings' && additionalHotSettingsInProps[_key] !== void 0 && (currentSettings && _key !== 'data' ? !simpleEqual(currentSettings[_key], additionalHotSettingsInProps[_key]) : true)) {
159
+ if (hasOwnProperty(additionalHotSettingsInProps, _key) && _key !== 'id' && _key !== 'settings' && additionalHotSettingsInProps[_key] !== void 0 && !initOnlySettingKeys.includes(_key) && (currentSettings && _key !== 'data' ? !simpleEqual(currentSettings[_key], additionalHotSettingsInProps[_key]) : true)) {
150
160
  newSettings[_key] = additionalHotSettingsInProps[_key];
151
161
  }
152
162
  }
153
163
  return newSettings;
154
164
  }
155
- /**
156
- * Compare two objects using `JSON.stringify`.
157
- * *Note: * As it's using the stringify function to compare objects, the property order in both objects is
158
- * important. It will return `false` for the same objects, if they're defined in a different order.
159
- *
160
- * @param {object} objectA First object to compare.
161
- * @param {object} objectB Second object to compare.
162
- * @returns {boolean} `true` if they're the same, `false` otherwise.
165
+
166
+ /**
167
+ * Compare two objects using `JSON.stringify`.
168
+ * *Note: * As it's using the stringify function to compare objects, the property order in both objects is
169
+ * important. It will return `false` for the same objects, if they're defined in a different order.
170
+ *
171
+ * @param {object} objectA First object to compare.
172
+ * @param {object} objectB Second object to compare.
173
+ * @returns {boolean} `true` if they're the same, `false` otherwise.
163
174
  */
164
175
  function simpleEqual(objectA, objectB) {
165
176
  var stringifyToJSON = function stringifyToJSON(val) {
@@ -186,7 +197,7 @@ function simpleEqual(objectA, objectB) {
186
197
  }
187
198
  }
188
199
 
189
- var version="17.0.1";
200
+ var version="17.1.0-rc1";
190
201
 
191
202
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
192
203
  // @ts-ignore
@@ -209,10 +220,12 @@ var HotTable = defineComponent({
209
220
  if (this.hotInstance.isColumnModificationAllowed() || !this.hotInstance.isColumnModificationAllowed() && this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns) {
210
221
  // If the dataset dimensions change, update the index mappers.
211
222
  this.matchHotMappersSize();
223
+
212
224
  // Data is automatically synchronized by reference.
213
225
  delete settings.data;
214
226
  }
215
227
  }
228
+
216
229
  // If there are another options changed, update the HOT settings, render the table otherwise.
217
230
  if (Object.keys(settings).length) {
218
231
  this.hotInstance.updateSettings(settings);
@@ -251,8 +264,8 @@ var HotTable = defineComponent({
251
264
  };
252
265
  },
253
266
  methods: {
254
- /**
255
- * Initialize Handsontable.
267
+ /**
268
+ * Initialize Handsontable.
256
269
  */
257
270
  hotInit: function hotInit() {
258
271
  var newSettings = prepareSettings(this.$props);
@@ -305,10 +318,10 @@ var HotTable = defineComponent({
305
318
  }
306
319
  });
307
320
  },
308
- /**
309
- * Get settings for the columns provided in the `hot-column` components.
310
- *
311
- * @returns {HotTableProps[] | undefined}
321
+ /**
322
+ * Get settings for the columns provided in the `hot-column` components.
323
+ *
324
+ * @returns {HotTableProps[] | undefined}
312
325
  */
313
326
  getColumnSettings: function getColumnSettings() {
314
327
  var columnSettings = Array.from(this.columnsCache.values());
@@ -342,9 +355,9 @@ var HotColumn = defineComponent({
342
355
  props: propFactory('HotColumn'),
343
356
  inject: ['columnsCache'],
344
357
  methods: {
345
- /**
346
- * Create the column settings based on the data provided to the `hot-column`
347
- * component and it's child components.
358
+ /**
359
+ * Create the column settings based on the data provided to the `hot-column`
360
+ * component and it's child components.
348
361
  */
349
362
  createColumnSettings: function createColumnSettings() {
350
363
  var assignedProps = filterPassedProps(this.$props);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@handsontable/vue3",
3
- "version": "17.0.1",
3
+ "version": "17.1.0-rc1",
4
4
  "description": "Best Data Grid for Vue with Spreadsheet Look and Feel.",
5
5
  "author": "Handsoncode <hello@handsoncode.net> (https://handsoncode.net)",
6
6
  "homepage": "https://handsontable.com",
@@ -1,11 +0,0 @@
1
- declare const HotColumn: import("vue").DefineComponent<{}, {}, {}, {}, {
2
- /**
3
- * Create the column settings based on the data provided to the `hot-column`
4
- * component and it's child components.
5
- */
6
- createColumnSettings(): void;
7
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {
8
- [x: string]: any;
9
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
10
- export default HotColumn;
11
- export { HotColumn };
package/HotTable.vue.d.ts DELETED
@@ -1,32 +0,0 @@
1
- import { VNode } from 'vue';
2
- import Handsontable from 'handsontable/base';
3
- import { HotTableProps } from './types';
4
- declare const HotTable: import("vue").DefineComponent<{}, {}, {
5
- __hotInstance: Handsontable;
6
- miscCache: {
7
- currentSourceColumns: any;
8
- };
9
- columnSettings: HotTableProps[];
10
- columnsCache: Map<VNode<import("vue").RendererNode, import("vue").RendererElement, {
11
- [key: string]: any;
12
- }>, HotTableProps>;
13
- hotInstance: Handsontable;
14
- }, {}, {
15
- /**
16
- * Initialize Handsontable.
17
- */
18
- hotInit(): void;
19
- matchHotMappersSize(): void;
20
- /**
21
- * Get settings for the columns provided in the `hot-column` components.
22
- *
23
- * @returns {HotTableProps[] | undefined}
24
- */
25
- getColumnSettings(): HotTableProps[] | void;
26
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {
27
- [x: string]: any;
28
- }, {}, {}, {}, string, () => {
29
- columnsCache: any;
30
- }, true, {}, any>;
31
- export default HotTable;
32
- export { HotTable };
@@ -1,11 +0,0 @@
1
- declare const HotColumn: import("vue").DefineComponent<{}, {}, {}, {}, {
2
- /**
3
- * Create the column settings based on the data provided to the `hot-column`
4
- * component and it's child components.
5
- */
6
- createColumnSettings(): void;
7
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {
8
- [x: string]: any;
9
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
10
- export default HotColumn;
11
- export { HotColumn };
@@ -1,32 +0,0 @@
1
- import { VNode } from 'vue';
2
- import Handsontable from 'handsontable/base';
3
- import { HotTableProps } from './types';
4
- declare const HotTable: import("vue").DefineComponent<{}, {}, {
5
- __hotInstance: Handsontable;
6
- miscCache: {
7
- currentSourceColumns: any;
8
- };
9
- columnSettings: HotTableProps[];
10
- columnsCache: Map<VNode<import("vue").RendererNode, import("vue").RendererElement, {
11
- [key: string]: any;
12
- }>, HotTableProps>;
13
- hotInstance: Handsontable;
14
- }, {}, {
15
- /**
16
- * Initialize Handsontable.
17
- */
18
- hotInit(): void;
19
- matchHotMappersSize(): void;
20
- /**
21
- * Get settings for the columns provided in the `hot-column` components.
22
- *
23
- * @returns {HotTableProps[] | undefined}
24
- */
25
- getColumnSettings(): HotTableProps[] | void;
26
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {
27
- [x: string]: any;
28
- }, {}, {}, {}, string, () => {
29
- columnsCache: any;
30
- }, true, {}, any>;
31
- export default HotTable;
32
- export { HotTable };
@@ -1,36 +0,0 @@
1
- import Handsontable from 'handsontable/base';
2
- import { HotTableProps, VueProps } from './types';
3
- /**
4
- * Message for the warning thrown if the Handsontable instance has been destroyed.
5
- */
6
- export declare const HOT_DESTROYED_WARNING: string;
7
- /**
8
- * Check if at specified `key` there is any value for `object`.
9
- *
10
- * @param {object} object Object to search value at specyfic key.
11
- * @param {string} key String key to check.
12
- * @returns {boolean}
13
- */
14
- export declare function hasOwnProperty(object: unknown, key: string): boolean;
15
- /**
16
- * Generate an object containing all the available Handsontable properties and plugin hooks.
17
- *
18
- * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
19
- * @returns {object}
20
- */
21
- export declare function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps>;
22
- /**
23
- * Filter out all of the unassigned props, and return only the one passed to the component.
24
- *
25
- * @param {object} props Object containing all the possible props.
26
- * @returns {object} Object containing only used props.
27
- */
28
- export declare function filterPassedProps(props: any): VueProps<HotTableProps>;
29
- /**
30
- * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
31
- *
32
- * @param {HotTableProps} props The props passed to the component.
33
- * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
34
- * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
35
- */
36
- export declare function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps;
@@ -1,3 +0,0 @@
1
- import HotTable from './HotTable.vue';
2
- import HotColumn from './HotColumn.vue';
3
- export { HotTable as default, HotTable, HotColumn };
@@ -1,9 +0,0 @@
1
- import Handsontable from 'handsontable/base';
2
- export interface HotTableProps extends Handsontable.GridSettings {
3
- id?: string;
4
- settings?: Handsontable.GridSettings;
5
- [additional: string]: any;
6
- }
7
- export type VueProps<T> = {
8
- [P in keyof T]: any;
9
- };
@@ -1,11 +0,0 @@
1
- declare const HotColumn: import("vue").DefineComponent<{}, {}, {}, {}, {
2
- /**
3
- * Create the column settings based on the data provided to the `hot-column`
4
- * component and it's child components.
5
- */
6
- createColumnSettings(): void;
7
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {
8
- [x: string]: any;
9
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
10
- export default HotColumn;
11
- export { HotColumn };
@@ -1,32 +0,0 @@
1
- import { VNode } from 'vue';
2
- import Handsontable from 'handsontable/base';
3
- import { HotTableProps } from './types';
4
- declare const HotTable: import("vue").DefineComponent<{}, {}, {
5
- __hotInstance: Handsontable;
6
- miscCache: {
7
- currentSourceColumns: any;
8
- };
9
- columnSettings: HotTableProps[];
10
- columnsCache: Map<VNode<import("vue").RendererNode, import("vue").RendererElement, {
11
- [key: string]: any;
12
- }>, HotTableProps>;
13
- hotInstance: Handsontable;
14
- }, {}, {
15
- /**
16
- * Initialize Handsontable.
17
- */
18
- hotInit(): void;
19
- matchHotMappersSize(): void;
20
- /**
21
- * Get settings for the columns provided in the `hot-column` components.
22
- *
23
- * @returns {HotTableProps[] | undefined}
24
- */
25
- getColumnSettings(): HotTableProps[] | void;
26
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {
27
- [x: string]: any;
28
- }, {}, {}, {}, string, () => {
29
- columnsCache: any;
30
- }, true, {}, any>;
31
- export default HotTable;
32
- export { HotTable };
package/dist/helpers.d.ts DELETED
@@ -1,36 +0,0 @@
1
- import Handsontable from 'handsontable/base';
2
- import { HotTableProps, VueProps } from './types';
3
- /**
4
- * Message for the warning thrown if the Handsontable instance has been destroyed.
5
- */
6
- export declare const HOT_DESTROYED_WARNING: string;
7
- /**
8
- * Check if at specified `key` there is any value for `object`.
9
- *
10
- * @param {object} object Object to search value at specyfic key.
11
- * @param {string} key String key to check.
12
- * @returns {boolean}
13
- */
14
- export declare function hasOwnProperty(object: unknown, key: string): boolean;
15
- /**
16
- * Generate an object containing all the available Handsontable properties and plugin hooks.
17
- *
18
- * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
19
- * @returns {object}
20
- */
21
- export declare function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps>;
22
- /**
23
- * Filter out all of the unassigned props, and return only the one passed to the component.
24
- *
25
- * @param {object} props Object containing all the possible props.
26
- * @returns {object} Object containing only used props.
27
- */
28
- export declare function filterPassedProps(props: any): VueProps<HotTableProps>;
29
- /**
30
- * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
31
- *
32
- * @param {HotTableProps} props The props passed to the component.
33
- * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
34
- * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
35
- */
36
- export declare function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps;
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import HotTable from './HotTable.vue';
2
- import HotColumn from './HotColumn.vue';
3
- export { HotTable as default, HotTable, HotColumn };
package/dist/types.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import Handsontable from 'handsontable/base';
2
- export interface HotTableProps extends Handsontable.GridSettings {
3
- id?: string;
4
- settings?: Handsontable.GridSettings;
5
- [additional: string]: any;
6
- }
7
- export type VueProps<T> = {
8
- [P in keyof T]: any;
9
- };
package/helpers.d.ts DELETED
@@ -1,36 +0,0 @@
1
- import Handsontable from 'handsontable/base';
2
- import { HotTableProps, VueProps } from './types';
3
- /**
4
- * Message for the warning thrown if the Handsontable instance has been destroyed.
5
- */
6
- export declare const HOT_DESTROYED_WARNING: string;
7
- /**
8
- * Check if at specified `key` there is any value for `object`.
9
- *
10
- * @param {object} object Object to search value at specyfic key.
11
- * @param {string} key String key to check.
12
- * @returns {boolean}
13
- */
14
- export declare function hasOwnProperty(object: unknown, key: string): boolean;
15
- /**
16
- * Generate an object containing all the available Handsontable properties and plugin hooks.
17
- *
18
- * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').
19
- * @returns {object}
20
- */
21
- export declare function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps>;
22
- /**
23
- * Filter out all of the unassigned props, and return only the one passed to the component.
24
- *
25
- * @param {object} props Object containing all the possible props.
26
- * @returns {object} Object containing only used props.
27
- */
28
- export declare function filterPassedProps(props: any): VueProps<HotTableProps>;
29
- /**
30
- * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.
31
- *
32
- * @param {HotTableProps} props The props passed to the component.
33
- * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.
34
- * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.
35
- */
36
- export declare function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps;
package/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import HotTable from './HotTable.vue';
2
- import HotColumn from './HotColumn.vue';
3
- export { HotTable as default, HotTable, HotColumn };
package/types.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import Handsontable from 'handsontable/base';
2
- export interface HotTableProps extends Handsontable.GridSettings {
3
- id?: string;
4
- settings?: Handsontable.GridSettings;
5
- [additional: string]: any;
6
- }
7
- export type VueProps<T> = {
8
- [P in keyof T]: any;
9
- };