@handsontable/vue3 14.2.0 → 14.3.0-next-3fa6b18-20240410
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.
|
@@ -5,10 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var vue = require('vue');
|
|
6
6
|
var Handsontable = require('handsontable/base');
|
|
7
7
|
|
|
8
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
-
|
|
10
|
-
var Handsontable__default = /*#__PURE__*/_interopDefaultLegacy(Handsontable);
|
|
11
|
-
|
|
12
8
|
function ownKeys(e, r) {
|
|
13
9
|
var t = Object.keys(e);
|
|
14
10
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -42,7 +38,7 @@ function _toPrimitive(t, r) {
|
|
|
42
38
|
}
|
|
43
39
|
function _toPropertyKey(t) {
|
|
44
40
|
var i = _toPrimitive(t, "string");
|
|
45
|
-
return "symbol" == typeof i ? i :
|
|
41
|
+
return "symbol" == typeof i ? i : i + "";
|
|
46
42
|
}
|
|
47
43
|
function _typeof(o) {
|
|
48
44
|
"@babel/helpers - typeof";
|
|
@@ -90,9 +86,9 @@ function hasOwnProperty(object, key) {
|
|
|
90
86
|
* @returns {object}
|
|
91
87
|
*/
|
|
92
88
|
function propFactory(source) {
|
|
93
|
-
var registeredHooks =
|
|
89
|
+
var registeredHooks = Handsontable.hooks.getRegistered();
|
|
94
90
|
var propSchema = {};
|
|
95
|
-
Object.assign(propSchema,
|
|
91
|
+
Object.assign(propSchema, Handsontable.DefaultSettings);
|
|
96
92
|
// eslint-disable-next-line no-restricted-syntax, guard-for-in
|
|
97
93
|
for (var prop in propSchema) {
|
|
98
94
|
propSchema[prop] = {
|
|
@@ -176,20 +172,29 @@ function prepareSettings(props, currentSettings) {
|
|
|
176
172
|
* @returns {boolean} `true` if they're the same, `false` otherwise.
|
|
177
173
|
*/
|
|
178
174
|
function simpleEqual(objectA, objectB) {
|
|
179
|
-
var
|
|
180
|
-
var
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
175
|
+
var stringifyToJSON = function stringifyToJSON(val) {
|
|
176
|
+
var circularReplacer = function () {
|
|
177
|
+
var seen = new WeakSet();
|
|
178
|
+
return function (key, value) {
|
|
179
|
+
if (_typeof(value) === 'object' && value !== null) {
|
|
180
|
+
if (seen.has(value)) return;
|
|
181
|
+
seen.add(value);
|
|
182
|
+
}
|
|
183
|
+
return value;
|
|
184
|
+
};
|
|
185
|
+
}();
|
|
186
|
+
return JSON.stringify(val, circularReplacer);
|
|
187
|
+
};
|
|
188
|
+
if (typeof objectA === 'function' && typeof objectB === 'function') {
|
|
189
|
+
return objectA.toString() === objectB.toString();
|
|
190
|
+
} else if (_typeof(objectA) !== _typeof(objectB)) {
|
|
191
|
+
return false;
|
|
192
|
+
} else {
|
|
193
|
+
return stringifyToJSON(objectA) === stringifyToJSON(objectB);
|
|
194
|
+
}
|
|
190
195
|
}
|
|
191
196
|
|
|
192
|
-
var version="14.
|
|
197
|
+
var version="14.3.0-next-3fa6b18-20240410";
|
|
193
198
|
|
|
194
199
|
var HotTable = vue.defineComponent({
|
|
195
200
|
name: 'HotTable',
|
|
@@ -258,7 +263,7 @@ var HotTable = vue.defineComponent({
|
|
|
258
263
|
hotInit: function hotInit() {
|
|
259
264
|
var newSettings = prepareSettings(this.$props);
|
|
260
265
|
newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;
|
|
261
|
-
this.hotInstance = vue.markRaw(new
|
|
266
|
+
this.hotInstance = vue.markRaw(new Handsontable.Core(this.$el, newSettings));
|
|
262
267
|
this.hotInstance.init();
|
|
263
268
|
this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();
|
|
264
269
|
},
|
|
@@ -374,4 +379,4 @@ HotColumn.__file = "src/HotColumn.vue";
|
|
|
374
379
|
|
|
375
380
|
exports.HotColumn = HotColumn;
|
|
376
381
|
exports.HotTable = HotTable;
|
|
377
|
-
exports
|
|
382
|
+
exports.default = HotTable;
|
package/dist/vue-handsontable.js
CHANGED
|
@@ -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: 14.
|
|
28
|
+
* Version: 14.3.0-next-3fa6b18-20240410 (built at Wed Apr 10 2024 07:39:03 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')) :
|
|
@@ -33,10 +33,6 @@ typeof define === 'function' && define.amd ? define(['exports', 'vue', 'handsont
|
|
|
33
33
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.Handsontable = global.Handsontable || {}, global.Handsontable.vue = {}), global.Vue, global.Handsontable));
|
|
34
34
|
})(this, (function (exports, vue, Handsontable) { 'use strict';
|
|
35
35
|
|
|
36
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
37
|
-
|
|
38
|
-
var Handsontable__default = /*#__PURE__*/_interopDefaultLegacy(Handsontable);
|
|
39
|
-
|
|
40
36
|
function ownKeys(e, r) {
|
|
41
37
|
var t = Object.keys(e);
|
|
42
38
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -70,7 +66,7 @@ function _toPrimitive(t, r) {
|
|
|
70
66
|
}
|
|
71
67
|
function _toPropertyKey(t) {
|
|
72
68
|
var i = _toPrimitive(t, "string");
|
|
73
|
-
return "symbol" == typeof i ? i :
|
|
69
|
+
return "symbol" == typeof i ? i : i + "";
|
|
74
70
|
}
|
|
75
71
|
function _typeof(o) {
|
|
76
72
|
"@babel/helpers - typeof";
|
|
@@ -118,9 +114,9 @@ function hasOwnProperty(object, key) {
|
|
|
118
114
|
* @returns {object}
|
|
119
115
|
*/
|
|
120
116
|
function propFactory(source) {
|
|
121
|
-
var registeredHooks =
|
|
117
|
+
var registeredHooks = Handsontable.hooks.getRegistered();
|
|
122
118
|
var propSchema = {};
|
|
123
|
-
Object.assign(propSchema,
|
|
119
|
+
Object.assign(propSchema, Handsontable.DefaultSettings);
|
|
124
120
|
// eslint-disable-next-line no-restricted-syntax, guard-for-in
|
|
125
121
|
for (var prop in propSchema) {
|
|
126
122
|
propSchema[prop] = {
|
|
@@ -204,20 +200,29 @@ function prepareSettings(props, currentSettings) {
|
|
|
204
200
|
* @returns {boolean} `true` if they're the same, `false` otherwise.
|
|
205
201
|
*/
|
|
206
202
|
function simpleEqual(objectA, objectB) {
|
|
207
|
-
var
|
|
208
|
-
var
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
if (
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
203
|
+
var stringifyToJSON = function stringifyToJSON(val) {
|
|
204
|
+
var circularReplacer = function () {
|
|
205
|
+
var seen = new WeakSet();
|
|
206
|
+
return function (key, value) {
|
|
207
|
+
if (_typeof(value) === 'object' && value !== null) {
|
|
208
|
+
if (seen.has(value)) return;
|
|
209
|
+
seen.add(value);
|
|
210
|
+
}
|
|
211
|
+
return value;
|
|
212
|
+
};
|
|
213
|
+
}();
|
|
214
|
+
return JSON.stringify(val, circularReplacer);
|
|
215
|
+
};
|
|
216
|
+
if (typeof objectA === 'function' && typeof objectB === 'function') {
|
|
217
|
+
return objectA.toString() === objectB.toString();
|
|
218
|
+
} else if (_typeof(objectA) !== _typeof(objectB)) {
|
|
219
|
+
return false;
|
|
220
|
+
} else {
|
|
221
|
+
return stringifyToJSON(objectA) === stringifyToJSON(objectB);
|
|
222
|
+
}
|
|
218
223
|
}
|
|
219
224
|
|
|
220
|
-
var version="14.
|
|
225
|
+
var version="14.3.0-next-3fa6b18-20240410";
|
|
221
226
|
|
|
222
227
|
var HotTable = vue.defineComponent({
|
|
223
228
|
name: 'HotTable',
|
|
@@ -286,7 +291,7 @@ var HotTable = vue.defineComponent({
|
|
|
286
291
|
hotInit: function hotInit() {
|
|
287
292
|
var newSettings = prepareSettings(this.$props);
|
|
288
293
|
newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;
|
|
289
|
-
this.hotInstance = vue.markRaw(new
|
|
294
|
+
this.hotInstance = vue.markRaw(new Handsontable.Core(this.$el, newSettings));
|
|
290
295
|
this.hotInstance.init();
|
|
291
296
|
this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();
|
|
292
297
|
},
|
|
@@ -402,7 +407,7 @@ HotColumn.__file = "src/HotColumn.vue";
|
|
|
402
407
|
|
|
403
408
|
exports.HotColumn = HotColumn;
|
|
404
409
|
exports.HotTable = HotTable;
|
|
405
|
-
exports
|
|
410
|
+
exports.default = HotTable;
|
|
406
411
|
|
|
407
412
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
408
413
|
|
|
@@ -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 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)) return;\n seen.add(value);\n }\n\n return value;\n };\n }());\n\n return JSON.stringify(objectA, circularReplacer) === JSON.stringify(objectB, circularReplacer);\n}\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, VNode, markRaw } from 'vue';\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\">\nimport { defineComponent, VNode, markRaw } from 'vue';\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\">\nimport { defineComponent } from 'vue';\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","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 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)) return;\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\">\nimport { defineComponent, VNode, markRaw } from 'vue';\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\">\nimport { defineComponent, VNode, markRaw } from 'vue';\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\">\nimport { defineComponent } from 'vue';\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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"}
|
|
@@ -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: 14.
|
|
28
|
+
* Version: 14.3.0-next-3fa6b18-20240410 (built at Wed Apr 10 2024 07:39:08 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
|
|
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,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 r(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||"default");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+""}function i(t){return i="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},i(t)}function s(t,e,n){return(e=r(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var a=Symbol("unassigned");function c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function u(t){var e=n.hooks.getRegistered(),o={};for(var r in Object.assign(o,n.DefaultSettings),o)o[r]={default:a};for(var i=0;e.length>i;i++)o[e[i]]={default:a};return o.settings={default:a},"HotTable"===t&&(o.id={type:String,default:"hot-".concat(Math.random().toString(36).substring(5))}),o}function l(t){var e={},n=t.settings;if(n!==a)for(var o in n)c(n,o)&&n[o]!==a&&(e[o]=n[o]);for(var r in t)c(t,r)&&"settings"!==r&&t[r]!==a&&(e[r]=t[r]);return e}function h(t,e){var n=l(t),o=t.settings?t.settings:n,r=t.settings?n:null,i={};for(var s in o)!c(o,s)||void 0===o[s]||e&&"data"!==s&&f(e[s],o[s])||(i[s]=o[s]);for(var a in r)!c(r,a)||"id"===a||"settings"===a||void 0===r[a]||e&&"data"!==a&&f(e[a],r[a])||(i[a]=r[a]);return i}function f(t,e){var n=function(t){var e,n=(e=new WeakSet,function(t,n){if("object"===i(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:i(t)===i(e)&&n(t)===n(e)}var d=e.defineComponent({name:"HotTable",props:u("HotTable"),provide:function(){return{columnsCache:this.columnsCache}},watch:{$props:{handler:function(t){var e=h(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=h(this.$props);t.columns=this.columnSettings?this.columnSettings:t.columns,this.hotInstance=e.markRaw(new n.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:"14.3.0-next-3fa6b18-20240410"}),p=["id"];d.render=function(t,n,o,r,i,s){return e.openBlock(),e.createElementBlock("div",{id:t.id},[e.renderSlot(t.$slots,"default")],8,p)},d.__file="src/HotTable.vue";var m=e.defineComponent({name:"HotColumn",props:u("HotColumn"),inject:["columnsCache"],methods:{createColumnSettings:function(){var t=l(this.$props),e=function(t){for(var e=1;arguments.length>e;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?o(Object(n),!0).forEach((function(e){s(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o(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}});m.__file="src/HotColumn.vue",t.HotColumn=m,t.HotTable=d,t.default=d,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 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)) return;\n seen.add(value);\n }\n\n return value;\n };\n }());\n\n return JSON.stringify(objectA, circularReplacer) === JSON.stringify(objectB, circularReplacer);\n}\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, VNode, markRaw } from 'vue';\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\">\nimport { defineComponent, VNode, markRaw } from 'vue';\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\">\nimport { defineComponent } from 'vue';\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","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","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 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)) return;\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\">\nimport { defineComponent, VNode, markRaw } from 'vue';\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\">\nimport { defineComponent, VNode, markRaw } from 'vue';\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\">\nimport { defineComponent } from 'vue';\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","createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","_objectSpread","renderer","editor","set","unmounted"],"mappings":"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"}
|
package/es/vue-handsontable.mjs
CHANGED
|
@@ -34,7 +34,7 @@ function _toPrimitive(t, r) {
|
|
|
34
34
|
}
|
|
35
35
|
function _toPropertyKey(t) {
|
|
36
36
|
var i = _toPrimitive(t, "string");
|
|
37
|
-
return "symbol" == typeof i ? i :
|
|
37
|
+
return "symbol" == typeof i ? i : i + "";
|
|
38
38
|
}
|
|
39
39
|
function _typeof(o) {
|
|
40
40
|
"@babel/helpers - typeof";
|
|
@@ -168,20 +168,29 @@ function prepareSettings(props, currentSettings) {
|
|
|
168
168
|
* @returns {boolean} `true` if they're the same, `false` otherwise.
|
|
169
169
|
*/
|
|
170
170
|
function simpleEqual(objectA, objectB) {
|
|
171
|
-
var
|
|
172
|
-
var
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
if (
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
171
|
+
var stringifyToJSON = function stringifyToJSON(val) {
|
|
172
|
+
var circularReplacer = function () {
|
|
173
|
+
var seen = new WeakSet();
|
|
174
|
+
return function (key, value) {
|
|
175
|
+
if (_typeof(value) === 'object' && value !== null) {
|
|
176
|
+
if (seen.has(value)) return;
|
|
177
|
+
seen.add(value);
|
|
178
|
+
}
|
|
179
|
+
return value;
|
|
180
|
+
};
|
|
181
|
+
}();
|
|
182
|
+
return JSON.stringify(val, circularReplacer);
|
|
183
|
+
};
|
|
184
|
+
if (typeof objectA === 'function' && typeof objectB === 'function') {
|
|
185
|
+
return objectA.toString() === objectB.toString();
|
|
186
|
+
} else if (_typeof(objectA) !== _typeof(objectB)) {
|
|
187
|
+
return false;
|
|
188
|
+
} else {
|
|
189
|
+
return stringifyToJSON(objectA) === stringifyToJSON(objectB);
|
|
190
|
+
}
|
|
182
191
|
}
|
|
183
192
|
|
|
184
|
-
var version="14.
|
|
193
|
+
var version="14.3.0-next-3fa6b18-20240410";
|
|
185
194
|
|
|
186
195
|
var HotTable = defineComponent({
|
|
187
196
|
name: 'HotTable',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@handsontable/vue3",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.3.0-next-3fa6b18-20240410",
|
|
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",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"url": "https://github.com/handsontable/handsontable/issues"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"handsontable": "
|
|
56
|
+
"handsontable": "14.3.0-next-3fa6b18-20240410",
|
|
57
57
|
"vue": "^3.2.22"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"babel-core": "^7.0.0-bridge.0",
|
|
73
73
|
"cross-env": "^7.0.3",
|
|
74
74
|
"eslint-plugin-vue": "^8.0.3",
|
|
75
|
-
"handsontable": "
|
|
75
|
+
"handsontable": "14.3.0-next-3fa6b18-20240410",
|
|
76
76
|
"jest": "^26.6.3",
|
|
77
77
|
"rimraf": "^3.0.2",
|
|
78
78
|
"rollup": "^2.0.0",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"rollup-plugin-node-resolve": "^5.0.2",
|
|
84
84
|
"rollup-plugin-replace": "^2.2.0",
|
|
85
85
|
"rollup-plugin-terser": "^7.0.2",
|
|
86
|
-
"rollup-plugin-typescript2": "^0.
|
|
86
|
+
"rollup-plugin-typescript2": "^0.36.0",
|
|
87
87
|
"rollup-plugin-vue": "^6.0.0",
|
|
88
88
|
"ts-jest": "^26.5.6",
|
|
89
89
|
"typescript": "^4.0.0",
|
|
@@ -94,10 +94,10 @@
|
|
|
94
94
|
"scripts": {
|
|
95
95
|
"lint": "eslint --ext .js,.ts,.vue src test",
|
|
96
96
|
"build": "npm run clean && npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:min",
|
|
97
|
-
"build:commonjs": "cross-env NODE_ENV=cjs rollup -c",
|
|
98
|
-
"build:umd": "cross-env NODE_ENV=umd rollup -c",
|
|
99
|
-
"build:es": "cross-env NODE_ENV=es rollup -c",
|
|
100
|
-
"build:min": "cross-env NODE_ENV=min rollup -c",
|
|
97
|
+
"build:commonjs": "cross-env NODE_ENV=cjs rollup -c --bundleConfigAsCjs",
|
|
98
|
+
"build:umd": "cross-env NODE_ENV=umd rollup -c --bundleConfigAsCjs",
|
|
99
|
+
"build:es": "cross-env NODE_ENV=es rollup -c --bundleConfigAsCjs",
|
|
100
|
+
"build:min": "cross-env NODE_ENV=min rollup -c --bundleConfigAsCjs",
|
|
101
101
|
"build:esDts": "cross-env NODE_ENV=esDts rollup -c && rimraf ./buildTemp/",
|
|
102
102
|
"watch:commonjs": "cross-env NODE_ENV=cjs rollup -c --watch",
|
|
103
103
|
"watch:es": "cross-env NODE_ENV=es rollup -c --watch",
|