@handsontable/vue3 16.2.0 → 17.0.0-rc3

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/README.md CHANGED
@@ -61,13 +61,11 @@
61
61
  Below is the installation guide for the Handsontable with Vue 3 wrapper. If you're using another framework, please refer to its dedicated wrapper for specific installation instructions.
62
62
 
63
63
  - <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/javascript-icon.svg" width="12" height="12" alt="JavaScript logo"> <a href="https://github.com/handsontable/handsontable"> JavaScript</a>
64
- - <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/react-icon.svg" width="12" height="12" alt="React logo"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/react-wrapper"> React functional component</a>
65
- - <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/react-icon.svg" width="12" height="12" alt="React logo"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/react"> React class component</a>
66
- - <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/angular-icon.svg" width="12" height="12" alt="Angular logo"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/angular"> Angular</a>
67
- - <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/vue-icon.svg" width="12" height="12" alt="Vue logo"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/vue"> Vue 2</a>
68
-
64
+ - <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/react-icon.svg" width="12" height="12" alt="React logo"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/react-wrapper"> React</a>
65
+ - <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/angular-icon.svg" width="12" height="12" alt="Angular logo"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/angular-wrapper"> Angular</a>
69
66
  ---
70
67
 
68
+
71
69
  ```bash
72
70
  npm install handsontable @handsontable/vue3
73
71
  ```
@@ -76,9 +74,6 @@ You can load it directly from [jsDelivr](https:jsdelivr.com/package/npm/@handson
76
74
  ```html
77
75
  <script src="https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.js"></script>
78
76
  <script src="https://cdn.jsdelivr.net/npm/@handsontable/vue3/dist/vue-handsontable.min.js"></script>
79
-
80
- <link href="https://cdn.jsdelivr.net/npm/handsontable/styles/handsontable.min.css" rel="stylesheet">
81
- <link href="https://cdn.jsdelivr.net/npm/handsontable/styles/ht-theme-main.min.css" rel="stylesheet">
82
77
  ```
83
78
 
84
79
  The component will be available as `Handsontable.vue.HotTable`.
@@ -87,17 +82,10 @@ The component will be available as `Handsontable.vue.HotTable`.
87
82
 
88
83
  Use this data grid as you would any other component in your application. [Options](https://handsontable.com/docs/api/options/) can be set as `HotTable` props.
89
84
 
90
- **Styles**
91
- ```css
92
- @import '~handsontable/styles/handsontable.min.css';
93
- @import '~handsontable/styles/ht-theme-main.min.css';
94
- ```
95
-
96
85
  **Vue 3 Component**
97
86
  ```vue
98
87
  <template>
99
88
  <hot-table
100
- theme="ht-theme-main-dark-auto"
101
89
  :data="data"
102
90
  :row-headers=true
103
91
  :col-headers=true
@@ -117,8 +105,6 @@ Use this data grid as you would any other component in your application. [Option
117
105
  import { defineComponent } from 'vue';
118
106
  import { HotTable, HotColumn } from '@handsontable/vue3';
119
107
  import { registerAllModules } from 'handsontable/registry';
120
- import 'handsontable/styles/handsontable.min.css';
121
- import 'handsontable/styles/ht-theme-main.min.css';
122
108
 
123
109
  // register Handsontable's modules
124
110
  registerAllModules();
@@ -194,7 +194,7 @@ function simpleEqual(objectA, objectB) {
194
194
  }
195
195
  }
196
196
 
197
- var version="16.2.0";
197
+ var version="17.0.0-rc3";
198
198
 
199
199
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
200
200
  // @ts-ignore
@@ -25,7 +25,7 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 16.2.0 (built at Thu Nov 20 2025 13:28:06 GMT+0100 (Central European Standard Time))
28
+ * Version: 17.0.0-rc3 (built at Tue Feb 24 2026 09:27:53 GMT+0000 (Coordinated Universal Time))
29
29
  */
30
30
  (function (global, factory) {
31
31
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('handsontable/base')) :
@@ -222,7 +222,7 @@ function simpleEqual(objectA, objectB) {
222
222
  }
223
223
  }
224
224
 
225
- var version="16.2.0";
225
+ var version="17.0.0-rc3";
226
226
 
227
227
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
228
228
  // @ts-ignore
@@ -25,7 +25,7 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 16.2.0 (built at Thu Nov 20 2025 13:28:07 GMT+0100 (Central European Standard Time))
28
+ * Version: 17.0.0-rc3 (built at Tue Feb 24 2026 09:27:56 GMT+0000 (Coordinated Universal Time))
29
29
  */
30
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue"),require("handsontable/base")):"function"==typeof define&&define.amd?define(["exports","vue","handsontable/base"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).Handsontable=t.Handsontable||{},t.Handsontable.vue={}),t.Vue,t.Handsontable)}(this,function(t,e,n){"use strict";function o(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=o(n);function i(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var c=Symbol("unassigned");function u(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function l(t){var e=r.default.hooks.getRegistered(),n={};for(var o in Object.assign(n,r.default.DefaultSettings),n)n[o]={default:c};for(var i=0;e.length>i;i++)n[e[i]]={default:c};return n.settings={default:c},"HotTable"===t&&(n.id={type:String,default:"hot-".concat(Math.random().toString(36).substring(5))}),n}function h(t){var e={},n=t.settings;if(n!==c)for(var o in n)u(n,o)&&n[o]!==c&&(e[o]=n[o]);for(var r in t)u(t,r)&&"settings"!==r&&t[r]!==c&&(e[r]=t[r]);return e}function f(t,e){var n=h(t),o=t.settings?t.settings:n,r=t.settings?n:null,i={};for(var s in o)!u(o,s)||void 0===o[s]||e&&"data"!==s&&d(e[s],o[s])||(i[s]=o[s]);for(var a in r)!u(r,a)||"id"===a||"settings"===a||void 0===r[a]||e&&"data"!==a&&d(e[a],r[a])||(i[a]=r[a]);return i}function d(t,e){var n=function(t){var e,n=(e=new WeakSet,function(t,n){if("object"===a(n)&&null!==n){if(e.has(n))return;e.add(n)}return n});return JSON.stringify(t,n)};return"function"==typeof t&&"function"==typeof e?""+t==""+e:a(t)===a(e)&&n(t)===n(e)}var p=e.defineComponent({name:"HotTable",props:l("HotTable"),provide:function(){return{columnsCache:this.columnsCache}},watch:{$props:{handler:function(t){var e=f(t,this.hotInstance?this.hotInstance.getSettings():void 0);this.hotInstance&&void 0!==e&&(e.data&&(this.hotInstance.isColumnModificationAllowed()||!this.hotInstance.isColumnModificationAllowed()&&this.hotInstance.countSourceCols()===this.miscCache.currentSourceColumns)&&(this.matchHotMappersSize(),delete e.data),Object.keys(e).length?this.hotInstance.updateSettings(e):this.hotInstance.render(),this.miscCache.currentSourceColumns=this.hotInstance.countSourceCols())},deep:!0,immediate:!0}},data:function(){return{__hotInstance:null,miscCache:{currentSourceColumns:null},columnSettings:null,columnsCache:new Map,get hotInstance(){return!this.__hotInstance||this.__hotInstance&&!this.__hotInstance.isDestroyed?this.__hotInstance:(console.warn("The Handsontable instance bound to this component was destroyed and cannot be used properly."),null)},set hotInstance(t){this.__hotInstance=t}}},methods:{hotInit:function(){var t=f(this.$props);t.columns=this.columnSettings?this.columnSettings:t.columns,this.hotInstance=e.markRaw(new r.default.Core(this.$el,t)),this.hotInstance.init(),this.miscCache.currentSourceColumns=this.hotInstance.countSourceCols()},matchHotMappersSize:function(){var t=this;if(this.hotInstance){var e,n=this.hotInstance.getSourceData(),o=[],r=[],i=this.hotInstance.rowIndexMapper.getNumberOfIndexes(),s=this.hotInstance.isColumnModificationAllowed(),a=0;if(n&&n.length!==i&&i>n.length)for(var c=n.length;i>c;c++)o.push(c);if(s)if(a=this.hotInstance.columnIndexMapper.getNumberOfIndexes(),n&&n[0]&&(null===(e=n[0])||void 0===e?void 0:e.length)!==a&&a>n[0].length)for(var u=n[0].length;a>u;u++)r.push(u);this.hotInstance.batch(function(){o.length>0?t.hotInstance.rowIndexMapper.removeIndexes(o):t.hotInstance.rowIndexMapper.insertIndexes(i-1,n.length-i),s&&0!==n.length&&(r.length>0?t.hotInstance.columnIndexMapper.removeIndexes(r):t.hotInstance.columnIndexMapper.insertIndexes(a-1,n[0].length-a))})}},getColumnSettings:function(){var t=Array.from(this.columnsCache.values());return t.length?t:void 0}},mounted:function(){this.columnSettings=this.getColumnSettings(),this.hotInit()},beforeUnmount:function(){this.hotInstance&&this.hotInstance.destroy()},version:"16.2.0"}),m=["id"];p.render=function(t,n,o,r,i,s){return e.openBlock(),e.createElementBlock("div",{id:t.id},[e.renderSlot(t.$slots,"default")],8,m)},p.__file="src/HotTable.vue";var b=e.defineComponent({name:"HotColumn",props:l("HotColumn"),inject:["columnsCache"],methods:{createColumnSettings:function(){var t=h(this.$props),e=function(t){for(var e=1;arguments.length>e;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?s(Object(n),!0).forEach(function(e){i(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},t);t.renderer&&(e.renderer=t.renderer),t.editor&&(e.editor=t.editor),this.columnsCache.set(this,e)}},mounted:function(){this.createColumnSettings()},unmounted:function(){this.columnsCache.delete(this)},render:function(){return null}});b.__file="src/HotColumn.vue",t.HotColumn=b,t.HotTable=p,t.default=p,Object.defineProperty(t,"__esModule",{value:!0})});
30
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue"),require("handsontable/base")):"function"==typeof define&&define.amd?define(["exports","vue","handsontable/base"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).Handsontable=t.Handsontable||{},t.Handsontable.vue={}),t.Vue,t.Handsontable)}(this,function(t,e,n){"use strict";function o(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=o(n);function i(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var c=Symbol("unassigned");function u(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function l(t){var e=r.default.hooks.getRegistered(),n={};for(var o in Object.assign(n,r.default.DefaultSettings),n)n[o]={default:c};for(var i=0;e.length>i;i++)n[e[i]]={default:c};return n.settings={default:c},"HotTable"===t&&(n.id={type:String,default:"hot-".concat(Math.random().toString(36).substring(5))}),n}function h(t){var e={},n=t.settings;if(n!==c)for(var o in n)u(n,o)&&n[o]!==c&&(e[o]=n[o]);for(var r in t)u(t,r)&&"settings"!==r&&t[r]!==c&&(e[r]=t[r]);return e}function f(t,e){var n=h(t),o=t.settings?t.settings:n,r=t.settings?n:null,i={};for(var s in o)!u(o,s)||void 0===o[s]||e&&"data"!==s&&d(e[s],o[s])||(i[s]=o[s]);for(var a in r)!u(r,a)||"id"===a||"settings"===a||void 0===r[a]||e&&"data"!==a&&d(e[a],r[a])||(i[a]=r[a]);return i}function d(t,e){var n=function(t){var e,n=(e=new WeakSet,function(t,n){if("object"===a(n)&&null!==n){if(e.has(n))return;e.add(n)}return n});return JSON.stringify(t,n)};return"function"==typeof t&&"function"==typeof e?""+t==""+e:a(t)===a(e)&&n(t)===n(e)}var p=e.defineComponent({name:"HotTable",props:l("HotTable"),provide:function(){return{columnsCache:this.columnsCache}},watch:{$props:{handler:function(t){var e=f(t,this.hotInstance?this.hotInstance.getSettings():void 0);this.hotInstance&&void 0!==e&&(e.data&&(this.hotInstance.isColumnModificationAllowed()||!this.hotInstance.isColumnModificationAllowed()&&this.hotInstance.countSourceCols()===this.miscCache.currentSourceColumns)&&(this.matchHotMappersSize(),delete e.data),Object.keys(e).length?this.hotInstance.updateSettings(e):this.hotInstance.render(),this.miscCache.currentSourceColumns=this.hotInstance.countSourceCols())},deep:!0,immediate:!0}},data:function(){return{__hotInstance:null,miscCache:{currentSourceColumns:null},columnSettings:null,columnsCache:new Map,get hotInstance(){return!this.__hotInstance||this.__hotInstance&&!this.__hotInstance.isDestroyed?this.__hotInstance:(console.warn("The Handsontable instance bound to this component was destroyed and cannot be used properly."),null)},set hotInstance(t){this.__hotInstance=t}}},methods:{hotInit:function(){var t=f(this.$props);t.columns=this.columnSettings?this.columnSettings:t.columns,this.hotInstance=e.markRaw(new r.default.Core(this.$el,t)),this.hotInstance.init(),this.miscCache.currentSourceColumns=this.hotInstance.countSourceCols()},matchHotMappersSize:function(){var t=this;if(this.hotInstance){var e,n=this.hotInstance.getSourceData(),o=[],r=[],i=this.hotInstance.rowIndexMapper.getNumberOfIndexes(),s=this.hotInstance.isColumnModificationAllowed(),a=0;if(n&&n.length!==i&&i>n.length)for(var c=n.length;i>c;c++)o.push(c);if(s)if(a=this.hotInstance.columnIndexMapper.getNumberOfIndexes(),n&&n[0]&&(null===(e=n[0])||void 0===e?void 0:e.length)!==a&&a>n[0].length)for(var u=n[0].length;a>u;u++)r.push(u);this.hotInstance.batch(function(){o.length>0?t.hotInstance.rowIndexMapper.removeIndexes(o):t.hotInstance.rowIndexMapper.insertIndexes(i-1,n.length-i),s&&0!==n.length&&(r.length>0?t.hotInstance.columnIndexMapper.removeIndexes(r):t.hotInstance.columnIndexMapper.insertIndexes(a-1,n[0].length-a))})}},getColumnSettings:function(){var t=Array.from(this.columnsCache.values());return t.length?t:void 0}},mounted:function(){this.columnSettings=this.getColumnSettings(),this.hotInit()},beforeUnmount:function(){this.hotInstance&&this.hotInstance.destroy()},version:"17.0.0-rc3"}),m=["id"];p.render=function(t,n,o,r,i,s){return e.openBlock(),e.createElementBlock("div",{id:t.id},[e.renderSlot(t.$slots,"default")],8,m)},p.__file="src/HotTable.vue";var b=e.defineComponent({name:"HotColumn",props:l("HotColumn"),inject:["columnsCache"],methods:{createColumnSettings:function(){var t=h(this.$props),e=function(t){for(var e=1;arguments.length>e;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?s(Object(n),!0).forEach(function(e){i(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},t);t.renderer&&(e.renderer=t.renderer),t.editor&&(e.editor=t.editor),this.columnsCache.set(this,e)}},mounted:function(){this.createColumnSettings()},unmounted:function(){this.columnsCache.delete(this)},render:function(){return null}});b.__file="src/HotColumn.vue",t.HotColumn=b,t.HotTable=p,t.default=p,Object.defineProperty(t,"__esModule",{value:!0})});
31
31
  //# sourceMappingURL=vue-handsontable.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vue-handsontable.min.js","sources":["../src/helpers.ts","../src/HotTable.vue","../src/HotTable.vue?vue&type=template&id=54bcc3fa&lang.js","../src/HotColumn.vue"],"sourcesContent":["import Handsontable from 'handsontable/base';\nimport { HotTableProps, VueProps } from './types';\n\nconst unassignedPropSymbol = Symbol('unassigned');\n\n/**\n * Message for the warning thrown if the Handsontable instance has been destroyed.\n */\nexport const HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' +\n ' used properly.';\n\n/**\n * Check if at specified `key` there is any value for `object`.\n *\n * @param {object} object Object to search value at specyfic key.\n * @param {string} key String key to check.\n * @returns {boolean}\n */\nexport function hasOwnProperty(object: unknown, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Generate an object containing all the available Handsontable properties and plugin hooks.\n *\n * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').\n * @returns {object}\n */\nexport function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps> {\n const registeredHooks = Handsontable.hooks.getRegistered();\n const propSchema: VueProps<HotTableProps> = {};\n\n Object.assign(propSchema, Handsontable.DefaultSettings);\n\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const prop in propSchema) {\n propSchema[prop] = {\n default: unassignedPropSymbol\n };\n }\n\n for (let i = 0; i < registeredHooks.length; i++) {\n propSchema[registeredHooks[i]] = {\n default: unassignedPropSymbol\n };\n }\n\n propSchema.settings = {\n default: unassignedPropSymbol\n };\n\n if (source === 'HotTable') {\n propSchema.id = {\n type: String,\n default: `hot-${Math.random().toString(36).substring(5)}`\n };\n }\n\n return propSchema;\n}\n\n/**\n * Filter out all of the unassigned props, and return only the one passed to the component.\n *\n * @param {object} props Object containing all the possible props.\n * @returns {object} Object containing only used props.\n */\nexport function filterPassedProps(props) {\n const filteredProps: VueProps<HotTableProps> = {};\n const columnSettingsProp = props.settings;\n\n if (columnSettingsProp !== unassignedPropSymbol) {\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in columnSettingsProp) {\n if (hasOwnProperty(columnSettingsProp, propName) && columnSettingsProp[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = columnSettingsProp[propName];\n }\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in props) {\n if (hasOwnProperty(props, propName) && propName !== 'settings' && props[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = props[propName];\n }\n }\n\n return filteredProps;\n}\n\n/**\n * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.\n *\n * @param {HotTableProps} props The props passed to the component.\n * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.\n * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.\n */\nexport function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps {\n const assignedProps: VueProps<HotTableProps> = filterPassedProps(props);\n const hotSettingsInProps: Handsontable.GridSettings = props.settings ? props.settings : assignedProps;\n const additionalHotSettingsInProps: Handsontable.GridSettings = props.settings ? assignedProps : null;\n const newSettings: Handsontable.GridSettings = {};\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in hotSettingsInProps) {\n if (\n hasOwnProperty(hotSettingsInProps, key) &&\n hotSettingsInProps[key] !== void 0 &&\n ((currentSettings && key !== 'data') ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = hotSettingsInProps[key];\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in additionalHotSettingsInProps) {\n if (\n hasOwnProperty(additionalHotSettingsInProps, key) &&\n key !== 'id' &&\n key !== 'settings' &&\n additionalHotSettingsInProps[key] !== void 0 &&\n ((currentSettings && key !== 'data')\n ? !simpleEqual(currentSettings[key], additionalHotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = additionalHotSettingsInProps[key];\n }\n }\n\n return newSettings;\n}\n\n/**\n * Compare two objects using `JSON.stringify`.\n * *Note: * As it's using the stringify function to compare objects, the property order in both objects is\n * important. It will return `false` for the same objects, if they're defined in a different order.\n *\n * @param {object} objectA First object to compare.\n * @param {object} objectB Second object to compare.\n * @returns {boolean} `true` if they're the same, `false` otherwise.\n */\nfunction simpleEqual(objectA, objectB) {\n const stringifyToJSON = (val) => {\n const circularReplacer = (function() {\n const seen = new WeakSet();\n\n return function(key, value) {\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return;\n }\n\n seen.add(value);\n }\n\n return value;\n };\n }());\n\n return JSON.stringify(val, circularReplacer);\n };\n\n if (typeof objectA === 'function' && typeof objectB === 'function') {\n return objectA.toString() === objectB.toString();\n\n } else if (typeof objectA !== typeof objectB) {\n return false;\n\n } else {\n return stringifyToJSON(objectA) === stringifyToJSON(objectB);\n }\n}\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport {\n propFactory,\n filterPassedProps\n} from './helpers';\n\nconst HotColumn = defineComponent({\n name: 'HotColumn',\n props: propFactory('HotColumn'),\n inject: ['columnsCache'],\n methods: {\n /**\n * Create the column settings based on the data provided to the `hot-column`\n * component and it's child components.\n */\n createColumnSettings(): void {\n const assignedProps = filterPassedProps(this.$props);\n const columnSettings = { ...assignedProps };\n\n if (assignedProps.renderer) {\n columnSettings.renderer = assignedProps.renderer;\n }\n\n if (assignedProps.editor) {\n columnSettings.editor = assignedProps.editor;\n }\n\n this.columnsCache.set(this, columnSettings);\n }\n },\n mounted() {\n this.createColumnSettings();\n },\n unmounted() {\n this.columnsCache.delete(this);\n },\n render() {\n return null;\n }\n});\n\nexport default HotColumn;\nexport { HotColumn };\n</script>\n"],"names":["unassignedPropSymbol","Symbol","hasOwnProperty","object","key","Object","prototype","call","propFactory","source","registeredHooks","Handsontable","hooks","getRegistered","propSchema","prop","assign","DefaultSettings","default","i","length","settings","id","type","String","concat","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","newSettings","simpleEqual","objectA","objectB","stringifyToJSON","val","seen","circularReplacer","WeakSet","value","_typeof","has","add","JSON","stringify","HotTable","defineComponent","name","provide","columnsCache","this","watch","$props","handler","hotInstance","getSettings","data","isColumnModificationAllowed","countSourceCols","miscCache","currentSourceColumns","matchHotMappersSize","keys","updateSettings","render","deep","immediate","__hotInstance","columnSettings","Map","isDestroyed","console","warn","methods","hotInit","columns","markRaw","Core","$el","init","_this","_data$","getSourceData","rowsToRemove","columnsToRemove","indexMapperRowCount","rowIndexMapper","getNumberOfIndexes","indexMapperColumnCount","r","push","columnIndexMapper","c","batch","removeIndexes","insertIndexes","getColumnSettings","Array","from","values","mounted","beforeUnmount","destroy","version","_createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","_objectSpread","renderer","editor","set","unmounted"],"mappings":"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"}
1
+ {"version":3,"file":"vue-handsontable.min.js","sources":["../src/helpers.ts","../src/HotTable.vue","../src/HotTable.vue?vue&type=template&id=54bcc3fa&lang.js","../src/HotColumn.vue"],"sourcesContent":["import Handsontable from 'handsontable/base';\nimport { HotTableProps, VueProps } from './types';\n\nconst unassignedPropSymbol = Symbol('unassigned');\n\n/**\n * Message for the warning thrown if the Handsontable instance has been destroyed.\n */\nexport const HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' +\n ' used properly.';\n\n/**\n * Check if at specified `key` there is any value for `object`.\n *\n * @param {object} object Object to search value at specyfic key.\n * @param {string} key String key to check.\n * @returns {boolean}\n */\nexport function hasOwnProperty(object: unknown, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Generate an object containing all the available Handsontable properties and plugin hooks.\n *\n * @param {string} source Source for the factory (either 'HotTable' or 'HotColumn').\n * @returns {object}\n */\nexport function propFactory(source: 'HotTable' | 'HotColumn'): VueProps<HotTableProps> {\n const registeredHooks = Handsontable.hooks.getRegistered();\n const propSchema: VueProps<HotTableProps> = {};\n\n Object.assign(propSchema, Handsontable.DefaultSettings);\n\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const prop in propSchema) {\n propSchema[prop] = {\n default: unassignedPropSymbol\n };\n }\n\n for (let i = 0; i < registeredHooks.length; i++) {\n propSchema[registeredHooks[i]] = {\n default: unassignedPropSymbol\n };\n }\n\n propSchema.settings = {\n default: unassignedPropSymbol\n };\n\n if (source === 'HotTable') {\n propSchema.id = {\n type: String,\n default: `hot-${Math.random().toString(36).substring(5)}`\n };\n }\n\n return propSchema;\n}\n\n/**\n * Filter out all of the unassigned props, and return only the one passed to the component.\n *\n * @param {object} props Object containing all the possible props.\n * @returns {object} Object containing only used props.\n */\nexport function filterPassedProps(props) {\n const filteredProps: VueProps<HotTableProps> = {};\n const columnSettingsProp = props.settings;\n\n if (columnSettingsProp !== unassignedPropSymbol) {\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in columnSettingsProp) {\n if (hasOwnProperty(columnSettingsProp, propName) && columnSettingsProp[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = columnSettingsProp[propName];\n }\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const propName in props) {\n if (hasOwnProperty(props, propName) && propName !== 'settings' && props[propName] !== unassignedPropSymbol) {\n filteredProps[propName] = props[propName];\n }\n }\n\n return filteredProps;\n}\n\n/**\n * Prepare the settings object to be used as the settings for Handsontable, based on the props provided to the component.\n *\n * @param {HotTableProps} props The props passed to the component.\n * @param {Handsontable.GridSettings} currentSettings The current Handsontable settings.\n * @returns {Handsontable.GridSettings} An object containing the properties, ready to be used within Handsontable.\n */\nexport function prepareSettings(props: HotTableProps, currentSettings?: Handsontable.GridSettings): HotTableProps {\n const assignedProps: VueProps<HotTableProps> = filterPassedProps(props);\n const hotSettingsInProps: Handsontable.GridSettings = props.settings ? props.settings : assignedProps;\n const additionalHotSettingsInProps: Handsontable.GridSettings = props.settings ? assignedProps : null;\n const newSettings: Handsontable.GridSettings = {};\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in hotSettingsInProps) {\n if (\n hasOwnProperty(hotSettingsInProps, key) &&\n hotSettingsInProps[key] !== void 0 &&\n ((currentSettings && key !== 'data') ? !simpleEqual(currentSettings[key], hotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = hotSettingsInProps[key];\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in additionalHotSettingsInProps) {\n if (\n hasOwnProperty(additionalHotSettingsInProps, key) &&\n key !== 'id' &&\n key !== 'settings' &&\n additionalHotSettingsInProps[key] !== void 0 &&\n ((currentSettings && key !== 'data')\n ? !simpleEqual(currentSettings[key], additionalHotSettingsInProps[key]) : true)\n ) {\n newSettings[key] = additionalHotSettingsInProps[key];\n }\n }\n\n return newSettings;\n}\n\n/**\n * Compare two objects using `JSON.stringify`.\n * *Note: * As it's using the stringify function to compare objects, the property order in both objects is\n * important. It will return `false` for the same objects, if they're defined in a different order.\n *\n * @param {object} objectA First object to compare.\n * @param {object} objectB Second object to compare.\n * @returns {boolean} `true` if they're the same, `false` otherwise.\n */\nfunction simpleEqual(objectA, objectB) {\n const stringifyToJSON = (val) => {\n const circularReplacer = (function() {\n const seen = new WeakSet();\n\n return function(key, value) {\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return;\n }\n\n seen.add(value);\n }\n\n return value;\n };\n }());\n\n return JSON.stringify(val, circularReplacer);\n };\n\n if (typeof objectA === 'function' && typeof objectB === 'function') {\n return objectA.toString() === objectB.toString();\n\n } else if (typeof objectA !== typeof objectB) {\n return false;\n\n } else {\n return stringifyToJSON(objectA) === stringifyToJSON(objectB);\n }\n}\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<template>\n <div :id=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent, VNode, markRaw } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport Handsontable from 'handsontable/base';\nimport {\n HOT_DESTROYED_WARNING,\n prepareSettings,\n propFactory,\n} from './helpers';\nimport {\n HotTableProps,\n} from './types';\nimport * as packageJson from '../package.json';\n\nconst HotTable = defineComponent({\n name: 'HotTable',\n props: propFactory('HotTable'),\n provide() {\n return {\n columnsCache: this.columnsCache\n };\n },\n watch: {\n $props: {\n handler(props) {\n const settings = prepareSettings(props, this.hotInstance ? this.hotInstance.getSettings() : void 0);\n\n if (!this.hotInstance || settings === void 0) {\n return;\n }\n\n if (settings.data) {\n if (\n this.hotInstance.isColumnModificationAllowed() ||\n (\n !this.hotInstance.isColumnModificationAllowed() &&\n this.hotInstance.countSourceCols() === this.miscCache.currentSourceColumns\n )\n ) {\n // If the dataset dimensions change, update the index mappers.\n this.matchHotMappersSize();\n\n // Data is automatically synchronized by reference.\n delete settings.data;\n }\n }\n\n // If there are another options changed, update the HOT settings, render the table otherwise.\n if (Object.keys(settings).length) {\n this.hotInstance.updateSettings(settings);\n\n } else {\n this.hotInstance.render();\n }\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n deep: true,\n immediate: true,\n },\n },\n data() {\n return {\n /* eslint-disable vue/no-reserved-keys */\n __hotInstance: null as Handsontable,\n /* eslint-enable vue/no-reserved-keys */\n miscCache: {\n currentSourceColumns: null,\n },\n columnSettings: null as HotTableProps[],\n columnsCache: new Map<VNode, HotTableProps>(),\n get hotInstance(): Handsontable | null {\n if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n\n // Will return the Handsontable instance or `null` if it's not yet been created.\n return this.__hotInstance;\n\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(HOT_DESTROYED_WARNING);\n\n return null;\n }\n },\n set hotInstance(hotInstance: Handsontable) {\n this.__hotInstance = hotInstance;\n },\n };\n },\n methods: {\n /**\n * Initialize Handsontable.\n */\n hotInit() {\n const newSettings = prepareSettings(this.$props);\n\n newSettings.columns = this.columnSettings ? this.columnSettings : newSettings.columns;\n\n this.hotInstance = markRaw<Handsontable>(new Handsontable.Core(this.$el, newSettings));\n this.hotInstance.init();\n\n this.miscCache.currentSourceColumns = this.hotInstance.countSourceCols();\n },\n\n matchHotMappersSize(): void {\n if (!this.hotInstance) {\n return;\n }\n\n const data: Handsontable.CellValue[][] = this.hotInstance.getSourceData();\n const rowsToRemove: number[] = [];\n const columnsToRemove: number[] = [];\n const indexMapperRowCount = this.hotInstance.rowIndexMapper.getNumberOfIndexes();\n const isColumnModificationAllowed = this.hotInstance.isColumnModificationAllowed();\n let indexMapperColumnCount = 0;\n\n if (data && data.length !== indexMapperRowCount) {\n if (data.length < indexMapperRowCount) {\n for (let r = data.length; r < indexMapperRowCount; r++) {\n rowsToRemove.push(r);\n }\n }\n }\n\n if (isColumnModificationAllowed) {\n indexMapperColumnCount = this.hotInstance.columnIndexMapper.getNumberOfIndexes();\n\n if (data && data[0] && data[0]?.length !== indexMapperColumnCount) {\n if (data[0].length < indexMapperColumnCount) {\n for (let c = data[0].length; c < indexMapperColumnCount; c++) {\n columnsToRemove.push(c);\n }\n }\n }\n }\n\n this.hotInstance.batch(() => {\n if (rowsToRemove.length > 0) {\n this.hotInstance.rowIndexMapper.removeIndexes(rowsToRemove);\n\n } else {\n this.hotInstance.rowIndexMapper\n .insertIndexes(indexMapperRowCount - 1, data.length - indexMapperRowCount);\n }\n\n if (isColumnModificationAllowed && data.length !== 0) {\n if (columnsToRemove.length > 0) {\n this.hotInstance.columnIndexMapper.removeIndexes(columnsToRemove);\n\n } else {\n this.hotInstance.columnIndexMapper\n .insertIndexes(indexMapperColumnCount - 1, data[0].length - indexMapperColumnCount);\n }\n }\n });\n },\n\n /**\n * Get settings for the columns provided in the `hot-column` components.\n *\n * @returns {HotTableProps[] | undefined}\n */\n getColumnSettings(): HotTableProps[] | void {\n const columnSettings: HotTableProps[] = Array.from(this.columnsCache.values());\n\n return columnSettings.length ? columnSettings : void 0;\n },\n },\n mounted() {\n this.columnSettings = this.getColumnSettings();\n this.hotInit();\n },\n beforeUnmount() {\n if (this.hotInstance) {\n this.hotInstance.destroy();\n }\n },\n version: (packageJson as unknown as { version: string }).version,\n});\n\nexport default HotTable;\nexport { HotTable };\n</script>\n","<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { defineComponent } from 'vue';\n// TODO: The line above is ts-ignored because rollup-plugin-typescript2 throws an error otherwise.\n// It's most probably caused by outdated rollup-plugin-vue which is no longer maintained.\n\nimport {\n propFactory,\n filterPassedProps\n} from './helpers';\n\nconst HotColumn = defineComponent({\n name: 'HotColumn',\n props: propFactory('HotColumn'),\n inject: ['columnsCache'],\n methods: {\n /**\n * Create the column settings based on the data provided to the `hot-column`\n * component and it's child components.\n */\n createColumnSettings(): void {\n const assignedProps = filterPassedProps(this.$props);\n const columnSettings = { ...assignedProps };\n\n if (assignedProps.renderer) {\n columnSettings.renderer = assignedProps.renderer;\n }\n\n if (assignedProps.editor) {\n columnSettings.editor = assignedProps.editor;\n }\n\n this.columnsCache.set(this, columnSettings);\n }\n },\n mounted() {\n this.createColumnSettings();\n },\n unmounted() {\n this.columnsCache.delete(this);\n },\n render() {\n return null;\n }\n});\n\nexport default HotColumn;\nexport { HotColumn };\n</script>\n"],"names":["unassignedPropSymbol","Symbol","hasOwnProperty","object","key","Object","prototype","call","propFactory","source","registeredHooks","Handsontable","hooks","getRegistered","propSchema","prop","assign","DefaultSettings","default","i","length","settings","id","type","String","concat","Math","random","toString","substring","filterPassedProps","props","filteredProps","columnSettingsProp","propName","prepareSettings","currentSettings","assignedProps","hotSettingsInProps","additionalHotSettingsInProps","newSettings","simpleEqual","objectA","objectB","stringifyToJSON","val","seen","circularReplacer","WeakSet","value","_typeof","has","add","JSON","stringify","HotTable","defineComponent","name","provide","columnsCache","this","watch","$props","handler","hotInstance","getSettings","data","isColumnModificationAllowed","countSourceCols","miscCache","currentSourceColumns","matchHotMappersSize","keys","updateSettings","render","deep","immediate","__hotInstance","columnSettings","Map","isDestroyed","console","warn","methods","hotInit","columns","markRaw","Core","$el","init","_this","_data$","getSourceData","rowsToRemove","columnsToRemove","indexMapperRowCount","rowIndexMapper","getNumberOfIndexes","indexMapperColumnCount","r","push","columnIndexMapper","c","batch","removeIndexes","insertIndexes","getColumnSettings","Array","from","values","mounted","beforeUnmount","destroy","version","_createElementBlock","_ctx","_renderSlot","$slots","HotColumn","inject","createColumnSettings","_objectSpread","renderer","editor","set","unmounted"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, markRaw, createElementBlock, openBlock, renderSlot } from 'vue';
1
+ import { defineComponent, markRaw, openBlock, createElementBlock, renderSlot } from 'vue';
2
2
  import Handsontable from 'handsontable/base';
3
3
 
4
4
  function _defineProperty(e, r, t) {
@@ -186,7 +186,7 @@ function simpleEqual(objectA, objectB) {
186
186
  }
187
187
  }
188
188
 
189
- var version="16.2.0";
189
+ var version="17.0.0-rc3";
190
190
 
191
191
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
192
192
  // @ts-ignore
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@handsontable/vue3",
3
- "version": "16.2.0",
3
+ "version": "17.0.0-rc3",
4
4
  "description": "Best Data Grid for Vue with Spreadsheet Look and Feel.",
5
5
  "author": "Handsoncode <hello@handsoncode.net> (https://handsoncode.net)",
6
6
  "homepage": "https://handsontable.com",
@@ -53,7 +53,7 @@
53
53
  "url": "https://github.com/handsontable/handsontable/issues"
54
54
  },
55
55
  "peerDependencies": {
56
- "handsontable": ">=16.0.0",
56
+ "handsontable": "^17.0.0",
57
57
  "vue": "^3.2.22"
58
58
  },
59
59
  "devDependencies": {
@@ -81,7 +81,7 @@
81
81
  "cross-env": "^7.0.3",
82
82
  "eslint": "^8.57.1",
83
83
  "eslint-plugin-vue": "^8.0.3",
84
- "handsontable": "^16.0.0",
84
+ "handsontable": "^17.0.0",
85
85
  "jest": "^27.5.1",
86
86
  "jest-environment-jsdom": "^27.5.1",
87
87
  "rimraf": "^3.0.2",
@@ -107,6 +107,7 @@
107
107
  "watch:umd": "cross-env NODE_ENV=umd rollup -c --watch",
108
108
  "clean": "rimraf ./es/ && rimraf ./commonjs/ && rimraf ./dist/ && rimraf ./*.d.ts",
109
109
  "publish-package": "npm publish",
110
+ "create-package": "npm pack",
110
111
  "test": "jest"
111
112
  }
112
113
  }