@handsontable/vue3 12.0.1 → 12.1.2

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.
package/LICENSE.txt CHANGED
@@ -1,28 +1,25 @@
1
1
  Copyright (c) HANDSONCODE sp. z o. o.
2
2
 
3
- HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o.,
4
- a Polish corporation, based in Gdynia, Poland, at 96/98 Aleja Zwycięstwa,
5
- registered with the National Court Register under number 538651,
6
- EU tax ID number: PL5862294002, share capital: PLN 62,800.00.
3
+ HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., a Polish corporation based in
4
+ Gdynia, Poland, at Aleja Zwycięstwa 96-98, registered by the District Court in Gdansk under number
5
+ 538651, EU tax ID number: PL5862294002, share capital: PLN 62,800.00.
7
6
 
8
- This software is protected by applicable copyright laws, including
9
- international treaties, and dual-licensed – depending on whether
10
- your use is intended for or may result in commercial advantage
11
- or monetary compensation (commercial purposes), or not.
7
+ This software is protected by applicable copyright laws, including international treaties, and dual-
8
+ licensed – depending on whether your use for commercial purposes, meaning intended for or
9
+ resulting in commercial advantage or monetary compensation, or not.
12
10
 
13
- If your use involves only such purposes as research, private study,
14
- evaluation and the like, you agree to be bound by the terms included
15
- in the "handsontable-non-commercial-license.pdf" file, available
16
- in the main directory of this software repository.
11
+ If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing
12
+ the suitability, performance, and usefulness of this software outside the production environment,
13
+ you agree to be bound by the terms included in the "handsontable-non-commercial-license.pdf" file.
17
14
 
18
- By installing, copying, or otherwise using this software for
19
- commercial purposes, you agree to be bound by the terms included
20
- in the "handsontable-general-terms.pdf" file, available in the main
21
- directory of this software repository.
15
+ Your use of this software for commercial purposes is subject to the terms included in an applicable
16
+ license agreement.
22
17
 
23
- HANDSONCODE PROVIDES THIS SOFTWARE ON AN "AS IS" BASIS,
24
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND. IN NO EVENT
25
- AND UNDER NO LEGAL THEORY, SHALL HANDSONCODE BE LIABLE
26
- TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL,
27
- INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING
28
- FROM USE OR INABILITY TO USE THIS SOFTWARE.
18
+ In any case, you must not make any such use of this software as to develop software which may be
19
+ considered competitive with this software.
20
+
21
+ UNLESS EXPRESSLY AGREED OTHERWISE, HANDSONCODE PROVIDES THIS SOFTWARE ON AN "AS IS"
22
+ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO
23
+ LEGAL THEORY, SHALL HANDSONCODE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,
24
+ INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
25
+ USE OR INABILITY TO USE THIS SOFTWARE.
@@ -135,7 +135,7 @@ function simpleEqual(objectA, objectB) {
135
135
  return JSON.stringify(objectA) === JSON.stringify(objectB);
136
136
  }
137
137
 
138
- var version="12.0.1";
138
+ var version="12.1.2";
139
139
 
140
140
  var HotTable = vue.defineComponent({
141
141
  name: 'HotTable',
@@ -1,34 +1,31 @@
1
1
  /*!
2
2
  * Copyright (c) HANDSONCODE sp. z o. o.
3
3
  *
4
- * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o.,
5
- * a Polish corporation, based in Gdynia, Poland, at 96/98 Aleja Zwycięstwa,
6
- * registered with the National Court Register under number 538651,
7
- * EU tax ID number: PL5862294002, share capital: PLN 62,800.00.
4
+ * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., a Polish corporation based in
5
+ * Gdynia, Poland, at Aleja Zwycięstwa 96-98, registered by the District Court in Gdansk under number
6
+ * 538651, EU tax ID number: PL5862294002, share capital: PLN 62,800.00.
8
7
  *
9
- * This software is protected by applicable copyright laws, including
10
- * international treaties, and dual-licensed – depending on whether
11
- * your use is intended for or may result in commercial advantage
12
- * or monetary compensation (commercial purposes), or not.
8
+ * This software is protected by applicable copyright laws, including international treaties, and dual-
9
+ * licensed – depending on whether your use for commercial purposes, meaning intended for or
10
+ * resulting in commercial advantage or monetary compensation, or not.
13
11
  *
14
- * If your use involves only such purposes as research, private study,
15
- * evaluation and the like, you agree to be bound by the terms included
16
- * in the "handsontable-non-commercial-license.pdf" file, available
17
- * in the main directory of this software repository.
12
+ * If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing
13
+ * the suitability, performance, and usefulness of this software outside the production environment,
14
+ * you agree to be bound by the terms included in the "handsontable-non-commercial-license.pdf" file.
18
15
  *
19
- * By installing, copying, or otherwise using this software for
20
- * commercial purposes, you agree to be bound by the terms included
21
- * in the "handsontable-general-terms.pdf" file, available in the main
22
- * directory of this software repository.
16
+ * Your use of this software for commercial purposes is subject to the terms included in an applicable
17
+ * license agreement.
23
18
  *
24
- * HANDSONCODE PROVIDES THIS SOFTWARE ON AN "AS IS" BASIS,
25
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND. IN NO EVENT
26
- * AND UNDER NO LEGAL THEORY, SHALL HANDSONCODE BE LIABLE
27
- * TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL,
28
- * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING
29
- * FROM USE OR INABILITY TO USE THIS SOFTWARE.
19
+ * In any case, you must not make any such use of this software as to develop software which may be
20
+ * considered competitive with this software.
30
21
  *
31
- * Version: 12.0.1 (built at Fri May 13 2022 13:53:20 GMT+0200 (Central European Summer Time))
22
+ * UNLESS EXPRESSLY AGREED OTHERWISE, HANDSONCODE PROVIDES THIS SOFTWARE ON AN "AS IS"
23
+ * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO
24
+ * LEGAL THEORY, SHALL HANDSONCODE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,
25
+ * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
+ * USE OR INABILITY TO USE THIS SOFTWARE.
27
+ *
28
+ * Version: 12.1.2 (built at Fri Jul 08 2022 09:09:51 GMT+0200 (Central European Summer Time))
32
29
  */
33
30
  (function (global, factory) {
34
31
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('handsontable/base')) :
@@ -166,7 +163,7 @@ function simpleEqual(objectA, objectB) {
166
163
  return JSON.stringify(objectA) === JSON.stringify(objectB);
167
164
  }
168
165
 
169
- var version="12.0.1";
166
+ var version="12.1.2";
170
167
 
171
168
  var HotTable = vue.defineComponent({
172
169
  name: 'HotTable',
@@ -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 return JSON.stringify(objectA) === JSON.stringify(objectB);\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","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","newSettings","simpleEqual","objectA","objectB","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","getSourceData","rowsToRemove","columnsToRemove","indexMapperRowCount","rowIndexMapper","getNumberOfIndexes","indexMapperColumnCount","r","push","columnIndexMapper","c","batch","removeIndexes","insertIndexes","getColumnSettings","Array","from","values","mounted","beforeUnmount","destroy","version","packageJson","_createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","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 return JSON.stringify(objectA) === JSON.stringify(objectB);\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","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","newSettings","simpleEqual","objectA","objectB","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","getSourceData","rowsToRemove","columnsToRemove","indexMapperRowCount","rowIndexMapper","getNumberOfIndexes","indexMapperColumnCount","r","push","columnIndexMapper","c","batch","removeIndexes","insertIndexes","getColumnSettings","Array","from","values","mounted","beforeUnmount","destroy","version","packageJson","_createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","renderer","editor","set","unmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAMA,oBAAoB,GAAGC,MAAM,CAAC,YAAD,CAAnC,CAAA;AAEA;;AAEG;;AACI,IAAMC,qBAAqB,GAAG,+EAAA,GACnC,iBADK,CAAA;AAGP;;;;;;AAMG;;AACa,SAAAC,cAAA,CAAeC,MAAf,EAAgCC,GAAhC,EAA2C;EACzD,OAAOC,MAAM,CAACC,SAAP,CAAiBJ,cAAjB,CAAgCK,IAAhC,CAAqCJ,MAArC,EAA6CC,GAA7C,CAAP,CAAA;AACD,CAAA;AAED;;;;;AAKG;;AACG,SAAUI,WAAV,CAAsBC,MAAtB,EAAsD;AAC1D,EAAA,IAAMC,eAAe,GAAGC,gCAAY,CAACC,KAAb,CAAmBC,aAAnB,EAAxB,CAAA;EACA,IAAMC,UAAU,GAA4B,EAA5C,CAAA;EAEAT,MAAM,CAACU,MAAP,CAAcD,UAAd,EAA0BH,gCAAY,CAACK,eAAvC,CAAA,CAJ0D;;AAO1D,EAAA,KAAK,IAAMC,IAAX,IAAmBH,UAAnB,EAA+B;IAC7BA,UAAU,CAACG,IAAD,CAAV,GAAmB;MACjB,SAASlB,EAAAA,oBAAAA;KADX,CAAA;AAGD,GAAA;;AAED,EAAA,KAAK,IAAImB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,eAAe,CAACS,MAApC,EAA4CD,CAAC,EAA7C,EAAiD;AAC/CJ,IAAAA,UAAU,CAACJ,eAAe,CAACQ,CAAD,CAAhB,CAAV,GAAiC;MAC/B,SAASnB,EAAAA,oBAAAA;KADX,CAAA;AAGD,GAAA;;EAEDe,UAAU,CAACM,QAAX,GAAsB;IACpB,SAASrB,EAAAA,oBAAAA;GADX,CAAA;;EAIA,IAAIU,MAAM,KAAK,UAAf,EAA2B;IACzBK,UAAU,CAACO,EAAX,GAAgB;AACdC,MAAAA,IAAI,EAAEC,MADQ;MAEd,SAAgBC,EAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAI,CAACC,MAAL,EAAcC,CAAAA,QAAd,CAAuB,EAAvB,CAA2BC,CAAAA,SAA3B,CAAqC,CAArC,CAAhB,CAAA;KAFF,CAAA;AAID,GAAA;;AAED,EAAA,OAAOb,UAAP,CAAA;AACD,CAAA;AAED;;;;;AAKG;;AACG,SAAUc,iBAAV,CAA4BC,KAA5B,EAAiC;EACrC,IAAMC,aAAa,GAA4B,EAA/C,CAAA;AACA,EAAA,IAAMC,kBAAkB,GAAGF,KAAK,CAACT,QAAjC,CAAA;;EAEA,IAAIW,kBAAkB,KAAKhC,oBAA3B,EAAiD;AAC/C;AACA,IAAA,KAAK,IAAMiC,QAAX,IAAuBD,kBAAvB,EAA2C;AACzC,MAAA,IAAI7B,cAAc,CAAC6B,kBAAD,EAAqBC,QAArB,CAAd,IAAgDD,kBAAkB,CAACC,QAAD,CAAlB,KAAiCjC,oBAArF,EAA2G;AACzG+B,QAAAA,aAAa,CAACE,QAAD,CAAb,GAA0BD,kBAAkB,CAACC,QAAD,CAA5C,CAAA;AACD,OAAA;AACF,KAAA;AACF,GAXoC;;;AAcrC,EAAA,KAAK,IAAMA,SAAX,IAAuBH,KAAvB,EAA8B;AAC5B,IAAA,IAAI3B,cAAc,CAAC2B,KAAD,EAAQG,SAAR,CAAd,IAAmCA,SAAQ,KAAK,UAAhD,IAA8DH,KAAK,CAACG,SAAD,CAAL,KAAoBjC,oBAAtF,EAA4G;AAC1G+B,MAAAA,aAAa,CAACE,SAAD,CAAb,GAA0BH,KAAK,CAACG,SAAD,CAA/B,CAAA;AACD,KAAA;AACF,GAAA;;AAED,EAAA,OAAOF,aAAP,CAAA;AACD,CAAA;AAED;;;;;;AAMG;;AACa,SAAAG,eAAA,CAAgBJ,KAAhB,EAAsCK,eAAtC,EAAiF;AAC/F,EAAA,IAAMC,aAAa,GAA4BP,iBAAiB,CAACC,KAAD,CAAhE,CAAA;EACA,IAAMO,kBAAkB,GAA8BP,KAAK,CAACT,QAAN,GAAiBS,KAAK,CAACT,QAAvB,GAAkCe,aAAxF,CAAA;EACA,IAAME,4BAA4B,GAA8BR,KAAK,CAACT,QAAN,GAAiBe,aAAjB,GAAiC,IAAjG,CAAA;AACA,EAAA,IAAMG,WAAW,GAA8B,EAA/C,CAJ+F;;AAO/F,EAAA,KAAK,IAAMlC,GAAX,IAAkBgC,kBAAlB,EAAsC;AACpC,IAAA,IACElC,cAAc,CAACkC,kBAAD,EAAqBhC,GAArB,CAAd,IACAgC,kBAAkB,CAAChC,GAAD,CAAlB,KAA4B,KAAK,CADjC,KAEE8B,eAAe,IAAI9B,GAAG,KAAK,MAA5B,GAAsC,CAACmC,WAAW,CAACL,eAAe,CAAC9B,GAAD,CAAhB,EAAuBgC,kBAAkB,CAAChC,GAAD,CAAzC,CAAlD,GAAoG,IAFrG,CADF,EAIE;AACAkC,MAAAA,WAAW,CAAClC,GAAD,CAAX,GAAmBgC,kBAAkB,CAAChC,GAAD,CAArC,CAAA;AACD,KAAA;AACF,GAf8F;;;AAkB/F,EAAA,KAAK,IAAMA,IAAX,IAAkBiC,4BAAlB,EAAgD;IAC9C,IACEnC,cAAc,CAACmC,4BAAD,EAA+BjC,IAA/B,CAAd,IACAA,IAAG,KAAK,IADR,IAEAA,IAAG,KAAK,UAFR,IAGAiC,4BAA4B,CAACjC,IAAD,CAA5B,KAAsC,KAAK,CAH3C,KAIE8B,eAAe,IAAI9B,IAAG,KAAK,MAA5B,GACG,CAACmC,WAAW,CAACL,eAAe,CAAC9B,IAAD,CAAhB,EAAuBiC,4BAA4B,CAACjC,IAAD,CAAnD,CADf,GAC2E,IAL5E,CADF,EAOE;AACAkC,MAAAA,WAAW,CAAClC,IAAD,CAAX,GAAmBiC,4BAA4B,CAACjC,IAAD,CAA/C,CAAA;AACD,KAAA;AACF,GAAA;;AAED,EAAA,OAAOkC,WAAP,CAAA;AACD,CAAA;AAED;;;;;;;;AAQG;;AACH,SAASC,WAAT,CAAqBC,OAArB,EAA8BC,OAA9B,EAAqC;EACnC,OAAOC,IAAI,CAACC,SAAL,CAAeH,OAAf,CAA4BE,KAAAA,IAAI,CAACC,SAAL,CAAeF,OAAf,CAAnC,CAAA;AACD;;;;AC3HKG,IAAAA,QAAO,GAAIC,mBAAe,CAAC;AAC/BC,EAAAA,IAAI,EAAE,UADyB;AAE/BjB,EAAAA,KAAK,EAAErB,WAAW,CAAC,UAAD,CAFa;AAG/BuC,EAAAA,OAH+B,EAGxB,SAAA,OAAA,GAAA;IACL,OAAO;AACLC,MAAAA,YAAY,EAAE,IAAKA,CAAAA,YAAAA;KADrB,CAAA;GAJ6B;AAQ/BC,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE;MACNC,OADM,EAAA,SAAA,OAAA,CACEtB,KADF,EACO;AACX,QAAA,IAAMT,QAAO,GAAIa,eAAe,CAACJ,KAAD,EAAQ,IAAKuB,CAAAA,WAAL,GAAmB,IAAA,CAAKA,WAAL,CAAiBC,WAAjB,EAAnB,GAAoD,KAAK,CAAjE,CAAhC,CAAA;;QAEA,IAAI,CAAC,KAAKD,WAAN,IAAqBhC,QAAS,KAAI,KAAK,CAA3C,EAA8C;AAC5C,UAAA,OAAA;AACF,SAAA;;QAEA,IAAIA,QAAQ,CAACkC,IAAb,EAAmB;UACjB,IACE,IAAA,CAAKF,WAAL,CAAiBG,2BAAjB,MAEE,CAAC,IAAA,CAAKH,WAAL,CAAiBG,2BAAjB,EAAD,IACA,IAAA,CAAKH,WAAL,CAAiBI,eAAjB,OAAuC,IAAKC,CAAAA,SAAL,CAAeC,oBAJ1D,EAME;AACA;YACA,IAAKC,CAAAA,mBAAL,GAFA;;YAKA,OAAOvC,QAAQ,CAACkC,IAAhB,CAAA;AACF,WAAA;AACF,SArBW;;;AAwBX,QAAA,IAAIjD,MAAM,CAACuD,IAAP,CAAYxC,QAAZ,CAAA,CAAsBD,MAA1B,EAAkC;AAChC,UAAA,IAAA,CAAKiC,WAAL,CAAiBS,cAAjB,CAAgCzC,QAAhC,CAAA,CAAA;AAEA,SAHF,MAGO;UACL,IAAKgC,CAAAA,WAAL,CAAiBU,MAAjB,EAAA,CAAA;AACF,SAAA;;QAEA,IAAKL,CAAAA,SAAL,CAAeC,oBAAf,GAAsC,KAAKN,WAAL,CAAiBI,eAAjB,EAAtC,CAAA;OAhCI;AAkCNO,MAAAA,IAAI,EAAE,IAlCA;AAmCNC,MAAAA,SAAS,EAAE,IAAA;AAnCL,KAAA;GATqB;AA+C/BV,EAAAA,IA/C+B,EA+C3B,SAAA,IAAA,GAAA;IACF,OAAO;AACL;AACAW,MAAAA,aAAa,EAAE,IAFV;;AAGL;AACAR,MAAAA,SAAS,EAAE;AACTC,QAAAA,oBAAoB,EAAE,IAAA;OALnB;AAOLQ,MAAAA,cAAc,EAAE,IAPX;MAQLlB,YAAY,EAAE,IAAImB,GAAJ,EART;;AASL,MAAA,IAAIf,WAAJ,GAAe;AACb,QAAA,IAAI,CAAC,IAAA,CAAKa,aAAN,IAAwB,IAAKA,CAAAA,aAAL,IAAsB,CAAC,IAAKA,CAAAA,aAAL,CAAmBG,WAAtE,EAAoF;AAElF;AACA,UAAA,OAAO,KAAKH,aAAZ,CAAA;AAEA,SALF,MAKO;AACL;UACAI,OAAO,CAACC,IAAR,CAAarE,qBAAb,CAAA,CAAA;AAEA,UAAA,OAAO,IAAP,CAAA;AACF,SAAA;OApBG;;MAsBL,IAAImD,WAAJ,CAAgBA,WAAhB,EAAyC;QACvC,IAAKa,CAAAA,aAAL,GAAqBb,WAArB,CAAA;AACD,OAAA;;KAxBH,CAAA;GAhD6B;AA2E/BmB,EAAAA,OAAO,EAAE;AACP;;AAEE;AACFC,IAAAA,OAJO,EAIA,SAAA,OAAA,GAAA;AACL,MAAA,IAAMlC,WAAU,GAAIL,eAAe,CAAC,IAAA,CAAKiB,MAAN,CAAnC,CAAA;MAEAZ,WAAW,CAACmC,OAAZ,GAAsB,IAAKP,CAAAA,cAAL,GAAsB,IAAA,CAAKA,cAA3B,GAA4C5B,WAAW,CAACmC,OAA9E,CAAA;AAEA,MAAA,IAAA,CAAKrB,WAAL,GAAmBsB,WAAO,CAAe,IAAI/D,gCAAY,CAACgE,IAAjB,CAAsB,IAAKC,CAAAA,GAA3B,EAAgCtC,WAAhC,CAAf,CAA1B,CAAA;MACA,IAAKc,CAAAA,WAAL,CAAiByB,IAAjB,EAAA,CAAA;MAEA,IAAKpB,CAAAA,SAAL,CAAeC,oBAAf,GAAsC,KAAKN,WAAL,CAAiBI,eAAjB,EAAtC,CAAA;KAZK;AAePG,IAAAA,mBAfO,EAeY,SAAA,mBAAA,GAAA;AAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;MACjB,IAAI,CAAC,IAAKP,CAAAA,WAAV,EAAuB;AACrB,QAAA,OAAA;AACF,OAAA;;AAEA,MAAA,IAAME,IAAI,GAA+B,IAAA,CAAKF,WAAL,CAAiB0B,aAAjB,EAAzC,CAAA;MACA,IAAMC,YAAY,GAAa,EAA/B,CAAA;MACA,IAAMC,eAAe,GAAa,EAAlC,CAAA;MACA,IAAMC,mBAAoB,GAAE,IAAK7B,CAAAA,WAAL,CAAiB8B,cAAjB,CAAgCC,kBAAhC,EAA5B,CAAA;AACA,MAAA,IAAM5B,8BAA8B,IAAA,CAAKH,WAAL,CAAiBG,2BAAjB,EAApC,CAAA;MACA,IAAI6B,sBAAuB,GAAE,CAA7B,CAAA;;AAEA,MAAA,IAAI9B,IAAG,IAAKA,IAAI,CAACnC,MAAL,KAAgB8D,mBAA5B,EAAiD;AAC/C,QAAA,IAAI3B,IAAI,CAACnC,MAAL,GAAc8D,mBAAlB,EAAuC;AACrC,UAAA,KAAK,IAAII,CAAA,GAAI/B,IAAI,CAACnC,MAAlB,EAA0BkE,CAAE,GAAEJ,mBAA9B,EAAmDI,CAAC,EAApD,EAAwD;YACtDN,YAAY,CAACO,IAAb,CAAkBD,CAAlB,CAAA,CAAA;AACF,WAAA;AACF,SAAA;AACF,OAAA;;AAEA,MAAA,IAAI9B,2BAAJ,EAAiC;AAAA,QAAA,IAAA,MAAA,CAAA;;AAC/B6B,QAAAA,yBAAyB,IAAKhC,CAAAA,WAAL,CAAiBmC,iBAAjB,CAAmCJ,kBAAnC,EAAzB,CAAA;;AAEA,QAAA,IAAI7B,IAAK,IAAGA,IAAI,CAAC,CAAD,CAAZ,IAAmB,CAAA,CAAA,MAAA,GAAAA,IAAI,CAAC,CAAD,CAAJ,MAAA,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAASnC,MAAT,MAAoBiE,sBAA3C,EAAmE;UACjE,IAAI9B,IAAI,CAAC,CAAD,CAAJ,CAAQnC,MAAR,GAAiBiE,sBAArB,EAA6C;AAC3C,YAAA,KAAK,IAAII,CAAA,GAAIlC,IAAI,CAAC,CAAD,CAAJ,CAAQnC,MAArB,EAA6BqE,CAAE,GAAEJ,sBAAjC,EAAyDI,CAAC,EAA1D,EAA8D;cAC5DR,eAAe,CAACM,IAAhB,CAAqBE,CAArB,CAAA,CAAA;AACF,aAAA;AACF,WAAA;AACF,SAAA;AACF,OAAA;;AAEA,MAAA,IAAA,CAAKpC,WAAL,CAAiBqC,KAAjB,CAAuB,YAAM;AAC3B,QAAA,IAAIV,YAAY,CAAC5D,MAAb,GAAsB,CAA1B,EAA6B;AAC3B,UAAA,KAAI,CAACiC,WAAL,CAAiB8B,cAAjB,CAAgCQ,aAAhC,CAA8CX,YAA9C,CAAA,CAAA;AAEA,SAHF,MAGO;AACL,UAAA,KAAI,CAAC3B,WAAL,CAAiB8B,cAAjB,CACGS,aADH,CACiBV,mBAAkB,GAAI,CADvC,EAC0C3B,IAAI,CAACnC,MAAL,GAAc8D,mBADxD,CAAA,CAAA;AAEF,SAAA;;AAEA,QAAA,IAAI1B,2BAA0B,IAAKD,IAAI,CAACnC,MAAL,KAAgB,CAAnD,EAAsD;AACpD,UAAA,IAAI6D,eAAe,CAAC7D,MAAhB,GAAyB,CAA7B,EAAgC;AAC9B,YAAA,KAAI,CAACiC,WAAL,CAAiBmC,iBAAjB,CAAmCG,aAAnC,CAAiDV,eAAjD,CAAA,CAAA;AAEA,WAHF,MAGO;AACL,YAAA,KAAI,CAAC5B,WAAL,CAAiBmC,iBAAjB,CACGI,aADH,CACiBP,yBAAyB,CAD1C,EAC6C9B,IAAI,CAAC,CAAD,CAAJ,CAAQnC,MAAR,GAAiBiE,sBAD9D,CAAA,CAAA;AAEF,WAAA;AACF,SAAA;OAjBF,CAAA,CAAA;KA/CK;;AAoEP;;;;AAIE;AACFQ,IAAAA,iBAzEO,EAyEU,SAAA,iBAAA,GAAA;MACf,IAAM1B,cAAc,GAAoB2B,KAAK,CAACC,IAAN,CAAW,IAAA,CAAK9C,YAAL,CAAkB+C,MAAlB,EAAX,CAAxC,CAAA;AAEA,MAAA,OAAO7B,cAAc,CAAC/C,MAAf,GAAwB+C,cAAxB,GAAyC,KAAK,CAArD,CAAA;AACD,KAAA;GAxJ4B;AA0J/B8B,EAAAA,OA1J+B,EA0JxB,SAAA,OAAA,GAAA;AACL,IAAA,IAAA,CAAK9B,cAAL,GAAsB,IAAK0B,CAAAA,iBAAL,EAAtB,CAAA;AACA,IAAA,IAAA,CAAKpB,OAAL,EAAA,CAAA;GA5J6B;AA8J/ByB,EAAAA,aA9J+B,EA8JlB,SAAA,aAAA,GAAA;IACX,IAAI,IAAA,CAAK7C,WAAT,EAAsB;MACpB,IAAKA,CAAAA,WAAL,CAAiB8C,OAAjB,EAAA,CAAA;AACF,KAAA;GAjK6B;EAmK/BC,OAAO,EAAGC,OAA+CD;AAnK1B,CAAD;;;;0BClB9BE,sBAEK,CAAA,KAAA,EAAA;IAFChF,EAAE,EAAEiF,IAAE,CAAAjF,EAAAA;GAEP,EAFO,CACVkF,cAAY,CAAAD,IAAA,CAAAE,MAAA,EAAA,SAAA,CADF,CAEP;;AAAA,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIDC,IAAAA,SAAU,GAAE5D,mBAAe,CAAC;AAChCC,EAAAA,IAAI,EAAE,WAD0B;AAEhCjB,EAAAA,KAAK,EAAErB,WAAW,CAAC,WAAD,CAFc;EAGhCkG,MAAM,EAAE,CAAC,cAAD,CAHwB;AAIhCnC,EAAAA,OAAO,EAAE;AACP;;;AAGE;AACFoC,IAAAA,oBALO,EAKa,SAAA,oBAAA,GAAA;AAClB,MAAA,IAAMxE,gBAAgBP,iBAAiB,CAAC,IAAA,CAAKsB,MAAN,CAAvC,CAAA;;MACA,IAAMgB,cAAa,GAAS/B,cAAAA,CAAAA,EAAAA,EAAAA,aAAT,CAAnB,CAAA;;MAEA,IAAIA,aAAa,CAACyE,QAAlB,EAA4B;AAC1B1C,QAAAA,cAAc,CAAC0C,QAAf,GAA0BzE,aAAa,CAACyE,QAAxC,CAAA;AACF,OAAA;;MAEA,IAAIzE,aAAa,CAAC0E,MAAlB,EAA0B;AACxB3C,QAAAA,cAAc,CAAC2C,MAAf,GAAwB1E,aAAa,CAAC0E,MAAtC,CAAA;AACF,OAAA;;AAEA,MAAA,IAAA,CAAK7D,YAAL,CAAkB8D,GAAlB,CAAsB,IAAtB,EAA4B5C,cAA5B,CAAA,CAAA;AACF,KAAA;GAtB8B;AAwBhC8B,EAAAA,OAxBgC,EAwBzB,SAAA,OAAA,GAAA;AACL,IAAA,IAAA,CAAKW,oBAAL,EAAA,CAAA;GAzB8B;AA2BhCI,EAAAA,SA3BgC,EA2BvB,SAAA,SAAA,GAAA;IACP,IAAK/D,CAAAA,YAAL,WAAyB,IAAzB,CAAA,CAAA;GA5B8B;AA8BhCc,EAAAA,MA9BgC,EA8B1B,SAAA,MAAA,GAAA;AACJ,IAAA,OAAO,IAAP,CAAA;AACF,GAAA;AAhCgC,CAAD;;;;;;;;;;;;;;"}
@@ -1,34 +1,31 @@
1
1
  /*!
2
2
  * Copyright (c) HANDSONCODE sp. z o. o.
3
3
  *
4
- * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o.,
5
- * a Polish corporation, based in Gdynia, Poland, at 96/98 Aleja Zwycięstwa,
6
- * registered with the National Court Register under number 538651,
7
- * EU tax ID number: PL5862294002, share capital: PLN 62,800.00.
4
+ * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., a Polish corporation based in
5
+ * Gdynia, Poland, at Aleja Zwycięstwa 96-98, registered by the District Court in Gdansk under number
6
+ * 538651, EU tax ID number: PL5862294002, share capital: PLN 62,800.00.
8
7
  *
9
- * This software is protected by applicable copyright laws, including
10
- * international treaties, and dual-licensed – depending on whether
11
- * your use is intended for or may result in commercial advantage
12
- * or monetary compensation (commercial purposes), or not.
8
+ * This software is protected by applicable copyright laws, including international treaties, and dual-
9
+ * licensed – depending on whether your use for commercial purposes, meaning intended for or
10
+ * resulting in commercial advantage or monetary compensation, or not.
13
11
  *
14
- * If your use involves only such purposes as research, private study,
15
- * evaluation and the like, you agree to be bound by the terms included
16
- * in the "handsontable-non-commercial-license.pdf" file, available
17
- * in the main directory of this software repository.
12
+ * If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing
13
+ * the suitability, performance, and usefulness of this software outside the production environment,
14
+ * you agree to be bound by the terms included in the "handsontable-non-commercial-license.pdf" file.
18
15
  *
19
- * By installing, copying, or otherwise using this software for
20
- * commercial purposes, you agree to be bound by the terms included
21
- * in the "handsontable-general-terms.pdf" file, available in the main
22
- * directory of this software repository.
16
+ * Your use of this software for commercial purposes is subject to the terms included in an applicable
17
+ * license agreement.
23
18
  *
24
- * HANDSONCODE PROVIDES THIS SOFTWARE ON AN "AS IS" BASIS,
25
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND. IN NO EVENT
26
- * AND UNDER NO LEGAL THEORY, SHALL HANDSONCODE BE LIABLE
27
- * TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL,
28
- * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING
29
- * FROM USE OR INABILITY TO USE THIS SOFTWARE.
19
+ * In any case, you must not make any such use of this software as to develop software which may be
20
+ * considered competitive with this software.
30
21
  *
31
- * Version: 12.0.1 (built at Fri May 13 2022 13:53:25 GMT+0200 (Central European Summer Time))
22
+ * UNLESS EXPRESSLY AGREED OTHERWISE, HANDSONCODE PROVIDES THIS SOFTWARE ON AN "AS IS"
23
+ * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO
24
+ * LEGAL THEORY, SHALL HANDSONCODE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,
25
+ * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
+ * USE OR INABILITY TO USE THIS SOFTWARE.
27
+ *
28
+ * Version: 12.1.2 (built at Fri Jul 08 2022 09:09:53 GMT+0200 (Central European Summer Time))
32
29
  */
33
- !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 s=o(n),r=Symbol("unassigned");function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function a(t){var e=s.default.hooks.getRegistered(),n={};for(var o in Object.assign(n,s.default.DefaultSettings),n)n[o]={default:r};for(var i=0;e.length>i;i++)n[e[i]]={default:r};return n.settings={default:r},"HotTable"===t&&(n.id={type:String,default:"hot-".concat(Math.random().toString(36).substring(5))}),n}function c(t){var e={},n=t.settings;if(n!==r)for(var o in n)i(n,o)&&n[o]!==r&&(e[o]=n[o]);for(var s in t)i(t,s)&&"settings"!==s&&t[s]!==r&&(e[s]=t[s]);return e}function u(t,e){var n=c(t),o=t.settings?t.settings:n,s=t.settings?n:null,r={};for(var a in o)!i(o,a)||void 0===o[a]||e&&"data"!==a&&l(e[a],o[a])||(r[a]=o[a]);for(var u in s)!i(s,u)||"id"===u||"settings"===u||void 0===s[u]||e&&"data"!==u&&l(e[u],s[u])||(r[u]=s[u]);return r}function l(t,e){return JSON.stringify(t)===JSON.stringify(e)}var h=e.defineComponent({name:"HotTable",props:a("HotTable"),provide:function(){return{columnsCache:this.columnsCache}},watch:{$props:{handler:function(t){var e=u(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=u(this.$props);t.columns=this.columnSettings?this.columnSettings:t.columns,this.hotInstance=e.markRaw(new s.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=[],s=[],r=this.hotInstance.rowIndexMapper.getNumberOfIndexes(),i=this.hotInstance.isColumnModificationAllowed(),a=0;if(n&&n.length!==r&&r>n.length)for(var c=n.length;r>c;c++)o.push(c);if(i)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++)s.push(u);this.hotInstance.batch((function(){o.length>0?t.hotInstance.rowIndexMapper.removeIndexes(o):t.hotInstance.rowIndexMapper.insertIndexes(r-1,n.length-r),i&&0!==n.length&&(s.length>0?t.hotInstance.columnIndexMapper.removeIndexes(s):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:"12.0.1"}),d=["id"];function f(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 p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}h.render=function(t,n,o,s,r,i){return e.openBlock(),e.createElementBlock("div",{id:t.id},[e.renderSlot(t.$slots,"default")],8,d)},h.__file="src/HotTable.vue";var m=e.defineComponent({name:"HotColumn",props:a("HotColumn"),inject:["columnsCache"],methods:{createColumnSettings:function(){var t=c(this.$props),e=function(t){for(var e=1;arguments.length>e;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?f(Object(n),!0).forEach((function(e){p(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):f(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=h,t.default=h,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 s=o(n),r=Symbol("unassigned");function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function a(t){var e=s.default.hooks.getRegistered(),n={};for(var o in Object.assign(n,s.default.DefaultSettings),n)n[o]={default:r};for(var i=0;e.length>i;i++)n[e[i]]={default:r};return n.settings={default:r},"HotTable"===t&&(n.id={type:String,default:"hot-".concat(Math.random().toString(36).substring(5))}),n}function c(t){var e={},n=t.settings;if(n!==r)for(var o in n)i(n,o)&&n[o]!==r&&(e[o]=n[o]);for(var s in t)i(t,s)&&"settings"!==s&&t[s]!==r&&(e[s]=t[s]);return e}function u(t,e){var n=c(t),o=t.settings?t.settings:n,s=t.settings?n:null,r={};for(var a in o)!i(o,a)||void 0===o[a]||e&&"data"!==a&&l(e[a],o[a])||(r[a]=o[a]);for(var u in s)!i(s,u)||"id"===u||"settings"===u||void 0===s[u]||e&&"data"!==u&&l(e[u],s[u])||(r[u]=s[u]);return r}function l(t,e){return JSON.stringify(t)===JSON.stringify(e)}var h=e.defineComponent({name:"HotTable",props:a("HotTable"),provide:function(){return{columnsCache:this.columnsCache}},watch:{$props:{handler:function(t){var e=u(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=u(this.$props);t.columns=this.columnSettings?this.columnSettings:t.columns,this.hotInstance=e.markRaw(new s.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=[],s=[],r=this.hotInstance.rowIndexMapper.getNumberOfIndexes(),i=this.hotInstance.isColumnModificationAllowed(),a=0;if(n&&n.length!==r&&r>n.length)for(var c=n.length;r>c;c++)o.push(c);if(i)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++)s.push(u);this.hotInstance.batch((function(){o.length>0?t.hotInstance.rowIndexMapper.removeIndexes(o):t.hotInstance.rowIndexMapper.insertIndexes(r-1,n.length-r),i&&0!==n.length&&(s.length>0?t.hotInstance.columnIndexMapper.removeIndexes(s):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:"12.1.2"}),d=["id"];function f(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 p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}h.render=function(t,n,o,s,r,i){return e.openBlock(),e.createElementBlock("div",{id:t.id},[e.renderSlot(t.$slots,"default")],8,d)},h.__file="src/HotTable.vue";var m=e.defineComponent({name:"HotColumn",props:a("HotColumn"),inject:["columnsCache"],methods:{createColumnSettings:function(){var t=c(this.$props),e=function(t){for(var e=1;arguments.length>e;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?f(Object(n),!0).forEach((function(e){p(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):f(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=h,t.default=h,Object.defineProperty(t,"__esModule",{value:!0})}));
34
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 return JSON.stringify(objectA) === JSON.stringify(objectB);\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","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","newSettings","simpleEqual","objectA","objectB","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","renderSlot","$slots","HotColumn","inject","createColumnSettings","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 return JSON.stringify(objectA) === JSON.stringify(objectB);\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","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","newSettings","simpleEqual","objectA","objectB","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","renderSlot","$slots","HotColumn","inject","createColumnSettings","renderer","editor","set","unmounted"],"mappings":"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"}
@@ -127,7 +127,7 @@ function simpleEqual(objectA, objectB) {
127
127
  return JSON.stringify(objectA) === JSON.stringify(objectB);
128
128
  }
129
129
 
130
- var version="12.0.1";
130
+ var version="12.1.2";
131
131
 
132
132
  var HotTable = defineComponent({
133
133
  name: 'HotTable',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@handsontable/vue3",
3
- "version": "12.0.1",
3
+ "version": "12.1.2",
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",