@handsontable/react-wrapper 15.0.0-next-07b7ebc-20241210 → 15.0.0-next-8d7ffcf-20241216

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
@@ -1,68 +1,82 @@
1
1
  <div align="center">
2
-
3
- <a href="https://handsontable.com" rel="nofollow"><img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/handsontable-logo-blue.svg" alt="Handsontable - data grid for React" width="300"></a>
4
-
5
- # React Data Grid <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/react-icon.svg" width="22" height="22">
6
-
7
- Handsontable's wrapper for React combines data grid features with spreadsheet-like UX. <br>
8
- It provides data binding, data validation, filtering, sorting, and CRUD operations.
9
-
10
- [![npm](https://img.shields.io/npm/dt/@handsontable/react-wrapper.svg)](https://npmjs.com/package/@handsontable/react-wrapper)
11
- [![npm](https://img.shields.io/npm/dm/@handsontable/react-wrapper.svg)](https://npmjs.com/package/@handsontable/react-wrapper)
2
+ <br><br>
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-logo-white.svg?raw=true"/>
5
+ <source media="(prefers-color-scheme: light)" srcset="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-logo-black.svg?raw=true"/>
6
+ <img width="360" alt="Logo of Handsontable data grid" src="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-logo-black.svg?raw=true"/>
7
+ </picture>
8
+ <br><br>
9
+ <h3>The official <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/react-icon.svg" width="16" height="16"> React <i>functional</i> wrapper for Handsontable.
10
+ <br>
11
+ <a href="https://handsontable.com/docs/react-data-grid" target="_blank">JavaScript Data Grid</a> with a spreadsheet-like look and feel.
12
+ </h3>
13
+
14
+ <p>With its spreadsheet-like editing features, it’s perfect for building data-rich internal apps. It allows users to enter, edit, validate, and process data from various sources. Common use cases include resource planning software (ERP), inventory management systems, digital platforms, and data modeling applications.</p>
15
+
16
+ <a href="https://handsontable.com">Website</a> &nbsp;&nbsp;—&nbsp;&nbsp; <a href="https://handsontable.com/docs/react-data-grid">Documentation</a> &nbsp;&nbsp;—&nbsp;&nbsp; <a href="https://handsontable.com/docs/react-data-grid/themes">Themes</a> &nbsp;&nbsp;—&nbsp;&nbsp; <a href="https://handsontable.com/docs/react-data-grid/api">API</a> &nbsp;&nbsp;—&nbsp;&nbsp; <a href="https://github.com/handsontable/handsontable/discussions">Community</a>
17
+
18
+ <br>
19
+
20
+ [![NPM version](https://img.shields.io/npm/v/@handsontable/react-wrapper?style=for-the-badge)](https://npmjs.com/package/@handsontable/react-wrapper)
21
+ [![Total downloads](https://img.shields.io/npm/dt/handsontable.svg?style=for-the-badge)](https://npmjs.com/package/@handsontable/react-wrapper)
22
+ [![Monthly downloads](https://img.shields.io/npm/dm/handsontable.svg?style=for-the-badge)](https://npmjs.com/package/@handsontable/react-wrapper)
23
+ [![Contributors](https://img.shields.io/github/contributors/handsontable/handsontable?style=for-the-badge)](https://github.com/handsontable/handsontable/graphs/contributors)
24
+ <br>
12
25
  [![CI status](https://github.com/handsontable/handsontable/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/handsontable/handsontable/actions/workflows/test.yml?query=branch%3Amaster)
13
- [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fhandsontable%2Fhandsontable.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fhandsontable%2Fhandsontable?ref=badge_shield)
14
- [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=handsontable_handsontable&metric=alert_status)](https://sonarcloud.io/dashboard?id=handsontable_handsontable)
26
+ [![Quality gate status](https://sonarcloud.io/api/project_badges/measure?project=handsontable_handsontable&metric=alert_status)](https://sonarcloud.io/dashboard?id=handsontable_handsontable)
27
+ [![FOSSA status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fhandsontable%2Fhandsontable.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fhandsontable%2Fhandsontable?ref=badge_shield)
15
28
 
16
- ---
17
-
18
- <a href="https://handsontable.com/demo"><img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/handsontable-github-preview.png" alt="Handsontable data grid for React" width="805"/></a>
29
+ <br>
19
30
 
31
+ <picture>
32
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-preview-dark-theme.png?raw=true"/>
33
+ <source media="(prefers-color-scheme: light)" srcset="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-preview-light-theme.png?raw=true"/>
34
+ <img width="780" alt="React data grid preview" src="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-preview-light-theme.png?raw=true"/>
35
+ </picture>
20
36
  </div>
21
37
 
22
- ## Features
23
-
24
- The most popular features of Handsontable for React:
25
-
26
- &nbsp;&nbsp;✓&nbsp; Multiple column sorting <br>
27
- &nbsp;&nbsp;✓&nbsp; Non-contiguous selection <br>
28
- &nbsp;&nbsp;✓&nbsp; Filtering data <br>
29
- &nbsp;&nbsp;✓&nbsp; Export to file <br>
30
- &nbsp;&nbsp;✓&nbsp; Validating data <br>
31
- &nbsp;&nbsp;✓&nbsp; Conditional formatting <br>
32
- &nbsp;&nbsp;✓&nbsp; Merging cells <br>
33
- &nbsp;&nbsp;✓&nbsp; Freezing rows/columns <br>
34
- &nbsp;&nbsp;✓&nbsp; Moving rows/columns <br>
35
- &nbsp;&nbsp;✓&nbsp; Resizing rows/columns <br>
36
- &nbsp;&nbsp;✓&nbsp; Hiding rows/columns <br>
37
- &nbsp;&nbsp;✓&nbsp; Context menu <br>
38
- &nbsp;&nbsp;✓&nbsp; Comments <br>
39
-
40
- ## Documentation
41
-
42
- - [Developer guides](https://handsontable.com/docs/react-installation/)
43
- - [API Reference](https://handsontable.com/docs/api/core/)
44
- - [Changelog](https://handsontable.com/docs/release-notes/)
45
- - [Demo](https://handsontable.com/demo)
46
-
47
- <div id="installation"></div>
48
-
49
- ## Get started
50
-
51
- ### 1. Install Handsontable
52
-
53
- Get Handsontable from [npm](https://www.npmjs.com/package/@handsontable/react-wrapper) or [Yarn](https://yarnpkg.com/package/@handsontable/react-wrapper).
38
+ ## ✨ Key Features
39
+
40
+ &nbsp;&nbsp;✅&nbsp; [Built-in themes](https://handsontable.com/docs/react-data-grid/themes/) <br>
41
+ &nbsp;&nbsp;✅&nbsp; [Flexible API](https://handsontable.com/docs/react-data-grid/api/) <br>
42
+ &nbsp;&nbsp;✅&nbsp; [Virtualization](https://handsontable.com/docs/react-data-grid/row-virtualization/) <br>
43
+ &nbsp;&nbsp;✅&nbsp; [IME support](https://handsontable.com/docs/react-data-grid/ime-support/) <br>
44
+ &nbsp;&nbsp;✅&nbsp; [Internationalization](https://handsontable.com/docs/react-data-grid/language/) <br>
45
+ &nbsp;&nbsp;✅&nbsp; [RTL support](https://handsontable.com/docs/react-data-grid/layout-direction/) <br>
46
+ &nbsp;&nbsp;✅&nbsp; [Accessibility](https://handsontable.com/docs/react-data-grid/accessibility/) <br>
47
+ &nbsp;&nbsp;✅&nbsp; [Keyboard shortcuts](https://handsontable.com/docs/react-data-grid/keyboard-shortcuts/) <br>
48
+ &nbsp;&nbsp;✅&nbsp; [Sorting data](https://handsontable.com/docs/react-data-grid/rows-sorting/) <br>
49
+ &nbsp;&nbsp;✅&nbsp; [Filtering data](https://handsontable.com/docs/react-data-grid/column-filter/) <br>
50
+ &nbsp;&nbsp;✅&nbsp; [400 built-in formulas](https://handsontable.com/docs/react-data-grid/formula-calculation/) <br>
51
+ &nbsp;&nbsp;✅&nbsp; [Configurable selection](https://handsontable.com/docs/react-data-grid/selection/) <br>
52
+ &nbsp;&nbsp;✅&nbsp; [Data validation](https://handsontable.com/docs/react-data-grid/cell-validator/) <br>
53
+ &nbsp;&nbsp;✅&nbsp; [Conditional formatting](https://handsontable.com/docs/react-data-grid/conditional-formatting/) <br>
54
+ &nbsp;&nbsp;✅&nbsp; [Merged cells](https://handsontable.com/docs/react-data-grid/merge-cells/) <br>
55
+ &nbsp;&nbsp;✅&nbsp; [Pinned/frozen columns](https://handsontable.com/docs/react-data-grid/column-freezing/) <br>
56
+ &nbsp;&nbsp;✅&nbsp; [Hiding columns](https://handsontable.com/docs/react-data-grid/column-hiding/) <br>
57
+ &nbsp;&nbsp;✅&nbsp; [Right-click context menu](https://handsontable.com/docs/react-data-grid/context-menu/) <br>
58
+
59
+ <div id="installation">
60
+
61
+ ## 🪄 Installation
62
+ Below is the installation guide for the React functional component.
63
+
64
+ ### Install Handsontable from [npm](https://www.npmjs.com/package/@handsontable/react-wrapper) or [Yarn](https://yarnpkg.com/package/@handsontable/react-wrapper).
54
65
 
55
66
  ```bash
56
67
  npm install handsontable @handsontable/react-wrapper
57
68
  ```
58
69
 
59
- Import Handsontable's CSS:
70
+ ### Import CSS files
60
71
 
61
72
  ```jsx
62
- import 'handsontable/dist/handsontable.full.min.css';
73
+ // Base CSS rules
74
+ import 'handsontable/styles/handsontable.min.css';
75
+ // Main theme variables
76
+ import 'handsontable/styles/ht-theme-main.min.css';
63
77
  ```
64
78
 
65
- ### 2. Register Handsontable's modules
79
+ ### Register Handsontable's modules
66
80
 
67
81
  ```jsx
68
82
  import { registerAllModules } from 'handsontable/registry';
@@ -70,7 +84,7 @@ import { registerAllModules } from 'handsontable/registry';
70
84
  registerAllModules();
71
85
  ```
72
86
 
73
- ### 3. Use the `HotTable` component
87
+ ### Use the `HotTable` component
74
88
 
75
89
  The main Handsontable component is called `HotTable`.
76
90
 
@@ -81,56 +95,120 @@ import { HotTable } from '@handsontable/react-wrapper';
81
95
  To set Handsontable's [configuration options](https://handsontable.com/docs/react-data-grid/configuration-options), use `HotTable`'s props. For example:
82
96
 
83
97
  ```jsx
84
- import { HotTable } from '@handsontable/react-wrapper';
98
+ import { HotTable, HotColumn } from '@handsontable/react-wrapper';
85
99
  import { registerAllModules } from 'handsontable/registry';
86
- import 'handsontable/dist/handsontable.full.min.css';
100
+ import 'handsontable/styles/handsontable.min.css';
101
+ import 'handsontable/styles/ht-theme-main.min.css';
87
102
 
88
103
  registerAllModules();
89
104
 
90
105
  const ExampleComponent = () => {
91
-
92
106
  return (
93
- <HotTable
94
- // set `HotTable`'s props here
95
- data={[
96
- ['', 'Tesla', 'Volvo', 'Toyota', 'Ford'],
97
- ['2019', 10, 11, 12, 13],
98
- ['2020', 20, 11, 14, 13],
99
- ['2021', 30, 15, 12, 13]
100
- ]}
101
- rowHeaders={true}
102
- colHeaders={true}
103
- height="auto"
104
- licenseKey="non-commercial-and-evaluation" // for non-commercial use only
105
- />
107
+ <HotTable
108
+ data={[
109
+ { company: 'Tagcat', country: 'United Kingdom', rating: 4.4 },
110
+ { company: 'Zoomzone', country: 'Japan', rating: 4.5 },
111
+ { company: 'Meeveo', country: 'United States', rating: 4.6 },
112
+ ]}
113
+ rowHeaders={true}
114
+ colHeaders={true}
115
+ navigableHeaders={true}
116
+ tabNavigation={true}
117
+ multiColumnSorting={true}
118
+ headerClassName="htLeft"
119
+ licenseKey="non-commercial-and-evaluation"
120
+ >
121
+ <HotColumn title="Company" data="company" width="100"></HotColumn>
122
+ <HotColumn title="Country" data="country" width="170" type="dropdown" source={['United Kingdom', 'Japan', 'United States']}></HotColumn>
123
+ <HotColumn title="Rating" data="rating" width="100" type="numeric"></HotColumn>
124
+ </HotTable>
106
125
  );
107
126
  };
108
127
  ```
109
128
 
129
+ [![Static Badge](https://img.shields.io/badge/View%20live%20demo-1a42e8?style=for-the-badge)](https://handsontable.com/docs/react-data-grid/demo)
130
+
131
+ </div>
132
+
133
+ <br>
110
134
 
135
+ ## 🚀 Resources
111
136
 
112
- ### [View live demo](https://handsontable.com/docs/react-data-grid/demo/)
137
+ - [Website](https://handsontable.com)
138
+ - [Demo](https://handsontable.com/demo)
139
+ - [Documentation](https://handsontable.com/docs/react-data-grid)
140
+ - [npm](https://www.npmjs.com/package/@handsontable/react)
141
+ - [CDN](https://www.jsdelivr.com/package/npm/@handsontable/react-wrapper)
142
+ - [Forum](https://forum.handsontable.com/)
143
+ - [Blog](https://handsontable.com/blog)
144
+ - [Contact support team](https://handsontable.com/contact?category=technical_support)
145
+ - [Get a quote](https://handsontable.com/get-a-quote)
113
146
 
114
- ## Support
147
+ <br>
115
148
 
116
- We provide support for developers working with commercial version via [contact form](https://handsontable.com/contact?category=technical_support)</a> or at support@handsontable.com.
149
+ ## 🤔 Is Handsontable a Data Grid or a Spreadsheet?
117
150
 
118
- If you use a non-commercial version then please ask your tagged question on [StackOverflow](https://stackoverflow.com/questions/tagged/handsontable).
151
+ Handsontable is a data grid component written in JavaScript, not a spreadsheet. However, it brings in many features typically found in spreadsheet software. We designed it this way because spreadsheet-like patterns are often the most user-friendly when it comes to data entry and management.
119
152
 
120
- ## License
153
+ ### Spreadsheet-like features in Handsontable:
121
154
 
122
- Handsontable is a commercial software with two licenses available:
155
+ - Keyboard shortcuts compliant with either Google Sheets or Excel
156
+ - 400 spreadsheet formulas via native integration with [HyperFormula](https://github.com/handsontable/hyperformula)
157
+ - Keyboard navigation across headers that can be disabled, making only cells navigable
158
+ - TAB navigation across cells that can be disabled
159
+ - Built-in undo-redo functionality
160
+ - Powerful clipboard capabilities for copy-paste operations
161
+ - Ability to scroll the grid within the container (`div`) or window
162
+ - Data binding in the form of an array of objects or arrays of arrays
163
+ - Built-in cell editors like a date picker or dropdown list
123
164
 
124
- - Free for non-commercial purposes such as teaching, academic research, and evaluation. [Read it here](https://github.com/handsontable/handsontable/blob/master/handsontable-non-commercial-license.pdf).
125
- - Commercial license with support and maintenance included. See [pricing plans](https://handsontable.com/pricing).
165
+ At first glance, it might seem that a data table, spreadsheet, and data grid are just different names for the same thing - an interactive table displaying data. In reality, these tools serve different purposes and offer distinct functionalities, designed to meet specific needs. Handsontable sits comfortably in the data grid category while incorporating many of the best aspects of spreadsheet software.
126
166
 
127
- ## License key
167
+ <br>
128
168
 
129
- If you use Handsontable for React in a project that supports your commercial activity, then you must purchase the license key at [handsontable.com](https://handsontable.com/pricing).
169
+ ## 🛟 Support
130
170
 
131
- If you use the free for non-commercial license of Handsontable, then pass the phrase `'non-commercial-and-evaluation'`, as described in [this documentation](https://handsontable.com/docs/license-key/).
171
+ **We're here to help!**
172
+
173
+ If you're using Handsontable with a free, non-commercial license, you can:
174
+ - Join the conversation on [GitHub Discussions](https://github.com/handsontable/handsontable/discussions) to share ideas, suggest features, or discuss changes.
175
+ - Report any bugs you find on our [GitHub Issue Board](https://github.com/handsontable/handsontable/issues).
176
+ - Connect with other developers and find answers on our [Developer Forum](https://handsontable.com/forum).
177
+
178
+ If you have a commercial license, feel free to contact us directly at [support@handsontable.com](mailto:support@handsontable.com) or use our [contact form](https://handsontable.com/contact?category=technical_support).
179
+
180
+ <br>
181
+
182
+ ## 📖 Licenses
183
+
184
+ Handsontable is available under two licensing options, allowing you to choose the one that best fits your needs. Each license comes with its own terms and conditions, as outlined below:
185
+
186
+ ### ① Free license for non-commercial use, and evaluation purposes
187
+ This license is available for non-commercial purposes such as teaching, academic research, or evaluation. It allows you to use Handsontable free of charge under the terms specified in the non-commercial license agreement.
188
+ [Learn more here](https://github.com/handsontable/handsontable/blob/master/handsontable-non-commercial-license.pdf).
189
+
190
+ ### ② Commercial license
191
+ For commercial use, a paid license is required. This license includes support and maintenance to ensure you get the most out of Handsontable. The commercial license can be purchased directly from Handsoncode or through an [authorized reseller](https://handsontable.com/resellers). See the [pricing page](https://handsontable.com/pricing) for details.
192
+
193
+ <br>
194
+
195
+ ## 🔑 License Key
196
+
197
+ For projects covered by the free non-commercial license, simply use the phrase `'non-commercial-and-evaluation'` as your license key.
198
+
199
+ If you're using Handsontable in a project that supports commercial activities, you'll need to purchase a license key at [handsontable.com/pricing](https://handsontable.com/pricing). You can find more details in [our documentation](https://handsontable.com/docs/license-key/).
200
+
201
+ <br>
202
+
203
+ ## 🙌 Contributing
204
+
205
+ Contributions are welcome, but before you make them, please read the [Contributing Guide](https://github.com/handsontable/handsontable/blob/develop/CONTRIBUTING.md) and accept the [Contributor License Agreement](https://goo.gl/forms/yuutGuN0RjsikVpM2).
132
206
 
133
207
  <br>
134
208
  <br>
135
209
 
136
- Proudly created and maintained by the [Handsontable Team](https://handsontable.com/team).
210
+ Created and maintained by the [Handsontable Team](https://handsontable.com/team) 👋
211
+
212
+ ---
213
+
214
+ © 2012 - 2024 Handsoncode
@@ -763,7 +763,7 @@ var HotColumn = function HotColumn(props) {
763
763
  }, editorPortal);
764
764
  };
765
765
 
766
- var version="15.0.0-next-07b7ebc-20241210";
766
+ var version="15.0.0-next-8d7ffcf-20241216";
767
767
 
768
768
  /**
769
769
  * Component used to manage the renderer component portals.
@@ -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: 15.0.0-next-07b7ebc-20241210 (built at Tue Dec 10 2024 16:52:40 GMT+0000 (Coordinated Universal Time))
28
+ * Version: 15.0.0-next-8d7ffcf-20241216 (built at Mon Dec 16 2024 10:05:58 GMT+0000 (Coordinated Universal Time))
29
29
  */
30
30
  (function (global, factory) {
31
31
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('react-dom'), require('handsontable/base'), require('handsontable/renderers/registry'), require('handsontable/editors/registry')) :
@@ -779,7 +779,7 @@ var HotColumn = function HotColumn(props) {
779
779
  }, editorPortal);
780
780
  };
781
781
 
782
- var version="15.0.0-next-07b7ebc-20241210";
782
+ var version="15.0.0-next-8d7ffcf-20241216";
783
783
 
784
784
  /**
785
785
  * Component used to manage the renderer component portals.
@@ -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: 15.0.0-next-07b7ebc-20241210 (built at Tue Dec 10 2024 16:52:44 GMT+0000 (Coordinated Universal Time))
28
+ * Version: 15.0.0-next-8d7ffcf-20241216 (built at Mon Dec 16 2024 10:06:02 GMT+0000 (Coordinated Universal Time))
29
29
  */
30
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom"),require("handsontable/base"),require("handsontable/renderers/registry"),require("handsontable/editors/registry")):"function"==typeof define&&define.amd?define(["exports","react","react-dom","handsontable/base","handsontable/renderers/registry","handsontable/editors/registry"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Handsontable=e.Handsontable||{},e.Handsontable.react={}),e.React,e.ReactDOM,e.Handsontable,e.Handsontable.renderers,e.Handsontable.editors)}(this,(function(e,t,n,r,o,u){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=a(t),l=a(n),c=a(r),s=null;function d(){var e;void 0!==console&&(e=console).warn.apply(e,arguments)}function f(e){return p(e,"hot-renderer")?(d("Providing a component-based renderer using `hot-renderer`-annotated component is no longer supported. Pass your component using `renderer` prop of the `HotTable` or `HotColumn` component instead."),!0):!!p(e,"hot-editor")&&(d("Providing a component-based editor using `hot-editor`-annotated component is no longer supported. Pass your component using `editor` prop of the `HotTable` or `HotColumn` component instead."),!0)}function p(e,t){return i.default.Children.toArray(e).some((function(e){return void 0!==e.props[t]}))}function m(e,t){if(!e||!t)return null;var n=i.default.createElement(t,null),r=v({},!1);return r.className="".concat("hot-wrapper-editor-container"," ").concat(r.className),l.default.createPortal(i.default.createElement("div",Object.assign({},r),n),e.body)}function v(e){return{id:e.id||(1>=arguments.length||void 0===arguments[1]||arguments[1]?"hot-"+Math.random().toString(36).substring(5):void 0),className:e.className||"",style:e.style||{}}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);t>n;n++)r[n]=e[n];return r}function h(e,t,n){return t=w(t),function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,R()?Reflect.construct(t,n||[],w(e).constructor):t.apply(e,n))}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){for(var n=0;t.length>n;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,I(r.key),r)}}function O(e,t,n){return t&&g(e.prototype,t),n&&g(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function C(e,t,n){return(t=I(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e){return w=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},w(e)}function R(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(R=function(){return!!e})()}function P(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function E(e){for(var t=1;arguments.length>t;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach((function(t){C(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function j(e,t){return j=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},j(e,t)}function S(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,u,a,i=[],l=!0,c=!1;try{if(u=(n=n.call(e)).next,0===t);else for(;!(l=(r=u.call(n)).done)&&(i.push(r.value),i.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return i}}(e,t)||H(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||H(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function I(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function H(e,t){if(e){if("string"==typeof e)return y(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}var T=function(){return O((function e(){b(this,e)}),null,[{key:"getSettings",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.prevProps,r=void 0===n?{}:n,o=t.isInit,u=void 0!==o&&o,a=t.initOnlySettingKeys,i=void 0===a?[]:a,l=function(t){return!(u||!i.includes(t))&&r[t]===e[t]},c={};for(var s in e)"children"!==s&&!l(s)&&e.hasOwnProperty(s)&&(c[s]=e[s]);return c}}])}(),x=t.createContext(void 0),_=function(e){var n=e.children,r=t.useRef([]),o=t.useCallback((function(e,t){r.current[t]=e}),[]),u=t.useRef(new Map),a=t.useRef(new Map),c=t.useCallback((function(){return a.current.clear()}),[]),d=t.useRef(new Map),f=t.useCallback((function(){return d.current.clear()}),[]),p=t.useRef(new Map),m=t.useCallback((function(e){return function(t,n,r,o,u,c,f){var m="".concat(r,"-").concat(o),v=t.guid,y="".concat(v,"-").concat(m),h="".concat(m,"-").concat(v);if(a.current.has(m)&&(n.innerHTML=a.current.get(m).innerHTML),n&&!n.getAttribute("ghost-table")){for(var b=d.current.get(h),g=p.current.get(y);n.firstChild;)n.removeChild(n.firstChild);if(b&&g)n.appendChild(g);else{var O=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;t||(t=document),s||(s=t.createDocumentFragment());var o=null!=r?r:t.createElement("DIV");return s.appendChild(o),{portal:l.default.createPortal(e,o,n),portalContainer:o}}(i.default.createElement(e,{instance:t,TD:n,row:r,col:o,prop:u,value:c,cellProperties:f}),n.ownerDocument,h,g),C=O.portal,w=O.portalContainer;p.current.set(y,w),n.appendChild(w),d.current.set(h,C)}}return a.current.set("".concat(r,"-").concat(o),n),n}}),[]),v=t.useRef((function(){})),y=t.useCallback((function(e){v.current=e}),[]),h=t.useCallback((function(){v.current(k(d.current.values()))}),[]),b=t.useMemo((function(){return{componentRendererColumns:u.current,columnsSettings:r.current,emitColumnSettings:o,getRendererWrapper:m,clearPortalCache:f,clearRenderedCellCache:c,setRenderersPortalManagerRef:y,pushCellPortalsIntoPortalManager:h}}),[o,m,c,y,h]);return i.default.createElement(x.Provider,{value:b},n)};function D(){return t.useContext(x)}var M=t.createContext(void 0),A=function(e){var n=e.columnIndex,r=e.getOwnerDocument,o=e.children,u=t.useMemo((function(){return{columnIndex:n,getOwnerDocument:r}}),[n,r]);return i.default.createElement(M.Provider,{value:u},o)},V=["close","focus","open"],N=["getValue","setValue"],z={open:"onOpen",close:"onClose",prepare:"onPrepare",focus:"onFocus"};function q(e,t){return function(n){function r(n){var o;return b(this,r),o=h(this,r,[n]),t.current=o,Object.getOwnPropertyNames(c.default.editors.BaseEditor.prototype).forEach((function(t){if("constructor"!==t&&!N.includes(t)){var n=c.default.editors.BaseEditor.prototype[t];r.prototype[t]=function(){for(var r,o,u,a=arguments.length,i=Array(a),l=0;a>l;l++)i[l]=arguments[l];(V.includes(t)||(o=n.call.apply(n,[this].concat(i))),z[t]&&null!==(r=e.current)&&void 0!==r&&r[z[t]])&&(o=(u=e.current[z[t]]).call.apply(u,[this].concat(i)));return o}.bind(o)}})),o}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&j(e,t)}(r,n),O(r,[{key:"focus",value:function(){}},{key:"getValue",value:function(){return this.value}},{key:"setValue",value:function(e){this.value=e}},{key:"open",value:function(){}},{key:"close",value:function(){}}])}(c.default.editors.BaseEditor)}var B=t.createContext(void 0),W=function(e){return i.default.createElement(B.Provider,{value:{hooksRef:e.hooksRef,hotCustomEditorInstanceRef:e.hotCustomEditorInstanceRef}},e.children)};var F=function(e){return e.type===L},U=["_columnIndex","_getOwnerDocument","children"],L=function(e){var n=D(),r=n.componentRendererColumns,o=n.emitColumnSettings,u=n.getRendererWrapper,a=t.useContext(M),l=a.columnIndex,c=a.getOwnerDocument,s=t.useRef(null),p=t.useRef(null);t.useEffect((function(){var t=function(){var t=T.getSettings(Object.keys(e).filter((function(e){return!U.includes(e)})).reduce((function(t,n){return t[n]=e[n],t}),{}));return e.renderer?(t.renderer=u(e.renderer),r.set(l,!0)):e.hotRenderer&&(t.renderer=e.hotRenderer),e.editor?t.editor=q(s,p):e.hotEditor&&(t.editor=e.hotEditor),t}();o(t,l),f(e.children)||i.default.Children.toArray(e.children).length&&d("Unexpected children nodes found in HotColumn component. HotColumn components do not support any children.")}));var v=m(c(),e.editor);return i.default.createElement(W,{hooksRef:s,hotCustomEditorInstanceRef:p},v)},K=t.forwardRef((function(e,n){var r=S(t.useState([]),2),o=r[0],u=r[1];return t.useImperativeHandle(n,(function(){return u})),i.default.createElement(t.Fragment,null,o)}));function Y(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var $,G,J,Q,X={exports:{}};X.exports=function(){if(Q)return J;Q=1;var e=G?$:(G=1,$="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");function t(){}function n(){}return n.resetWarningCache=t,J=function(){function r(t,n,r,o,u,a){if(a!==e){var i=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function o(){return r}r.isRequired=r;var u={array:r,bigint:r,bool:r,func:r,number:r,object:r,string:r,symbol:r,any:r,arrayOf:o,element:r,elementType:r,instanceOf:o,node:r,objectOf:o,oneOf:o,oneOfType:o,shape:o,exact:o,checkPropTypes:n,resetWarningCache:t};return u.PropTypes=u,u}}()();var Z=Y(X.exports),ee=t.forwardRef((function(e,n){var r,a,l,s=t.useRef(null),p=t.useRef(null),y=t.useRef(null),h=t.useRef(null),b=t.useRef(),g=D(),O=t.useCallback((function(){return s.current&&s.current.isDestroyed?(console.warn("The Handsontable instance bound to this component was destroyed and cannot be used properly."),null):s.current}),[s]),C=t.useCallback((function(){return!s.current||s.current.isDestroyed}),[s]),w=t.useCallback((function(){g.clearRenderedCellCache(),g.componentRendererColumns.clear()}),[g]),R=t.useCallback((function(){return"undefined"!=typeof window?p.current?p.current.ownerDocument:document:null}),[p]),P=function(){var t,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=C()?[]:(null===(t=O())||void 0===t||null===(t=t.getSettings())||void 0===t?void 0:t._initOnlySettings)||[],i=T.getSettings(e,{prevProps:r,isInit:n,initOnlySettingKeys:a});return i.columns=g.columnsSettings.length?g.columnsSettings:i.columns,e.renderer?(i.renderer=g.getRendererWrapper(e.renderer),g.componentRendererColumns.set("global",!0)):i.renderer=e.hotRenderer||o.getRenderer("text"),i.editor=e.editor?q(y,h):e.hotEditor||u.getEditor("text"),i},E=function(e){var t,n;e&&(null!==(t=e.getPlugin("autoRowSize"))&&void 0!==t&&t.enabled||null!==(n=e.getPlugin("autoColumnSize"))&&void 0!==n&&n.enabled)&&g.componentRendererColumns.size>0&&d("Your `HotTable` configuration includes `autoRowSize`/`autoColumnSize` options, which are not compatible with the component-based renderers`. Disable `autoRowSize` and `autoColumnSize` to prevent row and column misalignment.")};t.useEffect((function(){var t,n=P(!0);return b.current=e,s.current=new c.default.Core(p.current,n),s.current.addHook("beforeViewRender",(function(){g.clearPortalCache(),g.clearRenderedCellCache()})),s.current.addHook("afterViewRender",(function(){g.pushCellPortalsIntoPortalManager()})),s.current.init(),E(s.current),f(e.children)||(t=L,i.default.Children.toArray(e.children).some((function(e){return e.type!==t}))&&d("Unexpected children nodes found in HotTable component. Only HotColumn components are allowed.")),function(){var e;w(),null===(e=O())||void 0===e||e.destroy()}}),[]),r=function(){w();var t=O(),n=P(!1,b.current);b.current=e,null==t||t.updateSettings(n,!1),E(t),f(e.children)},l=i.default.useRef(!1),t.useEffect((function(){if(l.current)return r();l.current=!0}),a),t.useImperativeHandle(n,(function(){return{get hotElementRef(){return p.current},get hotInstance(){return O()}}}));var j=t.Children.toArray(e.children).filter(F).map((function(e,t){return i.default.createElement(A,{columnIndex:t,getOwnerDocument:R,key:t},e)})),S=v(e),k=m(R(),e.editor);return i.default.createElement(t.Fragment,null,i.default.createElement("div",Object.assign({ref:p},S),j),i.default.createElement(K,{ref:g.setRenderersPortalManagerRef}),i.default.createElement(W,{hooksRef:y,hotCustomEditorInstanceRef:h},k))}));ee.propTypes={style:Z.object,id:Z.string,className:Z.string};var te=["children"],ne=t.forwardRef((function(e,n){var r,o=e.children,u=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;u.length>r;r++)t.includes(n=u[r])||{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,te),a=null!==(r=u.id)&&void 0!==r?r:t.useId();return i.default.createElement(_,null,i.default.createElement(ee,Object.assign({id:a},u,{ref:n}),o))}));ne.version="15.0.0-next-07b7ebc-20241210",e.HotColumn=L,e.HotTable=ne,e.default=ne,e.isHotColumn=F,e.useHotEditor=function(e,n){var r=t.useContext(B),o=r.hooksRef,u=r.hotCustomEditorInstanceRef,a=S(t.useState(0),2),i=a[0],l=a[1],c=S(t.useState(),2),s=c[1],d=t.useDeferredValue(c[0]);return t.useImperativeHandle(o,(function(){return E(E({},e),{},{onOpen:function(){var t,n;s(null===(t=u.current)||void 0===t?void 0:t.getValue()),null==e||null===(n=e.onOpen)||void 0===n||n.call(e),l((function(e){return e+1}))}})}),n),t.useMemo((function(){return{get value(){return d},setValue:function(e){var t;s(e),null===(t=u.current)||void 0===t||t.setValue(e)},get isOpen(){var e,t;return null!==(e=null===(t=u.current)||void 0===t?void 0:t.isOpened())&&void 0!==e&&e},finishEditing:function(){var e;null===(e=u.current)||void 0===e||e.finishEditing()},get row(){var e;return null===(e=u.current)||void 0===e?void 0:e.row},get col(){var e;return null===(e=u.current)||void 0===e?void 0:e.col}}}),[i,u,d])},Object.defineProperty(e,"__esModule",{value:!0})}));
30
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom"),require("handsontable/base"),require("handsontable/renderers/registry"),require("handsontable/editors/registry")):"function"==typeof define&&define.amd?define(["exports","react","react-dom","handsontable/base","handsontable/renderers/registry","handsontable/editors/registry"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Handsontable=e.Handsontable||{},e.Handsontable.react={}),e.React,e.ReactDOM,e.Handsontable,e.Handsontable.renderers,e.Handsontable.editors)}(this,(function(e,t,n,r,o,u){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=a(t),l=a(n),c=a(r),s=null;function d(){var e;void 0!==console&&(e=console).warn.apply(e,arguments)}function f(e){return p(e,"hot-renderer")?(d("Providing a component-based renderer using `hot-renderer`-annotated component is no longer supported. Pass your component using `renderer` prop of the `HotTable` or `HotColumn` component instead."),!0):!!p(e,"hot-editor")&&(d("Providing a component-based editor using `hot-editor`-annotated component is no longer supported. Pass your component using `editor` prop of the `HotTable` or `HotColumn` component instead."),!0)}function p(e,t){return i.default.Children.toArray(e).some((function(e){return void 0!==e.props[t]}))}function m(e,t){if(!e||!t)return null;var n=i.default.createElement(t,null),r=v({},!1);return r.className="".concat("hot-wrapper-editor-container"," ").concat(r.className),l.default.createPortal(i.default.createElement("div",Object.assign({},r),n),e.body)}function v(e){return{id:e.id||(1>=arguments.length||void 0===arguments[1]||arguments[1]?"hot-"+Math.random().toString(36).substring(5):void 0),className:e.className||"",style:e.style||{}}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);t>n;n++)r[n]=e[n];return r}function h(e,t,n){return t=w(t),function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,R()?Reflect.construct(t,n||[],w(e).constructor):t.apply(e,n))}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){for(var n=0;t.length>n;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,I(r.key),r)}}function O(e,t,n){return t&&g(e.prototype,t),n&&g(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function C(e,t,n){return(t=I(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e){return w=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},w(e)}function R(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(R=function(){return!!e})()}function P(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function E(e){for(var t=1;arguments.length>t;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach((function(t){C(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function j(e,t){return j=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},j(e,t)}function S(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,u,a,i=[],l=!0,c=!1;try{if(u=(n=n.call(e)).next,0===t);else for(;!(l=(r=u.call(n)).done)&&(i.push(r.value),i.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return i}}(e,t)||H(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||H(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function I(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function H(e,t){if(e){if("string"==typeof e)return y(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}var T=function(){return O((function e(){b(this,e)}),null,[{key:"getSettings",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.prevProps,r=void 0===n?{}:n,o=t.isInit,u=void 0!==o&&o,a=t.initOnlySettingKeys,i=void 0===a?[]:a,l=function(t){return!(u||!i.includes(t))&&r[t]===e[t]},c={};for(var s in e)"children"!==s&&!l(s)&&e.hasOwnProperty(s)&&(c[s]=e[s]);return c}}])}(),x=t.createContext(void 0),_=function(e){var n=e.children,r=t.useRef([]),o=t.useCallback((function(e,t){r.current[t]=e}),[]),u=t.useRef(new Map),a=t.useRef(new Map),c=t.useCallback((function(){return a.current.clear()}),[]),d=t.useRef(new Map),f=t.useCallback((function(){return d.current.clear()}),[]),p=t.useRef(new Map),m=t.useCallback((function(e){return function(t,n,r,o,u,c,f){var m="".concat(r,"-").concat(o),v=t.guid,y="".concat(v,"-").concat(m),h="".concat(m,"-").concat(v);if(a.current.has(m)&&(n.innerHTML=a.current.get(m).innerHTML),n&&!n.getAttribute("ghost-table")){for(var b=d.current.get(h),g=p.current.get(y);n.firstChild;)n.removeChild(n.firstChild);if(b&&g)n.appendChild(g);else{var O=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;t||(t=document),s||(s=t.createDocumentFragment());var o=null!=r?r:t.createElement("DIV");return s.appendChild(o),{portal:l.default.createPortal(e,o,n),portalContainer:o}}(i.default.createElement(e,{instance:t,TD:n,row:r,col:o,prop:u,value:c,cellProperties:f}),n.ownerDocument,h,g),C=O.portal,w=O.portalContainer;p.current.set(y,w),n.appendChild(w),d.current.set(h,C)}}return a.current.set("".concat(r,"-").concat(o),n),n}}),[]),v=t.useRef((function(){})),y=t.useCallback((function(e){v.current=e}),[]),h=t.useCallback((function(){v.current(k(d.current.values()))}),[]),b=t.useMemo((function(){return{componentRendererColumns:u.current,columnsSettings:r.current,emitColumnSettings:o,getRendererWrapper:m,clearPortalCache:f,clearRenderedCellCache:c,setRenderersPortalManagerRef:y,pushCellPortalsIntoPortalManager:h}}),[o,m,c,y,h]);return i.default.createElement(x.Provider,{value:b},n)};function D(){return t.useContext(x)}var M=t.createContext(void 0),A=function(e){var n=e.columnIndex,r=e.getOwnerDocument,o=e.children,u=t.useMemo((function(){return{columnIndex:n,getOwnerDocument:r}}),[n,r]);return i.default.createElement(M.Provider,{value:u},o)},V=["close","focus","open"],N=["getValue","setValue"],z={open:"onOpen",close:"onClose",prepare:"onPrepare",focus:"onFocus"};function q(e,t){return function(n){function r(n){var o;return b(this,r),o=h(this,r,[n]),t.current=o,Object.getOwnPropertyNames(c.default.editors.BaseEditor.prototype).forEach((function(t){if("constructor"!==t&&!N.includes(t)){var n=c.default.editors.BaseEditor.prototype[t];r.prototype[t]=function(){for(var r,o,u,a=arguments.length,i=Array(a),l=0;a>l;l++)i[l]=arguments[l];(V.includes(t)||(o=n.call.apply(n,[this].concat(i))),z[t]&&null!==(r=e.current)&&void 0!==r&&r[z[t]])&&(o=(u=e.current[z[t]]).call.apply(u,[this].concat(i)));return o}.bind(o)}})),o}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&j(e,t)}(r,n),O(r,[{key:"focus",value:function(){}},{key:"getValue",value:function(){return this.value}},{key:"setValue",value:function(e){this.value=e}},{key:"open",value:function(){}},{key:"close",value:function(){}}])}(c.default.editors.BaseEditor)}var B=t.createContext(void 0),W=function(e){return i.default.createElement(B.Provider,{value:{hooksRef:e.hooksRef,hotCustomEditorInstanceRef:e.hotCustomEditorInstanceRef}},e.children)};var F=function(e){return e.type===L},U=["_columnIndex","_getOwnerDocument","children"],L=function(e){var n=D(),r=n.componentRendererColumns,o=n.emitColumnSettings,u=n.getRendererWrapper,a=t.useContext(M),l=a.columnIndex,c=a.getOwnerDocument,s=t.useRef(null),p=t.useRef(null);t.useEffect((function(){var t=function(){var t=T.getSettings(Object.keys(e).filter((function(e){return!U.includes(e)})).reduce((function(t,n){return t[n]=e[n],t}),{}));return e.renderer?(t.renderer=u(e.renderer),r.set(l,!0)):e.hotRenderer&&(t.renderer=e.hotRenderer),e.editor?t.editor=q(s,p):e.hotEditor&&(t.editor=e.hotEditor),t}();o(t,l),f(e.children)||i.default.Children.toArray(e.children).length&&d("Unexpected children nodes found in HotColumn component. HotColumn components do not support any children.")}));var v=m(c(),e.editor);return i.default.createElement(W,{hooksRef:s,hotCustomEditorInstanceRef:p},v)},K=t.forwardRef((function(e,n){var r=S(t.useState([]),2),o=r[0],u=r[1];return t.useImperativeHandle(n,(function(){return u})),i.default.createElement(t.Fragment,null,o)}));function Y(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var $,G,J,Q,X={exports:{}};X.exports=function(){if(Q)return J;Q=1;var e=G?$:(G=1,$="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");function t(){}function n(){}return n.resetWarningCache=t,J=function(){function r(t,n,r,o,u,a){if(a!==e){var i=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function o(){return r}r.isRequired=r;var u={array:r,bigint:r,bool:r,func:r,number:r,object:r,string:r,symbol:r,any:r,arrayOf:o,element:r,elementType:r,instanceOf:o,node:r,objectOf:o,oneOf:o,oneOfType:o,shape:o,exact:o,checkPropTypes:n,resetWarningCache:t};return u.PropTypes=u,u}}()();var Z=Y(X.exports),ee=t.forwardRef((function(e,n){var r,a,l,s=t.useRef(null),p=t.useRef(null),y=t.useRef(null),h=t.useRef(null),b=t.useRef(),g=D(),O=t.useCallback((function(){return s.current&&s.current.isDestroyed?(console.warn("The Handsontable instance bound to this component was destroyed and cannot be used properly."),null):s.current}),[s]),C=t.useCallback((function(){return!s.current||s.current.isDestroyed}),[s]),w=t.useCallback((function(){g.clearRenderedCellCache(),g.componentRendererColumns.clear()}),[g]),R=t.useCallback((function(){return"undefined"!=typeof window?p.current?p.current.ownerDocument:document:null}),[p]),P=function(){var t,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=C()?[]:(null===(t=O())||void 0===t||null===(t=t.getSettings())||void 0===t?void 0:t._initOnlySettings)||[],i=T.getSettings(e,{prevProps:r,isInit:n,initOnlySettingKeys:a});return i.columns=g.columnsSettings.length?g.columnsSettings:i.columns,e.renderer?(i.renderer=g.getRendererWrapper(e.renderer),g.componentRendererColumns.set("global",!0)):i.renderer=e.hotRenderer||o.getRenderer("text"),i.editor=e.editor?q(y,h):e.hotEditor||u.getEditor("text"),i},E=function(e){var t,n;e&&(null!==(t=e.getPlugin("autoRowSize"))&&void 0!==t&&t.enabled||null!==(n=e.getPlugin("autoColumnSize"))&&void 0!==n&&n.enabled)&&g.componentRendererColumns.size>0&&d("Your `HotTable` configuration includes `autoRowSize`/`autoColumnSize` options, which are not compatible with the component-based renderers`. Disable `autoRowSize` and `autoColumnSize` to prevent row and column misalignment.")};t.useEffect((function(){var t,n=P(!0);return b.current=e,s.current=new c.default.Core(p.current,n),s.current.addHook("beforeViewRender",(function(){g.clearPortalCache(),g.clearRenderedCellCache()})),s.current.addHook("afterViewRender",(function(){g.pushCellPortalsIntoPortalManager()})),s.current.init(),E(s.current),f(e.children)||(t=L,i.default.Children.toArray(e.children).some((function(e){return e.type!==t}))&&d("Unexpected children nodes found in HotTable component. Only HotColumn components are allowed.")),function(){var e;w(),null===(e=O())||void 0===e||e.destroy()}}),[]),r=function(){w();var t=O(),n=P(!1,b.current);b.current=e,null==t||t.updateSettings(n,!1),E(t),f(e.children)},l=i.default.useRef(!1),t.useEffect((function(){if(l.current)return r();l.current=!0}),a),t.useImperativeHandle(n,(function(){return{get hotElementRef(){return p.current},get hotInstance(){return O()}}}));var j=t.Children.toArray(e.children).filter(F).map((function(e,t){return i.default.createElement(A,{columnIndex:t,getOwnerDocument:R,key:t},e)})),S=v(e),k=m(R(),e.editor);return i.default.createElement(t.Fragment,null,i.default.createElement("div",Object.assign({ref:p},S),j),i.default.createElement(K,{ref:g.setRenderersPortalManagerRef}),i.default.createElement(W,{hooksRef:y,hotCustomEditorInstanceRef:h},k))}));ee.propTypes={style:Z.object,id:Z.string,className:Z.string};var te=["children"],ne=t.forwardRef((function(e,n){var r,o=e.children,u=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;u.length>r;r++)t.includes(n=u[r])||{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,te),a=null!==(r=u.id)&&void 0!==r?r:t.useId();return i.default.createElement(_,null,i.default.createElement(ee,Object.assign({id:a},u,{ref:n}),o))}));ne.version="15.0.0-next-8d7ffcf-20241216",e.HotColumn=L,e.HotTable=ne,e.default=ne,e.isHotColumn=F,e.useHotEditor=function(e,n){var r=t.useContext(B),o=r.hooksRef,u=r.hotCustomEditorInstanceRef,a=S(t.useState(0),2),i=a[0],l=a[1],c=S(t.useState(),2),s=c[1],d=t.useDeferredValue(c[0]);return t.useImperativeHandle(o,(function(){return E(E({},e),{},{onOpen:function(){var t,n;s(null===(t=u.current)||void 0===t?void 0:t.getValue()),null==e||null===(n=e.onOpen)||void 0===n||n.call(e),l((function(e){return e+1}))}})}),n),t.useMemo((function(){return{get value(){return d},setValue:function(e){var t;s(e),null===(t=u.current)||void 0===t||t.setValue(e)},get isOpen(){var e,t;return null!==(e=null===(t=u.current)||void 0===t?void 0:t.isOpened())&&void 0!==e&&e},finishEditing:function(){var e;null===(e=u.current)||void 0===e||e.finishEditing()},get row(){var e;return null===(e=u.current)||void 0===e?void 0:e.row},get col(){var e;return null===(e=u.current)||void 0===e?void 0:e.col}}}),[i,u,d])},Object.defineProperty(e,"__esModule",{value:!0})}));
31
31
  //# sourceMappingURL=react-handsontable.min.js.map
@@ -753,7 +753,7 @@ var HotColumn = function HotColumn(props) {
753
753
  }, editorPortal);
754
754
  };
755
755
 
756
- var version="15.0.0-next-07b7ebc-20241210";
756
+ var version="15.0.0-next-8d7ffcf-20241216";
757
757
 
758
758
  /**
759
759
  * Component used to manage the renderer component portals.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@handsontable/react-wrapper",
3
- "version": "15.0.0-next-07b7ebc-20241210",
3
+ "version": "15.0.0-next-8d7ffcf-20241216",
4
4
  "description": "Best Data Grid for React with Spreadsheet Look and Feel.",
5
5
  "author": "Handsoncode <hello@handsoncode.net> (https://handsoncode.net)",
6
6
  "homepage": "https://handsontable.com",
@@ -71,7 +71,7 @@
71
71
  "@types/react-dom": "^18.2.0",
72
72
  "@types/react-redux": "^7.1.7",
73
73
  "cross-env": "^7.0.3",
74
- "handsontable": "15.0.0-next-07b7ebc-20241210",
74
+ "handsontable": "15.0.0-next-8d7ffcf-20241216",
75
75
  "jest": "^29.7.0",
76
76
  "prop-types": "^15.7.2",
77
77
  "react": "^18.2.0",
@@ -86,7 +86,7 @@
86
86
  "uglify-js": "^3.4.9"
87
87
  },
88
88
  "peerDependencies": {
89
- "handsontable": "15.0.0-next-07b7ebc-20241210"
89
+ "handsontable": "15.0.0-next-8d7ffcf-20241216"
90
90
  },
91
91
  "scripts": {
92
92
  "build": "npm run clean && npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:min && npm run prepare:types",