@progress/kendo-react-spreadsheet 14.5.0-develop.9 → 15.0.0-develop.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![KendoReact NPM Banner](https://raw.githubusercontent.com/telerik/kendo-react/master/images/kendoreact-github-banner.png)](https://www.telerik.com/kendo-react-ui/components/free?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-react-trial-npm-spreadsheet&utm_content=banner)
1
+ [![KendoReact NPM Banner](https://raw.githubusercontent.com/telerik/kendo-react/master/images/kendoreact-github-banner.png)](https://www.telerik.com/kendo-react-ui/components/getting-started/free-vs-premium?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-react-trial-npm-spreadsheet&utm_content=banner)
2
2
 
3
3
  # KendoReact Spreadsheet Library for React
4
4
 
@@ -12,7 +12,7 @@
12
12
  >
13
13
  > [Start using KendoReact](https://www.telerik.com/try/kendo-react-ui?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-react-trial-npm-spreadsheet) and speed up your development process!
14
14
  >
15
- > If you're looking for free React components, check out [Get Started with KendoReact Free](https://www.telerik.com/kendo-react-ui/components/free).
15
+ > If you're looking for free React components, check out [Get Started with KendoReact Free](https://www.telerik.com/kendo-react-ui/components/getting-started).
16
16
 
17
17
  The [React Spreadsheet library](https://www.telerik.com/kendo-react-ui/spreadsheet), part of KendoReact, allows you to edit and visualize tabular data by using cell formatting options, styles, and themes.
18
18
 
@@ -33,7 +33,7 @@ Among the features which the KendoReact Spreadsheet component delivers are:
33
33
 
34
34
  The following table outlines the key resources available with KendoReact and KendoReact Free.
35
35
 
36
- | | [KendoReact Free](https://www.telerik.com/kendo-react-ui/components/free) | [KendoReact](https://www.telerik.com/kendo-react-ui) |
36
+ | | [KendoReact Free](https://www.telerik.com/kendo-react-ui/components/getting-started/free-vs-premium) | [KendoReact](https://www.telerik.com/kendo-react-ui) |
37
37
  | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
38
38
  | React components | 50+ | 120+ |
39
39
  | Four professional themes | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z" stroke="white" stroke-width="2"/></svg> | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z" stroke="white" stroke-width="2"/></svg> |
@@ -56,7 +56,7 @@ For any issues you might encounter while working with the KendoReact Spreadsheet
56
56
  ## Resources
57
57
 
58
58
  - [Getting Started with KendoReact](https://www.telerik.com/kendo-react-ui/components/getting-started/?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-react-trial-npm-spreadsheet)
59
- - [Get Started with KendoReact Free](https://www.telerik.com/kendo-react-ui/components/free)
59
+ - [Get Started with KendoReact Free](https://www.telerik.com/kendo-react-ui/components/getting-started)
60
60
  - [Get Started with the KendoReact Spreadsheet](https://www.telerik.com/kendo-react-ui/components/spreadsheet/?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-react-trial-npm-spreadsheet)
61
61
  - [API Reference of the KendoReact Spreadsheet](https://www.telerik.com/kendo-react-ui/components/spreadsheet/api/?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-react-trial-npm-spreadsheet)
62
62
  - [KendoReact Roadmap](https://www.telerik.com/support/whats-new/kendo-react-ui/roadmap?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-react-trial-npm-spreadsheet)
package/Spreadsheet.js CHANGED
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const re=require("react"),s=require("prop-types"),y=require("@progress/kendo-react-buttons"),M=require("@progress/kendo-react-layout"),P=require("@progress/kendo-react-dialogs"),W=require("./FormulaInput.js"),ne=require("./NameBox.js"),oe=require("./SheetsBar.js"),ae=require("@progress/kendo-spreadsheet-common"),j=require("./tools/defaultTools.js"),b=require("@progress/kendo-react-common"),D=require("./package-metadata.js"),se=require("@progress/kendo-svg-icons"),w=require("@progress/kendo-react-intl"),le=require("@progress/kendo-file-saver"),ce=require("@progress/kendo-ooxml"),l=require("./messages.js");function ie(e){const f=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const m in e)if(m!=="default"){const h=Object.getOwnPropertyDescriptor(e,m);Object.defineProperty(f,m,h.get?h:{enumerable:!0,get:()=>e[m]})}}return f.default=e,Object.freeze(f)}const r=ie(re),J=["bold","italic","underline","fontFamily","fontSize","color","background","textAlign","verticalAlign","wrap","gridLines"],N={Bold:e=>e.bold,Italic:e=>e.italic,Underline:e=>e.underline,FontFamily:e=>e.fontFamily,FontSize:e=>e.fontSize,IncreaseFontSize:e=>e.fontSize,DecreaseFontSize:e=>e.fontSize,TextColor:e=>e.color,BackgroundColor:e=>e.background,Alignment:e=>({textAlign:e.textAlign,verticalAlign:e.verticalAlign}),AlignHorizontally:e=>e.textAlign,AlignVertically:e=>e.verticalAlign,TextWrap:e=>e.wrap,GridLines:e=>e.gridLines,AddColumnLeft:e=>e.selectedHeaders,AddColumnRight:e=>e.selectedHeaders,AddRowBelow:e=>e.selectedHeaders,AddRowAbove:e=>e.selectedHeaders,DeleteColumn:e=>e.selectedHeaders,DeleteRow:e=>e.selectedHeaders},K=":not(.k-dropdownlist button):not(.k-combobox button):not(.k-upload-button):not(.k-colorpicker button):not(.k-split-button .k-split-button-arrow)",ue=["button"+K,".k-button-group > button"+K,".k-dropdownlist",".k-combobox",".k-colorpicker"],R=r.forwardRef((e,f)=>{const m=!b.validatePackage(D.packageMetadata,{component:"Spreadsheet"}),h=b.getLicenseMessage(D.packageMetadata),{toolbar:v=j.defaultTabs}=e,g=[];typeof v=="boolean"?g.push(...v?j.defaultTabs:[]):g.push(...v);const[i,I]=r.useState(null),[_,G]=r.useState(g.findIndex(t=>t.selected)||0),[de,V]=r.useState(!1),E=r.useRef(null),A=r.useRef(null),F=r.useRef(null),q=r.useRef(null),a=r.useRef(null),[x,U]=r.useState({}),S=r.useRef({});S.current=x;const c=r.useRef({});c.current=e;const C=w.useLocalization(),Q=r.useCallback(t=>{c.current.onSelect&&c.current.onSelect.call(void 0,t)},[]),X=r.useCallback(t=>{c.current.onChange&&c.current.onChange.call(void 0,t)},[]),Y=r.useCallback(t=>{c.current.onChangeFormat&&c.current.onChangeFormat.call(void 0,t)},[]),Z=r.useCallback(t=>{c.current.onExcelImport&&c.current.onExcelImport.call(void 0,t)},[]),$=r.useCallback(t=>{c.current.onExcelExport&&c.current.onExcelExport.call(void 0,t)},[]),T=r.useRef(null);r.useImperativeHandle(T,()=>({element:E.current,get instance(){return a.current},props:e,get view(){return a.current.view},get workbook(){return a.current.workbook},executeCommand(t){var n;(n=a.current)==null||n.executeCommand(t)},fromJSON(t){var n;return(n=a.current)==null?void 0:n.fromJSON(t)},toJSON(){return a.current.toJSON()},saveJSON(){return a.current.saveJSON()},fromFile(t){return a.current.fromFile(t)},saveAsExcel(t){var n;(n=a.current)==null||n.saveAsExcel({...a.current.options.excel,saveAs:le.saveAs,Workbook:ce.Workbook,...t})},activeSheet(t){var n;return(n=a.current)==null?void 0:n.activeSheet(t)},sheets(){return a.current.sheets()},refresh(){var t;return(t=a.current)==null?void 0:t.refresh()}}),[e]),r.useImperativeHandle(f,()=>T.current);const ee=r.useCallback(()=>a.current&&a.current.view.nameEditor,[]),H=r.useCallback(t=>{const n={};J.forEach(o=>{typeof t.range[o]=="function"?n[o]=t.range[o]():o==="gridLines"&&(n[o]=t.range.sheet().showGridLines())}),n.selectedHeaders=t.range.sheet().selectedHeaders(),(J.some(o=>n[o]!==S.current[o])||n.selectedHeaders.allCols!==S.current.selectedHeaders.allCols||n.selectedHeaders.allRows!==S.current.selectedHeaders.allRows)&&U(n)},[]),te=r.useCallback(t=>{const n=t.name,o=l.keys[n];I({title:t.title==="Error"?C.toLanguageString(l.keys.error,l.messages[l.keys.error]):t.title,message:o?C.toLanguageString(o,l.messages[o]||t.text):t.text,close:t.close})},[]),L=r.useCallback(()=>{I(null),i==null||i.close()},[i]),p=w.useInternationalization(),O=w.useLocalization();r.useEffect(()=>{var k;const t={...e.defaultProps,sheets:window==null?void 0:window.structuredClone((k=e.defaultProps)==null?void 0:k.sheets),messages:{workbook:{defaultSheetName:O.toLanguageString(l.keys.defaultSheetName,l.messages[l.keys.defaultSheetName])}},intl:{localeInfo:()=>p.localeInfo(),localeCurrency:()=>p.localeCurrency(),parseDate:(u,d)=>p.parseDate(u,d),toString:(u,d)=>p.toString(u,d),format:(u,...d)=>p.format(u,...d)},formulaBarInputRef:A,formulaCellInputRef:F,nameBoxRef:q},n=new ae.SpreadsheetWidget(E.current,t);a.current=n,n.bind("select",Q),n.bind("change",X),n.bind("changeFormat",Y),n.bind("excelImport",Z),n.bind("excelExport",$),n.view.bind("update",H),n.view.bind("message",te);const o=n.activeSheet();return o&&H({range:o.range(o.activeCell())}),V(!0),()=>{n.destroy()}},[]);const B=r.useCallback((t,n)=>{const o=r.createElement(t,{spreadsheetRef:a,value:N[t.displayName]?N[t.displayName](x):void 0,key:n});return o.type===y.ToolbarSeparator?r.createElement(t,{key:n}):o},[x]);let z=null;return g.length&&(z=r.createElement(M.TabStrip,{selected:_,animation:!1,className:"k-floatwrap k-spreadsheet-tabstrip",style:{minHeight:"auto"},onSelect:t=>G(t.selected)},g.map(t=>{const n=t.textKey?O.toLanguageString(t.textKey,l.messages[t.textKey]):t.text;return r.createElement(M.TabStripTab,{key:t.textKey||t.text,title:n},r.createElement(y.Toolbar,{buttons:ue,className:"k-spreadsheet-toolbar"},t.tools.map((o,k)=>Array.isArray(o)?r.createElement(y.ButtonGroup,{key:k},o.map((u,d)=>B(u,d))):B(o,k))))}))),r.createElement("div",{ref:E,style:e.style,className:b.classNames("k-widget k-spreadsheet",e.className),role:"application"},z,r.createElement("div",{className:"k-spreadsheet-action-bar"},r.createElement(ne.NameBox,{ref:q,nameEditor:ee}),r.createElement("div",{className:"k-spreadsheet-formula-bar"},r.createElement(b.IconWrap,{name:"formula-fx",icon:se.formulaFxIcon}),r.createElement(W.FormulaInput,{ref:A}))),r.createElement("div",{className:"k-spreadsheet-view"},r.createElement("div",{className:"k-spreadsheet-fixed-container"}),r.createElement("div",{className:"k-spreadsheet-scroller"},r.createElement("div",{className:"k-spreadsheet-view-size"})),r.createElement("div",{tabIndex:0,className:"k-spreadsheet-clipboard",contentEditable:"true"}),r.createElement(W.FormulaInput,{ref:F,className:"k-spreadsheet-cell-editor"})),r.createElement(oe.SheetsBar,{spreadsheetRef:a}),i&&r.createElement(P.Dialog,{title:i.title,onClose:L},r.createElement("div",null,i.message),r.createElement(P.DialogActionsBar,{layout:"start"},r.createElement(y.Button,{themeColor:"primary",onClick:L,autoFocus:!0},C.toLanguageString(l.keys.ok,l.messages[l.keys.ok])))),m&&r.createElement(b.WatermarkOverlay,{message:h}))});R.displayName="KendoReactSpreadsheet";R.propTypes={className:s.string,defaultProps:s.any,toolbar:s.oneOfType([s.bool,s.arrayOf(s.any)]),style:s.object,onSelect:s.func,onChange:s.func,onChangeFormat:s.func,onExcelImport:s.func,onExcelExport:s.func};exports.Spreadsheet=R;exports.toolsValueMap=N;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const re=require("react"),s=require("prop-types"),y=require("@progress/kendo-react-buttons"),M=require("@progress/kendo-react-layout"),P=require("@progress/kendo-react-dialogs"),W=require("./FormulaInput.js"),ne=require("./NameBox.js"),ae=require("./SheetsBar.js"),oe=require("@progress/kendo-spreadsheet-common"),j=require("./tools/defaultTools.js"),g=require("@progress/kendo-react-common"),D=require("./package-metadata.js"),se=require("@progress/kendo-svg-icons"),R=require("@progress/kendo-react-intl"),le=require("@progress/kendo-file-saver"),ce=require("@progress/kendo-ooxml"),l=require("./messages.js");function ie(e){const f=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const m in e)if(m!=="default"){const h=Object.getOwnPropertyDescriptor(e,m);Object.defineProperty(f,m,h.get?h:{enumerable:!0,get:()=>e[m]})}}return f.default=e,Object.freeze(f)}const r=ie(re),J=["bold","italic","underline","fontFamily","fontSize","color","background","textAlign","verticalAlign","wrap","gridLines"],N={Bold:e=>e.bold,Italic:e=>e.italic,Underline:e=>e.underline,FontFamily:e=>e.fontFamily,FontSize:e=>e.fontSize,IncreaseFontSize:e=>e.fontSize,DecreaseFontSize:e=>e.fontSize,TextColor:e=>e.color,BackgroundColor:e=>e.background,Alignment:e=>({textAlign:e.textAlign,verticalAlign:e.verticalAlign}),AlignHorizontally:e=>e.textAlign,AlignVertically:e=>e.verticalAlign,TextWrap:e=>e.wrap,GridLines:e=>e.gridLines,AddColumnLeft:e=>e.selectedHeaders,AddColumnRight:e=>e.selectedHeaders,AddRowBelow:e=>e.selectedHeaders,AddRowAbove:e=>e.selectedHeaders,DeleteColumn:e=>e.selectedHeaders,DeleteRow:e=>e.selectedHeaders},K=":not(.k-dropdownlist button):not(.k-combobox button):not(.k-upload-button):not(.k-colorpicker button):not(.k-split-button .k-split-button-arrow)",ue=["button"+K,".k-button-group > button"+K,".k-dropdownlist",".k-combobox",".k-colorpicker"],I=r.forwardRef((e,f)=>{const m=!g.validatePackage(D.packageMetadata,{component:"Spreadsheet"}),h=g.getLicenseMessage(D.packageMetadata),{toolbar:v=j.defaultTabs}=e,p=[];typeof v=="boolean"?p.push(...v?j.defaultTabs:[]):p.push(...v);const[i,A]=r.useState(null),[_,G]=r.useState(p.findIndex(t=>t.selected)||0),[de,V]=r.useState(!1),E=r.useRef(null),F=r.useRef(null),q=r.useRef(null),T=r.useRef(null),o=r.useRef(null),[x,U]=r.useState({}),S=r.useRef({});S.current=x;const c=r.useRef({});c.current=e;const C=R.useLocalization(),Q=r.useCallback(t=>{c.current.onSelect&&c.current.onSelect.call(void 0,t)},[]),X=r.useCallback(t=>{c.current.onChange&&c.current.onChange.call(void 0,t)},[]),Y=r.useCallback(t=>{c.current.onChangeFormat&&c.current.onChangeFormat.call(void 0,t)},[]),Z=r.useCallback(t=>{c.current.onExcelImport&&c.current.onExcelImport.call(void 0,t)},[]),$=r.useCallback(t=>{c.current.onExcelExport&&c.current.onExcelExport.call(void 0,t)},[]),w=r.useRef(null);r.useImperativeHandle(w,()=>({element:E.current,get instance(){return o.current},props:e,get view(){return o.current.view},get workbook(){return o.current.workbook},executeCommand(t){var n;(n=o.current)==null||n.executeCommand(t)},fromJSON(t){var n;return(n=o.current)==null?void 0:n.fromJSON(t)},toJSON(){return o.current.toJSON()},saveJSON(){return o.current.saveJSON()},fromFile(t){return o.current.fromFile(t)},saveAsExcel(t){var n;(n=o.current)==null||n.saveAsExcel({...o.current.options.excel,saveAs:le.saveAs,Workbook:ce.Workbook,...t})},activeSheet(t){var n;return(n=o.current)==null?void 0:n.activeSheet(t)},sheets(){return o.current.sheets()},refresh(){var t;return(t=o.current)==null?void 0:t.refresh()}}),[e]),r.useImperativeHandle(f,()=>w.current),g.useWebMcpRegister("spreadsheet",w,e,e.webMcp);const ee=r.useCallback(()=>o.current&&o.current.view.nameEditor,[]),H=r.useCallback(t=>{const n={};J.forEach(a=>{typeof t.range[a]=="function"?n[a]=t.range[a]():a==="gridLines"&&(n[a]=t.range.sheet().showGridLines())}),n.selectedHeaders=t.range.sheet().selectedHeaders(),(J.some(a=>n[a]!==S.current[a])||n.selectedHeaders.allCols!==S.current.selectedHeaders.allCols||n.selectedHeaders.allRows!==S.current.selectedHeaders.allRows)&&U(n)},[]),te=r.useCallback(t=>{const n=t.name,a=l.keys[n];A({title:t.title==="Error"?C.toLanguageString(l.keys.error,l.messages[l.keys.error]):t.title,message:a?C.toLanguageString(a,l.messages[a]||t.text):t.text,close:t.close})},[]),L=r.useCallback(()=>{A(null),i==null||i.close()},[i]),k=R.useInternationalization(),O=R.useLocalization();r.useEffect(()=>{var b;const t={...e.defaultProps,sheets:window==null?void 0:window.structuredClone((b=e.defaultProps)==null?void 0:b.sheets),messages:{workbook:{defaultSheetName:O.toLanguageString(l.keys.defaultSheetName,l.messages[l.keys.defaultSheetName])}},intl:{localeInfo:()=>k.localeInfo(),localeCurrency:()=>k.localeCurrency(),parseDate:(u,d)=>k.parseDate(u,d),toString:(u,d)=>k.toString(u,d),format:(u,...d)=>k.format(u,...d)},formulaBarInputRef:F,formulaCellInputRef:q,nameBoxRef:T},n=new oe.SpreadsheetWidget(E.current,t);o.current=n,n.bind("select",Q),n.bind("change",X),n.bind("changeFormat",Y),n.bind("excelImport",Z),n.bind("excelExport",$),n.view.bind("update",H),n.view.bind("message",te);const a=n.activeSheet();return a&&H({range:a.range(a.activeCell())}),V(!0),()=>{n.destroy()}},[]);const B=r.useCallback((t,n)=>{const a=r.createElement(t,{spreadsheetRef:o,value:N[t.displayName]?N[t.displayName](x):void 0,key:n});return a.type===y.ToolbarSeparator?r.createElement(t,{key:n}):a},[x]);let z=null;return p.length&&(z=r.createElement(M.TabStrip,{selected:_,animation:!1,className:"k-floatwrap k-spreadsheet-tabstrip",style:{minHeight:"auto"},onSelect:t=>G(t.selected)},p.map(t=>{const n=t.textKey?O.toLanguageString(t.textKey,l.messages[t.textKey]):t.text;return r.createElement(M.TabStripTab,{key:t.textKey||t.text,title:n},r.createElement(y.Toolbar,{buttons:ue,className:"k-spreadsheet-toolbar"},t.tools.map((a,b)=>Array.isArray(a)?r.createElement(y.ButtonGroup,{key:b},a.map((u,d)=>B(u,d))):B(a,b))))}))),r.createElement("div",{ref:E,style:e.style,className:g.classNames("k-widget k-spreadsheet",e.className),role:"application"},z,r.createElement("div",{className:"k-spreadsheet-action-bar"},r.createElement(ne.NameBox,{ref:T,nameEditor:ee}),r.createElement("div",{className:"k-spreadsheet-formula-bar"},r.createElement(g.IconWrap,{name:"formula-fx",icon:se.formulaFxIcon}),r.createElement(W.FormulaInput,{ref:F}))),r.createElement("div",{className:"k-spreadsheet-view"},r.createElement("div",{className:"k-spreadsheet-fixed-container"}),r.createElement("div",{className:"k-spreadsheet-scroller"},r.createElement("div",{className:"k-spreadsheet-view-size"})),r.createElement("div",{tabIndex:0,className:"k-spreadsheet-clipboard",contentEditable:"true"}),r.createElement(W.FormulaInput,{ref:q,className:"k-spreadsheet-cell-editor"})),r.createElement(ae.SheetsBar,{spreadsheetRef:o}),i&&r.createElement(P.Dialog,{title:i.title,onClose:L},r.createElement("div",null,i.message),r.createElement(P.DialogActionsBar,{layout:"start"},r.createElement(y.Button,{themeColor:"primary",onClick:L,autoFocus:!0},C.toLanguageString(l.keys.ok,l.messages[l.keys.ok])))),m&&r.createElement(g.WatermarkOverlay,{message:h}))});I.displayName="KendoReactSpreadsheet";I.propTypes={className:s.string,defaultProps:s.any,toolbar:s.oneOfType([s.bool,s.arrayOf(s.any)]),style:s.object,onSelect:s.func,onChange:s.func,onChangeFormat:s.func,onExcelImport:s.func,onExcelExport:s.func};exports.Spreadsheet=I;exports.toolsValueMap=N;
package/Spreadsheet.mjs CHANGED
@@ -5,7 +5,7 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import * as t from "react";
8
+ import * as r from "react";
9
9
  import l from "prop-types";
10
10
  import { ToolbarSeparator as $, Toolbar as ee, ButtonGroup as te, Button as re } from "@progress/kendo-react-buttons";
11
11
  import { TabStrip as ne, TabStripTab as oe } from "@progress/kendo-react-layout";
@@ -15,12 +15,12 @@ import { NameBox as se } from "./NameBox.mjs";
15
15
  import { SheetsBar as ce } from "./SheetsBar.mjs";
16
16
  import { SpreadsheetWidget as ie } from "@progress/kendo-spreadsheet-common";
17
17
  import { defaultTabs as L } from "./tools/defaultTools.mjs";
18
- import { validatePackage as ue, getLicenseMessage as me, classNames as de, IconWrap as fe, WatermarkOverlay as pe } from "@progress/kendo-react-common";
18
+ import { validatePackage as ue, getLicenseMessage as me, useWebMcpRegister as de, classNames as fe, IconWrap as pe, WatermarkOverlay as ge } from "@progress/kendo-react-common";
19
19
  import { packageMetadata as T } from "./package-metadata.mjs";
20
- import { formulaFxIcon as ge } from "@progress/kendo-svg-icons";
20
+ import { formulaFxIcon as be } from "@progress/kendo-svg-icons";
21
21
  import { useLocalization as z, useInternationalization as ke } from "@progress/kendo-react-intl";
22
- import { saveAs as be } from "@progress/kendo-file-saver";
23
- import { Workbook as he } from "@progress/kendo-ooxml";
22
+ import { saveAs as he } from "@progress/kendo-file-saver";
23
+ import { Workbook as Se } from "@progress/kendo-ooxml";
24
24
  import { keys as m, messages as g } from "./messages.mjs";
25
25
  const B = [
26
26
  "bold",
@@ -35,58 +35,58 @@ const B = [
35
35
  "wrap",
36
36
  "gridLines"
37
37
  ], O = {
38
- Bold: (r) => r.bold,
39
- Italic: (r) => r.italic,
40
- Underline: (r) => r.underline,
41
- FontFamily: (r) => r.fontFamily,
42
- FontSize: (r) => r.fontSize,
43
- IncreaseFontSize: (r) => r.fontSize,
44
- DecreaseFontSize: (r) => r.fontSize,
45
- TextColor: (r) => r.color,
46
- BackgroundColor: (r) => r.background,
47
- Alignment: (r) => ({ textAlign: r.textAlign, verticalAlign: r.verticalAlign }),
48
- AlignHorizontally: (r) => r.textAlign,
49
- AlignVertically: (r) => r.verticalAlign,
50
- TextWrap: (r) => r.wrap,
51
- GridLines: (r) => r.gridLines,
52
- AddColumnLeft: (r) => r.selectedHeaders,
53
- AddColumnRight: (r) => r.selectedHeaders,
54
- AddRowBelow: (r) => r.selectedHeaders,
55
- AddRowAbove: (r) => r.selectedHeaders,
56
- DeleteColumn: (r) => r.selectedHeaders,
57
- DeleteRow: (r) => r.selectedHeaders
58
- }, J = ":not(.k-dropdownlist button):not(.k-combobox button):not(.k-upload-button):not(.k-colorpicker button):not(.k-split-button .k-split-button-arrow)", Se = [
59
- "button" + J,
60
- ".k-button-group > button" + J,
38
+ Bold: (t) => t.bold,
39
+ Italic: (t) => t.italic,
40
+ Underline: (t) => t.underline,
41
+ FontFamily: (t) => t.fontFamily,
42
+ FontSize: (t) => t.fontSize,
43
+ IncreaseFontSize: (t) => t.fontSize,
44
+ DecreaseFontSize: (t) => t.fontSize,
45
+ TextColor: (t) => t.color,
46
+ BackgroundColor: (t) => t.background,
47
+ Alignment: (t) => ({ textAlign: t.textAlign, verticalAlign: t.verticalAlign }),
48
+ AlignHorizontally: (t) => t.textAlign,
49
+ AlignVertically: (t) => t.verticalAlign,
50
+ TextWrap: (t) => t.wrap,
51
+ GridLines: (t) => t.gridLines,
52
+ AddColumnLeft: (t) => t.selectedHeaders,
53
+ AddColumnRight: (t) => t.selectedHeaders,
54
+ AddRowBelow: (t) => t.selectedHeaders,
55
+ AddRowAbove: (t) => t.selectedHeaders,
56
+ DeleteColumn: (t) => t.selectedHeaders,
57
+ DeleteRow: (t) => t.selectedHeaders
58
+ }, M = ":not(.k-dropdownlist button):not(.k-combobox button):not(.k-upload-button):not(.k-colorpicker button):not(.k-split-button .k-split-button-arrow)", Ee = [
59
+ "button" + M,
60
+ ".k-button-group > button" + M,
61
61
  ".k-dropdownlist",
62
62
  ".k-combobox",
63
63
  ".k-colorpicker"
64
- ], W = t.forwardRef((r, K) => {
65
- const M = !ue(T, { component: "Spreadsheet" }), P = me(T), { toolbar: b = L } = r, d = [];
66
- typeof b == "boolean" ? d.push(...b ? L : []) : d.push(...b);
67
- const [c, v] = t.useState(null), [D, G] = t.useState(d.findIndex((e) => e.selected) || 0), [Ee, U] = t.useState(!1), h = t.useRef(null), x = t.useRef(null), y = t.useRef(null), C = t.useRef(null), a = t.useRef(null), [S, V] = t.useState({}), k = t.useRef({});
68
- k.current = S;
69
- const s = t.useRef({});
70
- s.current = r;
71
- const E = z(), j = t.useCallback((e) => {
64
+ ], W = r.forwardRef((t, J) => {
65
+ const K = !ue(T, { component: "Spreadsheet" }), P = me(T), { toolbar: k = L } = t, d = [];
66
+ typeof k == "boolean" ? d.push(...k ? L : []) : d.push(...k);
67
+ const [c, x] = r.useState(null), [D, G] = r.useState(d.findIndex((e) => e.selected) || 0), [ve, U] = r.useState(!1), h = r.useRef(null), y = r.useRef(null), C = r.useRef(null), w = r.useRef(null), a = r.useRef(null), [S, V] = r.useState({}), b = r.useRef({});
68
+ b.current = S;
69
+ const s = r.useRef({});
70
+ s.current = t;
71
+ const E = z(), j = r.useCallback((e) => {
72
72
  s.current.onSelect && s.current.onSelect.call(void 0, e);
73
- }, []), _ = t.useCallback((e) => {
73
+ }, []), _ = r.useCallback((e) => {
74
74
  s.current.onChange && s.current.onChange.call(void 0, e);
75
- }, []), q = t.useCallback((e) => {
75
+ }, []), q = r.useCallback((e) => {
76
76
  s.current.onChangeFormat && s.current.onChangeFormat.call(void 0, e);
77
- }, []), Q = t.useCallback((e) => {
77
+ }, []), Q = r.useCallback((e) => {
78
78
  s.current.onExcelImport && s.current.onExcelImport.call(void 0, e);
79
- }, []), X = t.useCallback((e) => {
79
+ }, []), X = r.useCallback((e) => {
80
80
  s.current.onExcelExport && s.current.onExcelExport.call(void 0, e);
81
- }, []), w = t.useRef(null);
82
- t.useImperativeHandle(
83
- w,
81
+ }, []), v = r.useRef(null);
82
+ r.useImperativeHandle(
83
+ v,
84
84
  () => ({
85
85
  element: h.current,
86
86
  get instance() {
87
87
  return a.current;
88
88
  },
89
- props: r,
89
+ props: t,
90
90
  get view() {
91
91
  return a.current.view;
92
92
  },
@@ -114,8 +114,8 @@ const B = [
114
114
  var n;
115
115
  (n = a.current) == null || n.saveAsExcel({
116
116
  ...a.current.options.excel,
117
- saveAs: be,
118
- Workbook: he,
117
+ saveAs: he,
118
+ Workbook: Se,
119
119
  ...e
120
120
  });
121
121
  },
@@ -131,28 +131,28 @@ const B = [
131
131
  return (e = a.current) == null ? void 0 : e.refresh();
132
132
  }
133
133
  }),
134
- [r]
135
- ), t.useImperativeHandle(K, () => w.current);
136
- const Y = t.useCallback(() => a.current && a.current.view.nameEditor, []), N = t.useCallback((e) => {
134
+ [t]
135
+ ), r.useImperativeHandle(J, () => v.current), de("spreadsheet", v, t, t.webMcp);
136
+ const Y = r.useCallback(() => a.current && a.current.view.nameEditor, []), N = r.useCallback((e) => {
137
137
  const n = {};
138
138
  B.forEach((o) => {
139
139
  typeof e.range[o] == "function" ? n[o] = e.range[o]() : o === "gridLines" && (n[o] = e.range.sheet().showGridLines());
140
- }), n.selectedHeaders = e.range.sheet().selectedHeaders(), (B.some((o) => n[o] !== k.current[o]) || n.selectedHeaders.allCols !== k.current.selectedHeaders.allCols || n.selectedHeaders.allRows !== k.current.selectedHeaders.allRows) && V(n);
141
- }, []), Z = t.useCallback((e) => {
140
+ }), n.selectedHeaders = e.range.sheet().selectedHeaders(), (B.some((o) => n[o] !== b.current[o]) || n.selectedHeaders.allCols !== b.current.selectedHeaders.allCols || n.selectedHeaders.allRows !== b.current.selectedHeaders.allRows) && V(n);
141
+ }, []), Z = r.useCallback((e) => {
142
142
  const n = e.name, o = m[n];
143
- v({
143
+ x({
144
144
  title: e.title === "Error" ? E.toLanguageString(m.error, g[m.error]) : e.title,
145
145
  message: o ? E.toLanguageString(o, g[o] || e.text) : e.text,
146
146
  close: e.close
147
147
  });
148
- }, []), R = t.useCallback(() => {
149
- v(null), c == null || c.close();
148
+ }, []), R = r.useCallback(() => {
149
+ x(null), c == null || c.close();
150
150
  }, [c]), f = ke(), A = z();
151
- t.useEffect(() => {
151
+ r.useEffect(() => {
152
152
  var p;
153
153
  const e = {
154
- ...r.defaultProps,
155
- sheets: window == null ? void 0 : window.structuredClone((p = r.defaultProps) == null ? void 0 : p.sheets),
154
+ ...t.defaultProps,
155
+ sheets: window == null ? void 0 : window.structuredClone((p = t.defaultProps) == null ? void 0 : p.sheets),
156
156
  messages: {
157
157
  workbook: {
158
158
  defaultSheetName: A.toLanguageString(
@@ -168,9 +168,9 @@ const B = [
168
168
  toString: (i, u) => f.toString(i, u),
169
169
  format: (i, ...u) => f.format(i, ...u)
170
170
  },
171
- formulaBarInputRef: x,
172
- formulaCellInputRef: y,
173
- nameBoxRef: C
171
+ formulaBarInputRef: y,
172
+ formulaCellInputRef: C,
173
+ nameBoxRef: w
174
174
  }, n = new ie(h.current, e);
175
175
  a.current = n, n.bind("select", j), n.bind("change", _), n.bind("changeFormat", q), n.bind("excelImport", Q), n.bind("excelExport", X), n.view.bind("update", N), n.view.bind("message", Z);
176
176
  const o = n.activeSheet();
@@ -178,9 +178,9 @@ const B = [
178
178
  n.destroy();
179
179
  };
180
180
  }, []);
181
- const I = t.useCallback(
181
+ const I = r.useCallback(
182
182
  (e, n) => {
183
- const o = /* @__PURE__ */ t.createElement(
183
+ const o = /* @__PURE__ */ r.createElement(
184
184
  e,
185
185
  {
186
186
  spreadsheetRef: a,
@@ -188,12 +188,12 @@ const B = [
188
188
  key: n
189
189
  }
190
190
  );
191
- return o.type === $ ? /* @__PURE__ */ t.createElement(e, { key: n }) : o;
191
+ return o.type === $ ? /* @__PURE__ */ r.createElement(e, { key: n }) : o;
192
192
  },
193
193
  [S]
194
194
  );
195
195
  let F = null;
196
- return d.length && (F = /* @__PURE__ */ t.createElement(
196
+ return d.length && (F = /* @__PURE__ */ r.createElement(
197
197
  ne,
198
198
  {
199
199
  selected: D,
@@ -204,22 +204,22 @@ const B = [
204
204
  },
205
205
  d.map((e) => {
206
206
  const n = e.textKey ? A.toLanguageString(e.textKey, g[e.textKey]) : e.text;
207
- return /* @__PURE__ */ t.createElement(oe, { key: e.textKey || e.text, title: n }, /* @__PURE__ */ t.createElement(ee, { buttons: Se, className: "k-spreadsheet-toolbar" }, e.tools.map((o, p) => Array.isArray(o) ? /* @__PURE__ */ t.createElement(te, { key: p }, o.map((i, u) => I(i, u))) : I(o, p))));
207
+ return /* @__PURE__ */ r.createElement(oe, { key: e.textKey || e.text, title: n }, /* @__PURE__ */ r.createElement(ee, { buttons: Ee, className: "k-spreadsheet-toolbar" }, e.tools.map((o, p) => Array.isArray(o) ? /* @__PURE__ */ r.createElement(te, { key: p }, o.map((i, u) => I(i, u))) : I(o, p))));
208
208
  })
209
- )), /* @__PURE__ */ t.createElement(
209
+ )), /* @__PURE__ */ r.createElement(
210
210
  "div",
211
211
  {
212
212
  ref: h,
213
- style: r.style,
214
- className: de("k-widget k-spreadsheet", r.className),
213
+ style: t.style,
214
+ className: fe("k-widget k-spreadsheet", t.className),
215
215
  role: "application"
216
216
  },
217
217
  F,
218
- /* @__PURE__ */ t.createElement("div", { className: "k-spreadsheet-action-bar" }, /* @__PURE__ */ t.createElement(se, { ref: C, nameEditor: Y }), /* @__PURE__ */ t.createElement("div", { className: "k-spreadsheet-formula-bar" }, /* @__PURE__ */ t.createElement(fe, { name: "formula-fx", icon: ge }), /* @__PURE__ */ t.createElement(H, { ref: x }))),
219
- /* @__PURE__ */ t.createElement("div", { className: "k-spreadsheet-view" }, /* @__PURE__ */ t.createElement("div", { className: "k-spreadsheet-fixed-container" }), /* @__PURE__ */ t.createElement("div", { className: "k-spreadsheet-scroller" }, /* @__PURE__ */ t.createElement("div", { className: "k-spreadsheet-view-size" })), /* @__PURE__ */ t.createElement("div", { tabIndex: 0, className: "k-spreadsheet-clipboard", contentEditable: "true" }), /* @__PURE__ */ t.createElement(H, { ref: y, className: "k-spreadsheet-cell-editor" })),
220
- /* @__PURE__ */ t.createElement(ce, { spreadsheetRef: a }),
221
- c && /* @__PURE__ */ t.createElement(ae, { title: c.title, onClose: R }, /* @__PURE__ */ t.createElement("div", null, c.message), /* @__PURE__ */ t.createElement(le, { layout: "start" }, /* @__PURE__ */ t.createElement(re, { themeColor: "primary", onClick: R, autoFocus: !0 }, E.toLanguageString(m.ok, g[m.ok])))),
222
- M && /* @__PURE__ */ t.createElement(pe, { message: P })
218
+ /* @__PURE__ */ r.createElement("div", { className: "k-spreadsheet-action-bar" }, /* @__PURE__ */ r.createElement(se, { ref: w, nameEditor: Y }), /* @__PURE__ */ r.createElement("div", { className: "k-spreadsheet-formula-bar" }, /* @__PURE__ */ r.createElement(pe, { name: "formula-fx", icon: be }), /* @__PURE__ */ r.createElement(H, { ref: y }))),
219
+ /* @__PURE__ */ r.createElement("div", { className: "k-spreadsheet-view" }, /* @__PURE__ */ r.createElement("div", { className: "k-spreadsheet-fixed-container" }), /* @__PURE__ */ r.createElement("div", { className: "k-spreadsheet-scroller" }, /* @__PURE__ */ r.createElement("div", { className: "k-spreadsheet-view-size" })), /* @__PURE__ */ r.createElement("div", { tabIndex: 0, className: "k-spreadsheet-clipboard", contentEditable: "true" }), /* @__PURE__ */ r.createElement(H, { ref: C, className: "k-spreadsheet-cell-editor" })),
220
+ /* @__PURE__ */ r.createElement(ce, { spreadsheetRef: a }),
221
+ c && /* @__PURE__ */ r.createElement(ae, { title: c.title, onClose: R }, /* @__PURE__ */ r.createElement("div", null, c.message), /* @__PURE__ */ r.createElement(le, { layout: "start" }, /* @__PURE__ */ r.createElement(re, { themeColor: "primary", onClick: R, autoFocus: !0 }, E.toLanguageString(m.ok, g[m.ok])))),
222
+ K && /* @__PURE__ */ r.createElement(ge, { message: P })
223
223
  );
224
224
  });
225
225
  W.displayName = "KendoReactSpreadsheet";
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { Workbook as OoxmlWorkbook } from '@progress/kendo-ooxml';
9
9
  import { SpreadsheetOptions, SpreadsheetWidget, Range, DocumentDescriptor, View, Sheet, ExcelExportSettings, CellDefaultStyle, SheetColumn, SheetRow, Cell, CellBorder, SheetDescriptor, Workbook } from '@progress/kendo-spreadsheet-common';
10
+ import { WebMcpProps } from '@progress/kendo-react-common';
10
11
  export { SpreadsheetWidget, SpreadsheetOptions, Range, DocumentDescriptor, View, Workbook, Sheet, SheetDescriptor, ExcelExportSettings, CellDefaultStyle, SheetColumn, SheetRow, Cell, CellBorder };
11
12
  interface SpreadsheetEvent {
12
13
  /**
@@ -164,6 +165,22 @@ export interface SpreadsheetProps {
164
165
  * ```
165
166
  */
166
167
  onExcelExport?: (event: SpreadsheetExcelExportEvent) => void;
168
+ /**
169
+ * Enables browser-native AI agent tools via Web MCP (Chrome 146+).
170
+ *
171
+ * Pass `true` for defaults or an object for fine-grained control.
172
+ * AI agents are multilingual — `dataName` accepts any language.
173
+ *
174
+ * @example
175
+ * ```tsx
176
+ * // Boolean: generic "spreadsheet" label
177
+ * <Spreadsheet webMcp />
178
+ *
179
+ * // Config object: explicit name
180
+ * <Spreadsheet webMcp={{ dataName: 'budget' }} />
181
+ * ```
182
+ */
183
+ webMcp?: boolean | WebMcpProps;
167
184
  }
168
185
  /**
169
186
  * Represents the Spreadsheet handle object.
@@ -12,4 +12,4 @@
12
12
  * Licensed under commercial license. See LICENSE.md in the package root for more information
13
13
  *-------------------------------------------------------------------------------------------
14
14
  */
15
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("@progress/kendo-react-buttons"),require("@progress/kendo-react-layout"),require("@progress/kendo-react-dialogs"),require("@progress/kendo-react-popup"),require("@progress/kendo-react-common"),require("@progress/kendo-svg-icons"),require("@progress/kendo-react-dropdowns"),require("@progress/kendo-react-intl"),require("@progress/kendo-react-sortable"),require("@progress/kendo-spreadsheet-common"),require("@progress/kendo-file-saver"),require("@progress/kendo-ooxml"),require("@progress/kendo-react-upload"),require("@progress/kendo-react-inputs")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","@progress/kendo-react-buttons","@progress/kendo-react-layout","@progress/kendo-react-dialogs","@progress/kendo-react-popup","@progress/kendo-react-common","@progress/kendo-svg-icons","@progress/kendo-react-dropdowns","@progress/kendo-react-intl","@progress/kendo-react-sortable","@progress/kendo-spreadsheet-common","@progress/kendo-file-saver","@progress/kendo-ooxml","@progress/kendo-react-upload","@progress/kendo-react-inputs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoReactSpreadsheet={},e.React,e.PropTypes,e.KendoReactButtons,e.KendoReactLayout,e.KendoReactDialogs,e.KendoReactPopup,e.KendoReactCommon,e.KendoSvgIcons,e.KendoReactDropdowns,e.KendoReactIntl,e.KendoReactSortable,e.KendoSpreadsheetCommon,e.KendoFileSaver,e.KendoOoxml,e.KendoReactUpload,e.KendoReactInputs)}(this,function(e,t,n,a,o,r,l,s,c,i,d,u,m,p,g,f,b){"use strict";function v(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var h=v(t);const y=h.forwardRef((e,t)=>{const n=h.useRef(null),a=h.useRef(null);return h.useImperativeHandle(n,()=>({element:a.current,props:e})),h.useImperativeHandle(t,()=>n.current),h.createElement("div",{className:"k-list k-list-md"},h.createElement("div",{className:"k-list-content"},h.createElement("ul",{ref:a,className:"k-spreadsheet-formula-list k-list-ul",onMouseDown:e=>e.preventDefault(),style:{maxHeight:280}},e.data.map(t=>h.createElement("li",{key:t.text,className:"k-list-item",onClick:()=>e.onItemClick(t.value)},h.createElement(s.IconWrap,{name:"formula-fx",icon:c.formulaFxIcon}),h.createElement("span",{className:"k-list-item-text"},t.text))))))});y.displayName="List",y.propTypes={};const k=h.forwardRef((e,t)=>{const[n,a]=h.useState(!1),[o,r]=h.useState(0),[c,i]=h.useState([]),d=h.useMemo(()=>({}),[]);d.showPopup=n,d.popupContentKey=o,d.data=c;const u=h.useRef(null),m=h.useRef(null),p=h.useRef(null),g=h.useCallback(()=>{if(p.current&&p.current.element)return p.current.element.querySelector(".k-focus")},[]),f=h.useCallback(()=>{const e=g();e&&e.classList.remove("k-focus")},[]),b=h.useCallback(e=>{const t=Array.from(p.current&&p.current.element.children||[]),n=g();let a;if(n){const o=t.indexOf(n);n.classList.remove("k-focus"),a=t[o+e]?t[o+e]:1===e?t[0]:t[t.length-1]}else a=1===e?t[0]:t[t.length-1];a&&a.classList.add("k-focus")},[]);h.useImperativeHandle(u,()=>({element:m.current,props:e,popup:{open:()=>{a(!0)},close:()=>{a(!1)},position:()=>{r(d.popupContentKey+1)},visible:()=>d.showPopup},list:{get element(){return p.current&&p.current.element},data:e=>{if(!e)return d.data;i(e)},value:()=>({}),focus:()=>Array.from(p.current&&p.current.element&&p.current.element.children||[]).indexOf(g()),focusNext:()=>{b(1)},focusPrev:()=>{b(-1)},focusFirst:()=>{const e=p.current&&p.current.element;e&&e.children.item(0)&&(f(),e.children.item(0).classList.add("k-focus"))},focusLast:()=>{const e=p.current&&p.current.element;e&&e.children.length&&(f(),e.children.item(e.children.length-1).classList.add("k-focus"))},itemClick:e=>{d.itemClick=e}}}),[]),h.useImperativeHandle(t,()=>u.current,[]);const v=h.useCallback(e=>{d.itemClick&&d.itemClick(e)},[]);return h.createElement(h.Fragment,null,h.createElement("div",{className:s.classNames("k-spreadsheet-formula-input",e.className),contentEditable:"true",spellCheck:"false",style:{whiteSpace:"pre"},ref:m,"aria-haspopup":"menu",title:"Formula Input","aria-expanded":n,role:"combobox"}),h.createElement(l.Popup,{show:n,anchor:m.current,animate:{openDuration:100,closeDuration:100},contentKey:o,popupClass:"k-list-container"},h.createElement(y,{data:c,ref:p,onItemClick:v})))});k.displayName="FormulaInput",k.propTypes={};const C="spreadsheet.bold",x="spreadsheet.italic",I="spreadsheet.underline",E="spreadsheet.openFile",w="spreadsheet.textColor",S="spreadsheet.background",N="spreadsheet.addRowAbove",R="spreadsheet.addRowBelow",A="spreadsheet.addColumnLeft",D="spreadsheet.addColumnRight",L="spreadsheet.deleteRow",K="spreadsheet.deleteColumn",F="spreadsheet.undo",T="spreadsheet.redo",z="spreadsheet.fontSize",P="spreadsheet.fontSizeIncrease",B="spreadsheet.fontSizeDecrease",O="spreadsheet.fontName",M="spreadsheet.cleanFormatting",j="spreadsheet.format",H="spreadsheet.alignHorizontally",W="spreadsheet.alignVertically",U="spreadsheet.align",q="spreadsheet.alignLeft",V="spreadsheet.alignRight",J="spreadsheet.alignCenter",_="spreadsheet.center",G="spreadsheet.alignJustify",$="spreadsheet.justify",X="spreadsheet.alignTop",Q="spreadsheet.alignMiddle",Y="spreadsheet.alignBottom",Z="spreadsheet.increaseDecimal",ee="spreadsheet.decreaseDecimal",te="spreadsheet.textWrap",ne="spreadsheet.gridLines",ae="spreadsheet.exportToExcel",oe="spreadsheet.nameBox",re="spreadsheet.defaultSheetName",le="spreadsheet.home",se="spreadsheet.file",ce="spreadsheet.insert",ie="spreadsheet.formatTab",de="spreadsheet.addNewSheet",ue="spreadsheet.error",me="spreadsheet.ok",pe="spreadsheet.modifyMerged",ge="spreadsheet.cannotModifyDisabled",fe="spreadsheet.openUnsupported",be="spreadsheet.duplicateSheetName",ve={[C]:"Bold",[x]:"Italic",[I]:"Underline",[F]:"Undo",[T]:"Redo",[z]:"Font size",[P]:"Increase Font size",[B]:"Decrease Font size",[O]:"Font",[M]:"Clean formatting",[j]:"Custom format...",[H]:"Align horizontally",[W]:"Align vertically",[U]:"Align",[q]:"Align left",[V]:"Align right",[J]:"Align center",[G]:"Align justify",[_]:"Center",[$]:"Justify",[X]:"Align top",[Q]:"Align middle",[Y]:"Align bottom",[Z]:"Increase decimal",[ee]:"Decrease decimal",[w]:"Text Color",[S]:"Background color",[N]:"Add row above",[R]:"Add row below",[A]:"Add column left",[D]:"Add column right",[L]:"Delete row",[K]:"Delete column",[E]:"Open...",[ae]:"Export to Excel",[te]:"Text Wrap",[ne]:"Toggle gridlines",[oe]:"Name Box",[re]:"Sheet",[le]:"Home",[se]:"File",[ce]:"Insert",[de]:"Add new sheet",[ie]:"Format",[pe]:"Cannot change part of a merged cell.",[ge]:"Cannot modify disabled cells.",[fe]:"Unsupported format. Please select an .xlsx file.",[be]:"There is an existing sheet with this name. Please enter another name.",[ue]:"Error",[me]:"OK"},he={bold:C,italic:x,underline:I,undo:F,redo:T,fontSize:z,fontSizeIncrease:P,fontSizeDecrease:B,fontName:O,cleanFormatting:M,format:j,alignHorizontally:H,alignVertically:W,align:U,alignLeft:q,alignRight:V,alignCenter:J,center:_,alignJustify:G,justify:$,alignTop:X,alignMiddle:Q,alignBottom:Y,increaseDecimal:Z,decreaseDecimal:ee,textColor:w,background:S,addRowAbove:N,addRowBelow:R,addColumnLeft:A,addColumnRight:D,deleteRow:L,deleteColumn:K,open:E,exportToExcel:ae,textWrap:te,gridLines:ne,nameBox:oe,defaultSheetName:re,file:se,home:le,insert:ce,addNewSheet:de,error:ue,ok:me,modifyMerged:pe,cannotModifyDisabled:ge,openUnsupported:fe,duplicateSheetName:be,formatTab:ie},ye=h.forwardRef((e,t)=>{const n=h.useRef(null),a=h.useRef(null),[o,r]=h.useState([]),[l,u]=h.useState(!1),[m,p]=h.useState(""),g=h.useMemo(()=>({}),[]);g.data=o,h.useImperativeHandle(n,()=>({value:e=>{if(void 0===e){const e=a.current&&a.current.value;return e&&(e.name||e)}p(e||"")}}),[]),h.useImperativeHandle(t,()=>n.current,[]);const f=h.useCallback(t=>{const n=e.nameEditor();n&&n.trigger("delete",{name:t})},[]),b=h.useCallback((e,t)=>{const n=h.createElement(h.Fragment,null,e.props.children,h.createElement("span",{role:"button",className:"k-button-delete",onClick:()=>f(t.dataItem[t.textField]),onMouseDown:e=>e.preventDefault(),onPointerDown:e=>e.preventDefault(),"data-role":"delete"},h.createElement(s.IconWrap,{name:"x",icon:c.xIcon})));return h.cloneElement(e,e.props,n)},[]),v=h.useCallback(e=>h.cloneElement(e,{...e.props},h.createElement("div",null)),[]),y=h.useCallback(t=>{if(t.syntheticEvent&&"change"===t.syntheticEvent.type)return;const n=e.nameEditor();n&&(r(n.readData()),u(!0))},[]),k=h.useCallback(()=>{u(!1)},[]),C=h.useCallback(t=>{if(t.syntheticEvent.target.closest("[data-role]"))return;const n=e.nameEditor();if(n&&t.value){const e=t.value.name;e!==m&&(n.trigger("select",{name:e}),p(e))}},[m]),x=h.useCallback(t=>{const n=e.nameEditor();if(n)if("Enter"===t.key){const e=t.target.value;n.trigger("enter",{value:e}),p(e)}else"Escape"===t.key&&(n.trigger("cancel"),p(g.prevValue))},[]),I=h.useCallback(e=>{g.prevValue=e.value.name},[]),E=d.useLocalization().toLanguageString(he.nameBox,ve[he.nameBox]);return h.createElement("div",{className:"k-spreadsheet-name-editor",onKeyDown:x},h.createElement(i.ComboBox,{ref:a,title:E,popupSettings:{className:"k-spreadsheet-names-popup"},fillMode:"flat",clearButton:!1,dataItemKey:"name",textField:"name",itemRender:b,data:o,value:m?o.find(e=>e.name===m)||{name:m}:null,onChange:C,opened:l,onOpen:y,onClose:k,onFocus:I,listNoDataRender:v,allowCustom:!0,ariaLabel:E}))});ye.displayName="NameBox",ye.propTypes={};const ke=h.createContext({onSelect:()=>{},onDelete:()=>{},onEnterEdit:()=>{},onCancelEdit:()=>{},onExitEdit:()=>{},onEdit:()=>{}}),Ce=e=>{const t=e.dataItem,{onSelect:n,onDelete:o,onEnterEdit:r,onExitEdit:l,onCancelEdit:i,onEdit:d}=h.useContext(ke),u=h.useCallback(e=>{e.target instanceof HTMLElement&&"INPUT"===e.target.nodeName||n.call(void 0,t,e)},[t,n]),m=h.useCallback(e=>{o.call(void 0,t,e)},[t,o]),p=h.useCallback(e=>{e.target instanceof HTMLElement&&"INPUT"===e.target.nodeName||r.call(void 0,t,e)},[t,r]),g=h.useCallback(e=>{l.call(void 0,t,e)},[t,l]),f=h.useCallback(e=>{"Enter"===e.key?l.call(void 0,t,e):"Escape"===e.key&&i.call(void 0,t,e)},[t,l,i]),b=h.useCallback(e=>{d.call(void 0,{...t,text:e.target.value},e)},[t,d]);return h.createElement("li",{style:e.style,...e.attributes,ref:e.forwardRef,role:"tab",className:s.classNames("k-item k-tabstrip-item",{"k-disabled":e.isDisabled,"k-active k-state-tab-on-top k-spreadsheet-sheets-bar-active":t.active,"k-spreadsheet-sheets-bar-inactive":!t.active,"k-first":t.first,"k-last":t.last}),onClick:u,onDoubleClick:p},t.inEdit?h.createElement("input",{type:"text",className:"k-textbox k-spreadsheet-sheets-editor",value:t.text,onChange:b,maxLength:50,autoFocus:!0,onBlur:g,onKeyDown:f}):h.createElement(h.Fragment,null,h.createElement("span",{className:"k-link"},t.text),t.first&&t.last?null:h.createElement(a.Button,{fillMode:"flat",size:"xs",icon:"x",svgIcon:c.xIcon,className:"k-link k-spreadsheet-sheets-remove",onClick:m})))},xe=h.forwardRef((e,t)=>{const{children:n,className:a,...o}=e;return h.createElement("ul",{className:s.classNames("k-tabstrip-items k-reset",a),role:"tablist",...o,ref:t},n)});xe.displayName="TabsList";const Ie=e=>{const{sheets:t,setSheets:n,onSheetSelect:a,onSheetDelete:o,onSheetEdit:r,onSheetReorderEnd:l}=e,[s,c]=h.useState(null),i=h.useRef(!1),d=h.useRef(-1),m=h.useCallback(e=>{n(e.map((e,t,n)=>({...e,first:0===t,last:t===n.length-1})))},[]),p=h.useCallback(e=>{m(e.newState)},[m,l]),g=h.useCallback(e=>{l.call(void 0,e)},[l]),f=h.useCallback(e=>{i.current=!0,d.current=e.prevIndex},[]),b=h.useCallback(e=>{setTimeout(()=>{i.current=!1},50),l.call(void 0,{...e,prevIndex:d.current})},[]),v=h.useCallback((e,t)=>{i.current||a.call(void 0,e,t)},[a]),y=h.useCallback((e,t)=>{t.stopPropagation(),o.call(void 0,e)},[t,o]),k=h.useCallback((e,a)=>{a.stopPropagation(),a.preventDefault();const o=t.map(t=>({...t,active:t.id===e.id,inEdit:t.id===e.id}));n(o),c({...e})},[t]),C=h.useCallback((e,a)=>{a.stopPropagation(),a.preventDefault();const o=t.map(e=>({...e,inEdit:!1,text:e.inEdit&&s?s.text:e.text}));n(o),c(null)},[t,s]),x=h.useCallback((e,a)=>{a.stopPropagation(),a.preventDefault();const o=t.map(e=>({...e,inEdit:!1})),l=t.findIndex(t=>t.id===e.id);n(o),c(null),r.call(void 0,e,l)},[t,r]),I=h.useCallback((e,a)=>{a.stopPropagation(),a.preventDefault();const o=t.map(t=>({...t,text:e.id===t.id?e.text:t.text}));n(o)},[t]);return h.createElement("div",{className:"k-spreadsheet-sheets-items k-tabstrip k-floatwrap k-tabstrip-bottom"},h.createElement("div",{className:"k-tabstrip-items-wrapper k-hstack"},h.createElement(ke.Provider,{value:{onSelect:v,onDelete:y,onEnterEdit:k,onCancelEdit:C,onExitEdit:x,onEdit:I}},h.createElement(u.Sortable,{idField:"id",data:t,itemUI:Ce,itemsWrapUI:xe,onDragOver:p,onNavigate:g,onDragStart:f,onDragEnd:b,navigatable:!0}))))},Ee=e=>{const{spreadsheetRef:t}=e,[n,o]=h.useState([]),r=h.useRef((n.find(e=>e.active)||{}).text),l=s.useId(),i=h.useCallback(()=>{t.current&&(t.current.view.sheetsbar.onSheetSelect(r.current),o(((e,t,n)=>e.map((e,a,o)=>({text:e.name(),id:n+"-sheet-"+a,first:0===a,last:a===o.length-1,active:e.name()===t})))(t.current.sheets(),r.current,l)))},[]),u=h.useCallback(()=>{if(t.current){const e=t.current.sheets();e.find(e=>e.name()===r.current)||(r.current=e[e.length-1].name()),i()}},[]);h.useEffect(()=>(t.current&&(t.current.sheets().length&&(r.current=t.current.sheets()[0].name(),i()),t.current.view.bind("update",u)),()=>{t.current&&t.current.view.unbind("update",u)}),[t.current]);const m=h.useCallback(e=>{r.current!==e.text&&(r.current=e.text,i())},[]),p=h.useCallback(()=>{if(t.current){t.current.view.sheetsbar.onAddSelect();const e=t.current.sheets();r.current=e[e.length-1].name(),i()}},[]),g=h.useCallback(e=>{if(t.current){if(r.current===e.text){const n=t.current.sheets(),a=n.findIndex(t=>t.name()===e.text),o=n[a+1]||n[a-1];r.current=o?o.name():""}t.current.view.sheetsbar.onSheetRemove(e.text),i()}},[]),f=h.useCallback((e,n)=>{if(t.current){let a=e.text;const o=t.current.sheets(),l=o[n];if(!a)return r.current=l.name(),void i();if(l&&l.name()===a)return;o.find(e=>e.name()===a)&&(a=l.name()),t.current.view.sheetsbar.onSheetRename(a,n),r.current=a,i()}},[]),b=h.useCallback(e=>{if(t.current){const{prevIndex:n,nextIndex:a}=e;r.current=t.current.sheets()[n].name(),t.current.view.sheetsbar.onSheetReorderEnd({oldIndex:n,newIndex:a}),i()}},[]);return h.createElement("div",{className:"k-spreadsheet-sheets-bar k-header"},h.createElement(a.Button,{fillMode:"flat",size:"xs",icon:"plus",className:"k-spreadsheet-sheets-bar-add",title:d.useLocalization().toLanguageString(he.addNewSheet,ve[he.addNewSheet]),svgIcon:c.plusIcon,onClick:p}),h.createElement(Ie,{sheets:n,setSheets:o,onSheetSelect:m,onSheetDelete:g,onSheetEdit:f,onSheetReorderEnd:b}))},we=e=>{const{spreadsheetRef:t}=e,n=h.useCallback(()=>{t.current&&t.current.saveAsExcel({...t.current.options.excel,saveAs:p.saveAs,Workbook:g.Workbook})},[]);return h.createElement(a.Button,{className:"k-toolbar-button",title:"Export...",icon:"download",fillMode:"flat",svgIcon:c.downloadIcon,onClick:n})};we.displayName="ExcelExport";const Se=e=>{const{spreadsheetRef:t}=e,n=h.useCallback(e=>{const t=e.target;if(t instanceof Element&&t.parentNode){const e=t.closest(".k-toolbar"),n=e&&e.querySelector(".k-upload input");n&&n.click()}},[]),o=h.useCallback(e=>{const n=e.newState;if(n[0]&&n[0].getRawFile){const e=n[0].getRawFile();t.current&&t.current.executeCommand({command:"OpenCommand",options:{file:e}})}},[]);return h.createElement(h.Fragment,null,h.createElement(a.Button,{className:"k-toolbar-button",title:d.useLocalization().toLanguageString(he.open,ve[he.open]),icon:"folder-open",svgIcon:c.folderOpenIcon,fillMode:"flat",onClick:n}),h.createElement("div",{style:{display:"none"}},h.createElement(f.Upload,{restrictions:{allowedExtensions:[".xlsx"]},onAdd:o,autoUpload:!1,defaultFiles:[],multiple:!1,accept:".xlsx,.XLSX",withCredentials:!1})))};Se.displayName="Open";const Ne=["Arial","Courier New","Georgia","Times New Roman","Trebuchet MS","Verdana"],Re=[8,9,10,11,12,13,14,16,18,20,22,24,26,28,36,48,72],Ae=[{text:"Automatic",value:null},{text:"Text",value:"@"},{text:"Number",value:"#,0.00"},{text:"Percent",value:"0.00%"},{text:"Financial",value:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)'},{text:"Currency",value:"$#,##0.00;[Red]$#,##0.00"},{text:"Date",value:"m/d/yyyy"},{text:"Time",value:"h:mm:ss AM/PM"},{text:"Date time",value:"m/d/yyyy h:mm"},{text:"Duration",value:"[h]:mm:ss"}],De=e=>t=>{const{property:n,icon:o,svgIcon:r,titleKey:l}=e,{spreadsheetRef:s,value:c}=t,i=h.useCallback(()=>{if(s.current){const e={command:"PropertyChangeCommand",options:{property:n,value:!c}};s.current.executeCommand(e)}},[c]);return h.createElement(a.Button,{type:"button",icon:o,svgIcon:r,fillMode:"flat",togglable:!0,onClick:i,selected:!!c,title:d.useLocalization().toLanguageString(l,ve[l])})},Le=e=>t=>{const{property:n,titleKey:a,...o}=e,{spreadsheetRef:r,value:l}=t,s=h.useCallback(e=>{if(r.current){const t={command:"PropertyChangeCommand",options:{property:n,value:e.value||null}};r.current.executeCommand(t)}},[n]);return h.createElement(b.ColorPicker,{onChange:s,onActiveColorClick:s,fillMode:"flat",...o,title:d.useLocalization().toLanguageString(a,ve[a]),value:l})},Ke=e=>t=>{const{spreadsheetRef:n}=t,o=h.useCallback(()=>{n.current&&n.current.workbook.undoRedoStack[e.action]()},[]);return h.createElement(a.Button,{type:"button",icon:e.icon,svgIcon:e.svgIcon,fillMode:"flat",title:d.useLocalization().toLanguageString(e.titleKey,ve[e.titleKey]),onClick:o,togglable:!0})},Fe=De({property:"bold",icon:"bold",svgIcon:c.boldIcon,titleKey:he.bold});Fe.displayName="Bold";const Te=De({property:"italic",icon:"italic",svgIcon:c.italicIcon,titleKey:he.italic});Te.displayName="Italic";const ze=De({property:"underline",icon:"underline",svgIcon:c.underlineIcon,titleKey:he.underline});ze.displayName="Underline";const Pe=e=>{const{spreadsheetRef:t,value:n}=e,a=h.useCallback(e=>{if(t.current){const n={command:"PropertyChangeCommand",options:{property:"fontFamily",value:e.value||null}};t.current.executeCommand(n)}},[]);return h.createElement(i.DropDownList,{onChange:a,value:n,data:Ne,defaultValue:"Arial",fillMode:"flat",title:d.useLocalization().toLanguageString(he.fontName,ve[he.fontName]),leftRightKeysNavigation:!1})};Pe.displayName="FontFamily";const Be=e=>"string"==typeof e?parseFloat(e):e,Oe=e=>{const{spreadsheetRef:t}=e,n=Be(e.value),a=h.useCallback(e=>{var a;let o=e.value?Be(e.value):n;o=isNaN(o)?n:o,o=Math.min(409,Math.max(1,o));const r={command:"PropertyChangeCommand",options:{property:"fontSize",value:o}};"keydown"===e.nativeEvent.type||"focusout"===e.nativeEvent.type?null==(a=t.current)||a.executeCommand(r):setTimeout(()=>{var e;null==(e=t.current)||e.executeCommand(r)},0)},[n]),o=d.useLocalization().toLanguageString(he.fontSize,ve[he.fontSize]);return h.createElement(i.ComboBox,{onChange:a,value:n,data:Re,defaultValue:12,allowCustom:!0,fillMode:"flat",title:o,tabIndex:-1,clearButton:!1,ariaLabel:o})};Oe.displayName="FontSize";const Me=e=>{const t=t=>{const{property:n,icon:o,svgIcon:r,titleKey:l,step:s}=e,{spreadsheetRef:c}=t,i=Be(t.value),u=h.useCallback(()=>{var e;const t={command:"PropertyChangeCommand",options:{property:n,value:Math.min(409,Math.max(1,i+s))}};null==(e=c.current)||e.executeCommand(t)},[i]);return h.createElement(a.Button,{type:"button",icon:o,svgIcon:r,fillMode:"flat",onClick:u,disabled:i+s<1||i+s>409,title:d.useLocalization().toLanguageString(l,ve[l])})};return t.displayName=e.displayName,t},je=Me({property:"fontSize",icon:"font-grow",svgIcon:c.fontGrowIcon,titleKey:he.fontSizeIncrease,displayName:"IncreaseFontSize",step:1}),He=Me({property:"fontSize",icon:"font-shrink",svgIcon:c.fontShrinkIcon,titleKey:he.fontSizeDecrease,displayName:"DecreaseFontSize",step:-1}),We=Le({icon:"foreground-color",svgIcon:c.foregroundColorIcon,view:"palette",property:"color",titleKey:he.textColor,ariaLabel:"Text Color"});We.displayName="TextColor";const Ue=Le({icon:"droplet",svgIcon:c.dropletIcon,view:"palette",property:"background",titleKey:he.background,ariaLabel:"Background"});Ue.displayName="BackgroundColor";const qe=[{icon:"align-left",svgIcon:c.alignLeftIcon,textKey:he.alignLeft,commandName:"textAlign",value:"left",selected:!1},{icon:"align-center",svgIcon:c.alignCenterIcon,textKey:he.alignCenter,commandName:"textAlign",value:"center",selected:!1},{icon:"align-right",svgIcon:c.alignRightIcon,textKey:he.alignRight,commandName:"textAlign",value:"right",selected:!1},{icon:"align-justify",svgIcon:c.alignJustifyIcon,textKey:he.alignJustify,commandName:"textAlign",value:"justify",selected:!1},{icon:"align-top",svgIcon:c.alignTopIcon,textKey:he.alignTop,commandName:"verticalAlign",value:"top",selected:!1},{icon:"align-middle",svgIcon:c.alignMiddleIcon,textKey:he.alignMiddle,commandName:"verticalAlign",value:"center",selected:!1},{icon:"align-bottom",svgIcon:c.alignBottomIcon,textKey:he.alignBottom,commandName:"verticalAlign",value:"bottom",selected:!1}],Ve=[qe[0],{...qe[1],textKey:he.center},qe[2],{...qe[3],textKey:he.justify}],Je=qe.filter(e=>"verticalAlign"===e.commandName),_e=e=>{const{value:t,spreadsheetRef:n}=e,{textAlign:o,verticalAlign:r}=t||{},l=d.useLocalization(),i=h.useCallback(e=>{if(n.current){const t=e.item,a={command:"PropertyChangeCommand",options:{property:t.commandName,value:t.value||null}};n.current.executeCommand(a)}},[]);let u=qe.slice();return u=u.map(e=>({...e,text:l.toLanguageString(e.textKey,ve[e.textKey])})),o&&(u=u.map(e=>"textAlign"===e.commandName?{...e,selected:e.value===o}:e)),r&&(u=u.map(e=>"verticalAlign"===e.commandName?{...e,selected:e.value===r}:e)),h.createElement(a.DropDownButton,{icon:"align-left",svgIcon:c.alignLeftIcon,items:u,fillMode:"flat",onItemClick:i,title:l.toLanguageString(he.align,ve[he.align]),text:h.createElement(s.IconWrap,{name:"chevron-down",icon:c.chevronDownIcon})})};_e.displayName="Alignment";const Ge={items:Ve,icon:{icon:"align-left",svgIcon:c.alignLeftIcon},displayName:"AlignHorizontally",titleKey:he.alignHorizontally},$e={items:Je,icon:{icon:"align-bottom",svgIcon:c.alignBottomIcon},displayName:"AlignVertically",titleKey:he.alignVertically},Xe=e=>{const t=t=>{const{value:n,spreadsheetRef:o}=t,r=d.useLocalization(),l=h.useCallback(e=>{if(o.current){const t=e.item,n={command:"PropertyChangeCommand",options:{property:t.commandName,value:t.value||null}};o.current.executeCommand(n)}},[]);let i=e.items.slice();i=i.map(e=>({...e,text:r.toLanguageString(e.textKey,ve[e.textKey])})),i=i.map(e=>({...e,selected:e.value===n}));const u={...e.icon},m=i.find(e=>e.selected);return m&&(u.icon=m.icon,u.svgIcon=m.svgIcon),h.createElement(a.DropDownButton,{...u,items:i,fillMode:"flat",onItemClick:l,title:r.toLanguageString(e.titleKey,ve[e.titleKey]),text:h.createElement(s.IconWrap,{name:"chevron-down",icon:c.chevronDownIcon})})};return t.displayName=e.displayName,t},Qe=Xe(Ge),Ye=Xe($e),Ze=e=>{const{value:t,spreadsheetRef:n}=e,o=h.useCallback(()=>{if(n.current){const e=n.current.activeSheet();if(e){const t={command:"TextWrapCommand",options:{property:"wrap",value:!e.range(e.activeCell()).wrap()}};n.current.executeCommand(t)}}},[]);return h.createElement(a.Button,{type:"button",togglable:!0,icon:"text-wrap-arrow",svgIcon:c.textWrapArrowIcon,fillMode:"flat",title:d.useLocalization().toLanguageString(he.textWrap,ve[he.textWrap]),onClick:o,selected:t})};Ze.displayName="TextWrap";const et=e=>{const{value:t,spreadsheetRef:n}=e,o=h.useCallback(()=>{if(n.current){const e=n.current.activeSheet();if(e){const t={command:"GridLinesChangeCommand",options:{property:"gridLines",value:!e.showGridLines()}};n.current.executeCommand(t)}}},[]);return h.createElement(a.Button,{type:"button",togglable:!0,icon:"borders-none",svgIcon:c.bordersNoneIcon,fillMode:"flat",title:d.useLocalization().toLanguageString(he.gridLines,ve[he.gridLines]),onClick:o,selected:t})};et.displayName="GridLines";const tt=e=>{const{spreadsheetRef:t}=e,n=h.useCallback(e=>{const n=e.item.value||null;setTimeout(()=>{if(t.current){const e={command:"PropertyChangeCommand",options:{property:"format",value:n}};t.current.executeCommand(e)}},0)},[]);return h.createElement(a.DropDownButton,{icon:"custom-format",svgIcon:c.customFormatIcon,fillMode:"flat",onItemClick:n,items:Ae,title:d.useLocalization().toLanguageString(he.format,ve[he.format]),text:h.createElement(s.IconWrap,{name:"chevron-down"})})};tt.displayName="Format";const nt=e=>t=>{const{spreadsheetRef:n,value:o}=t,r=h.useCallback(()=>{if(n.current){const t={command:e.command,options:{value:e.value}};n.current.executeCommand(t)}},[]);return h.createElement(a.Button,{type:"button",icon:e.icon,svgIcon:e.svgIcon,fillMode:"flat",title:d.useLocalization().toLanguageString(e.titleKey,ve[e.titleKey]),onClick:r,disabled:o&&e.disabled(o)})},at={command:"AddColumnCommand",value:"left",icon:"table-column-insert-left",svgIcon:c.tableColumnInsertLeftIcon,titleKey:he.addColumnLeft,disabled:e=>e.allCols,displayName:"AddColumnLeft"},ot={command:"AddColumnCommand",value:"right",icon:"table-column-insert-right",svgIcon:c.tableColumnInsertRightIcon,titleKey:he.addColumnRight,disabled:e=>e.allCols,displayName:"AddColumnRight"},rt={command:"AddRowCommand",value:"below",icon:"table-row-insert-below",svgIcon:c.tableRowInsertBelowIcon,titleKey:he.addRowBelow,disabled:e=>e.allRows,displayName:"AddRowBelow"},lt={command:"AddRowCommand",value:"above",icon:"table-row-insert-above",svgIcon:c.tableRowInsertAboveIcon,titleKey:he.addRowAbove,disabled:e=>e.allRows,displayName:"AddRowAbove"},st={command:"DeleteColumnCommand",icon:"table-column-delete",svgIcon:c.tableColumnDeleteIcon,titleKey:he.deleteColumn,disabled:e=>e.allCols,displayName:"DeleteColumn"},ct={command:"DeleteRowCommand",icon:"table-row-delete",svgIcon:c.tableRowDeleteIcon,titleKey:he.deleteRow,disabled:e=>e.allRows,displayName:"DeleteRow"},it=nt(at),dt=nt(ot),ut=nt(rt),mt=nt(lt),pt=nt(st),gt=nt(ct);it.displayName="AddColumnLeft",dt.displayName="AddColumnRight",ut.displayName="AddRowBelow",mt.displayName="AddRowAbove",pt.displayName="DeleteColumn",gt.displayName="DeleteRow";const ft=Ke({action:"undo",icon:"reset",svgIcon:c.arrowRotateCcwIcon,titleKey:he.undo});ft.displayName="Undo";const bt=Ke({action:"redo",icon:"reload",svgIcon:c.arrowRotateCwIcon,titleKey:he.redo});bt.displayName="Redo";const vt=e=>t=>{const{icon:n,svgIcon:o,titleKey:r,value:l}=e,{spreadsheetRef:s}=t,c=h.useCallback(()=>{if(s.current){const e={command:"AdjustDecimalsCommand",options:{value:l}};s.current.executeCommand(e)}},[]);return h.createElement(a.Button,{type:"button",icon:n,svgIcon:o,fillMode:"flat",onClick:c,title:d.useLocalization().toLanguageString(r,ve[r])})},ht=vt({icon:c.decimalIncreaseIcon.name,svgIcon:c.decimalIncreaseIcon,value:1,titleKey:he.increaseDecimal});ht.displayName="IncreaseDecimal";const yt=vt({icon:c.decimalDecreaseIcon.name,svgIcon:c.decimalDecreaseIcon,value:-1,titleKey:he.decreaseDecimal});yt.displayName="DecreaseDecimal";const kt=[{textKey:he.file,tools:[Se,we]},{textKey:he.home,selected:!0,tools:[[ft,bt],a.ToolbarSeparator,Pe,Oe,je,He,a.ToolbarSeparator,[Fe,Te,ze],We,a.ToolbarSeparator,Ue,a.ToolbarSeparator,Qe,Ye,Ze,a.ToolbarSeparator,et]},{textKey:he.insert,tools:[[it,dt,ut,mt],a.ToolbarSeparator,[pt,gt]]},{textKey:he.formatTab,tools:[tt,[yt,ht]]}],Ct=Object.freeze({name:"@progress/kendo-react-spreadsheet",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate:1683639393,version:"14.5.0-develop.9",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning"}),xt=["bold","italic","underline","fontFamily","fontSize","color","background","textAlign","verticalAlign","wrap","gridLines"],It={Bold:e=>e.bold,Italic:e=>e.italic,Underline:e=>e.underline,FontFamily:e=>e.fontFamily,FontSize:e=>e.fontSize,IncreaseFontSize:e=>e.fontSize,DecreaseFontSize:e=>e.fontSize,TextColor:e=>e.color,BackgroundColor:e=>e.background,Alignment:e=>({textAlign:e.textAlign,verticalAlign:e.verticalAlign}),AlignHorizontally:e=>e.textAlign,AlignVertically:e=>e.verticalAlign,TextWrap:e=>e.wrap,GridLines:e=>e.gridLines,AddColumnLeft:e=>e.selectedHeaders,AddColumnRight:e=>e.selectedHeaders,AddRowBelow:e=>e.selectedHeaders,AddRowAbove:e=>e.selectedHeaders,DeleteColumn:e=>e.selectedHeaders,DeleteRow:e=>e.selectedHeaders},Et=":not(.k-dropdownlist button):not(.k-combobox button):not(.k-upload-button):not(.k-colorpicker button):not(.k-split-button .k-split-button-arrow)",wt=["button"+Et,".k-button-group > button"+Et,".k-dropdownlist",".k-combobox",".k-colorpicker"],St=h.forwardRef((e,t)=>{const n=!s.validatePackage(Ct,{component:"Spreadsheet"}),l=s.getLicenseMessage(Ct),{toolbar:i=kt}=e,u=[];"boolean"==typeof i?u.push(...i?kt:[]):u.push(...i);const[f,b]=h.useState(null),[v,y]=h.useState(u.findIndex(e=>e.selected)||0),[C,x]=h.useState(!1),I=h.useRef(null),E=h.useRef(null),w=h.useRef(null),S=h.useRef(null),N=h.useRef(null),[R,A]=h.useState({}),D=h.useRef({});D.current=R;const L=h.useRef({});L.current=e;const K=d.useLocalization(),F=h.useCallback(e=>{L.current.onSelect&&L.current.onSelect.call(void 0,e)},[]),T=h.useCallback(e=>{L.current.onChange&&L.current.onChange.call(void 0,e)},[]),z=h.useCallback(e=>{L.current.onChangeFormat&&L.current.onChangeFormat.call(void 0,e)},[]),P=h.useCallback(e=>{L.current.onExcelImport&&L.current.onExcelImport.call(void 0,e)},[]),B=h.useCallback(e=>{L.current.onExcelExport&&L.current.onExcelExport.call(void 0,e)},[]),O=h.useRef(null);h.useImperativeHandle(O,()=>({element:I.current,get instance(){return N.current},props:e,get view(){return N.current.view},get workbook(){return N.current.workbook},executeCommand(e){var t;null==(t=N.current)||t.executeCommand(e)},fromJSON(e){var t;return null==(t=N.current)?void 0:t.fromJSON(e)},toJSON:()=>N.current.toJSON(),saveJSON:()=>N.current.saveJSON(),fromFile:e=>N.current.fromFile(e),saveAsExcel(e){var t;null==(t=N.current)||t.saveAsExcel({...N.current.options.excel,saveAs:p.saveAs,Workbook:g.Workbook,...e})},activeSheet(e){var t;return null==(t=N.current)?void 0:t.activeSheet(e)},sheets:()=>N.current.sheets(),refresh(){var e;return null==(e=N.current)?void 0:e.refresh()}}),[e]),h.useImperativeHandle(t,()=>O.current);const M=h.useCallback(()=>N.current&&N.current.view.nameEditor,[]),j=h.useCallback(e=>{const t={};xt.forEach(n=>{"function"==typeof e.range[n]?t[n]=e.range[n]():"gridLines"===n&&(t[n]=e.range.sheet().showGridLines())}),t.selectedHeaders=e.range.sheet().selectedHeaders(),(xt.some(e=>t[e]!==D.current[e])||t.selectedHeaders.allCols!==D.current.selectedHeaders.allCols||t.selectedHeaders.allRows!==D.current.selectedHeaders.allRows)&&A(t)},[]),H=h.useCallback(e=>{const t=e.name,n=he[t];b({title:"Error"===e.title?K.toLanguageString(he.error,ve[he.error]):e.title,message:n?K.toLanguageString(n,ve[n]||e.text):e.text,close:e.close})},[]),W=h.useCallback(()=>{b(null),null==f||f.close()},[f]),U=d.useInternationalization(),q=d.useLocalization();h.useEffect(()=>{var t;const n={...e.defaultProps,sheets:null==window?void 0:window.structuredClone(null==(t=e.defaultProps)?void 0:t.sheets),messages:{workbook:{defaultSheetName:q.toLanguageString(he.defaultSheetName,ve[he.defaultSheetName])}},intl:{localeInfo:()=>U.localeInfo(),localeCurrency:()=>U.localeCurrency(),parseDate:(e,t)=>U.parseDate(e,t),toString:(e,t)=>U.toString(e,t),format:(e,...t)=>U.format(e,...t)},formulaBarInputRef:E,formulaCellInputRef:w,nameBoxRef:S},a=new m.SpreadsheetWidget(I.current,n);N.current=a,a.bind("select",F),a.bind("change",T),a.bind("changeFormat",z),a.bind("excelImport",P),a.bind("excelExport",B),a.view.bind("update",j),a.view.bind("message",H);const o=a.activeSheet();return o&&j({range:o.range(o.activeCell())}),x(!0),()=>{a.destroy()}},[]);const V=h.useCallback((e,t)=>{const n=h.createElement(e,{spreadsheetRef:N,value:It[e.displayName]?It[e.displayName](R):void 0,key:t});return n.type===a.ToolbarSeparator?h.createElement(e,{key:t}):n},[R]);let J=null;return u.length&&(J=h.createElement(o.TabStrip,{selected:v,animation:!1,className:"k-floatwrap k-spreadsheet-tabstrip",style:{minHeight:"auto"},onSelect:e=>y(e.selected)},u.map(e=>{const t=e.textKey?q.toLanguageString(e.textKey,ve[e.textKey]):e.text;return h.createElement(o.TabStripTab,{key:e.textKey||e.text,title:t},h.createElement(a.Toolbar,{buttons:wt,className:"k-spreadsheet-toolbar"},e.tools.map((e,t)=>Array.isArray(e)?h.createElement(a.ButtonGroup,{key:t},e.map((e,t)=>V(e,t))):V(e,t))))}))),h.createElement("div",{ref:I,style:e.style,className:s.classNames("k-widget k-spreadsheet",e.className),role:"application"},J,h.createElement("div",{className:"k-spreadsheet-action-bar"},h.createElement(ye,{ref:S,nameEditor:M}),h.createElement("div",{className:"k-spreadsheet-formula-bar"},h.createElement(s.IconWrap,{name:"formula-fx",icon:c.formulaFxIcon}),h.createElement(k,{ref:E}))),h.createElement("div",{className:"k-spreadsheet-view"},h.createElement("div",{className:"k-spreadsheet-fixed-container"}),h.createElement("div",{className:"k-spreadsheet-scroller"},h.createElement("div",{className:"k-spreadsheet-view-size"})),h.createElement("div",{tabIndex:0,className:"k-spreadsheet-clipboard",contentEditable:"true"}),h.createElement(k,{ref:w,className:"k-spreadsheet-cell-editor"})),h.createElement(Ee,{spreadsheetRef:N}),f&&h.createElement(r.Dialog,{title:f.title,onClose:W},h.createElement("div",null,f.message),h.createElement(r.DialogActionsBar,{layout:"start"},h.createElement(a.Button,{themeColor:"primary",onClick:W,autoFocus:!0},K.toLanguageString(he.ok,ve[he.ok])))),n&&h.createElement(s.WatermarkOverlay,{message:l}))});St.displayName="KendoReactSpreadsheet",St.propTypes={className:n.string,defaultProps:n.any,toolbar:n.oneOfType([n.bool,n.arrayOf(n.any)]),style:n.object,onSelect:n.func,onChange:n.func,onChangeFormat:n.func,onExcelImport:n.func,onExcelExport:n.func};Object.defineProperty(e,"CalcError",{enumerable:!0,get:function(){return m.CalcError}}),Object.defineProperty(e,"CellRef",{enumerable:!0,get:function(){return m.CellRef}}),Object.defineProperty(e,"Context",{enumerable:!0,get:function(){return m.Context}}),Object.defineProperty(e,"Matrix",{enumerable:!0,get:function(){return m.Matrix}}),Object.defineProperty(e,"NULLREF",{enumerable:!0,get:function(){return m.NULLREF}}),Object.defineProperty(e,"NameRef",{enumerable:!0,get:function(){return m.NameRef}}),Object.defineProperty(e,"Range",{enumerable:!0,get:function(){return m.Range}}),Object.defineProperty(e,"RangeRef",{enumerable:!0,get:function(){return m.RangeRef}}),Object.defineProperty(e,"Ref",{enumerable:!0,get:function(){return m.Ref}}),Object.defineProperty(e,"Sheet",{enumerable:!0,get:function(){return m.Sheet}}),Object.defineProperty(e,"SpreadsheetWidget",{enumerable:!0,get:function(){return m.SpreadsheetWidget}}),Object.defineProperty(e,"UnionRef",{enumerable:!0,get:function(){return m.UnionRef}}),Object.defineProperty(e,"View",{enumerable:!0,get:function(){return m.View}}),Object.defineProperty(e,"Workbook",{enumerable:!0,get:function(){return m.Workbook}}),Object.defineProperty(e,"dateToSerial",{enumerable:!0,get:function(){return m.dateToSerial}}),Object.defineProperty(e,"defineAlias",{enumerable:!0,get:function(){return m.defineAlias}}),Object.defineProperty(e,"defineFunction",{enumerable:!0,get:function(){return m.defineFunction}}),Object.defineProperty(e,"packDate",{enumerable:!0,get:function(){return m.packDate}}),Object.defineProperty(e,"packTime",{enumerable:!0,get:function(){return m.packTime}}),Object.defineProperty(e,"serialToDate",{enumerable:!0,get:function(){return m.serialToDate}}),Object.defineProperty(e,"unpackDate",{enumerable:!0,get:function(){return m.unpackDate}}),Object.defineProperty(e,"unpackTime",{enumerable:!0,get:function(){return m.unpackTime}}),e.AddColumnLeft=it,e.AddColumnRight=dt,e.AddRowAbove=mt,e.AddRowBelow=ut,e.AlignHorizontally=Qe,e.AlignVertically=Ye,e.Alignment=_e,e.BackgroundColor=Ue,e.Bold=Fe,e.CleanFormatting=e=>{const{spreadsheetRef:t}=e,n=h.useCallback(()=>{t.current&&t.current.executeCommand({command:"PropertyCleanCommand"})},[]);return h.createElement(a.Button,{type:"button",icon:"clean-css",svgIcon:c.clearCssIcon,fillMode:"flat",onClick:n,title:d.useLocalization().toLanguageString(he.cleanFormatting,ve[he.cleanFormatting])})},e.DecreaseDecimal=yt,e.DecreaseFontSize=He,e.DeleteColumn=pt,e.DeleteRow=gt,e.ExcelExport=we,e.FontFamily=Pe,e.FontSize=Oe,e.Format=tt,e.GridLines=et,e.IncreaseDecimal=ht,e.IncreaseFontSize=je,e.Italic=Te,e.Open=Se,e.Redo=bt,e.Spreadsheet=St,e.TextColor=We,e.TextWrap=Ze,e.Underline=ze,e.Undo=ft,e.defaultTabs=kt,e.toolsValueMap=It});
15
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("@progress/kendo-react-buttons"),require("@progress/kendo-react-layout"),require("@progress/kendo-react-dialogs"),require("@progress/kendo-react-popup"),require("@progress/kendo-react-common"),require("@progress/kendo-svg-icons"),require("@progress/kendo-react-dropdowns"),require("@progress/kendo-react-intl"),require("@progress/kendo-react-sortable"),require("@progress/kendo-spreadsheet-common"),require("@progress/kendo-file-saver"),require("@progress/kendo-ooxml"),require("@progress/kendo-react-upload"),require("@progress/kendo-react-inputs")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","@progress/kendo-react-buttons","@progress/kendo-react-layout","@progress/kendo-react-dialogs","@progress/kendo-react-popup","@progress/kendo-react-common","@progress/kendo-svg-icons","@progress/kendo-react-dropdowns","@progress/kendo-react-intl","@progress/kendo-react-sortable","@progress/kendo-spreadsheet-common","@progress/kendo-file-saver","@progress/kendo-ooxml","@progress/kendo-react-upload","@progress/kendo-react-inputs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoReactSpreadsheet={},e.React,e.PropTypes,e.KendoReactButtons,e.KendoReactLayout,e.KendoReactDialogs,e.KendoReactPopup,e.KendoReactCommon,e.KendoSvgIcons,e.KendoReactDropdowns,e.KendoReactIntl,e.KendoReactSortable,e.KendoSpreadsheetCommon,e.KendoFileSaver,e.KendoOoxml,e.KendoReactUpload,e.KendoReactInputs)}(this,function(e,t,n,a,o,r,l,s,c,i,d,u,m,p,g,f,b){"use strict";function v(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var h=v(t);const y=h.forwardRef((e,t)=>{const n=h.useRef(null),a=h.useRef(null);return h.useImperativeHandle(n,()=>({element:a.current,props:e})),h.useImperativeHandle(t,()=>n.current),h.createElement("div",{className:"k-list k-list-md"},h.createElement("div",{className:"k-list-content"},h.createElement("ul",{ref:a,className:"k-spreadsheet-formula-list k-list-ul",onMouseDown:e=>e.preventDefault(),style:{maxHeight:280}},e.data.map(t=>h.createElement("li",{key:t.text,className:"k-list-item",onClick:()=>e.onItemClick(t.value)},h.createElement(s.IconWrap,{name:"formula-fx",icon:c.formulaFxIcon}),h.createElement("span",{className:"k-list-item-text"},t.text))))))});y.displayName="List",y.propTypes={};const k=h.forwardRef((e,t)=>{const[n,a]=h.useState(!1),[o,r]=h.useState(0),[c,i]=h.useState([]),d=h.useMemo(()=>({}),[]);d.showPopup=n,d.popupContentKey=o,d.data=c;const u=h.useRef(null),m=h.useRef(null),p=h.useRef(null),g=h.useCallback(()=>{if(p.current&&p.current.element)return p.current.element.querySelector(".k-focus")},[]),f=h.useCallback(()=>{const e=g();e&&e.classList.remove("k-focus")},[]),b=h.useCallback(e=>{const t=Array.from(p.current&&p.current.element.children||[]),n=g();let a;if(n){const o=t.indexOf(n);n.classList.remove("k-focus"),a=t[o+e]?t[o+e]:1===e?t[0]:t[t.length-1]}else a=1===e?t[0]:t[t.length-1];a&&a.classList.add("k-focus")},[]);h.useImperativeHandle(u,()=>({element:m.current,props:e,popup:{open:()=>{a(!0)},close:()=>{a(!1)},position:()=>{r(d.popupContentKey+1)},visible:()=>d.showPopup},list:{get element(){return p.current&&p.current.element},data:e=>{if(!e)return d.data;i(e)},value:()=>({}),focus:()=>Array.from(p.current&&p.current.element&&p.current.element.children||[]).indexOf(g()),focusNext:()=>{b(1)},focusPrev:()=>{b(-1)},focusFirst:()=>{const e=p.current&&p.current.element;e&&e.children.item(0)&&(f(),e.children.item(0).classList.add("k-focus"))},focusLast:()=>{const e=p.current&&p.current.element;e&&e.children.length&&(f(),e.children.item(e.children.length-1).classList.add("k-focus"))},itemClick:e=>{d.itemClick=e}}}),[]),h.useImperativeHandle(t,()=>u.current,[]);const v=h.useCallback(e=>{d.itemClick&&d.itemClick(e)},[]);return h.createElement(h.Fragment,null,h.createElement("div",{className:s.classNames("k-spreadsheet-formula-input",e.className),contentEditable:"true",spellCheck:"false",style:{whiteSpace:"pre"},ref:m,"aria-haspopup":"menu",title:"Formula Input","aria-expanded":n,role:"combobox"}),h.createElement(l.Popup,{show:n,anchor:m.current,animate:{openDuration:100,closeDuration:100},contentKey:o,popupClass:"k-list-container"},h.createElement(y,{data:c,ref:p,onItemClick:v})))});k.displayName="FormulaInput",k.propTypes={};const C="spreadsheet.bold",x="spreadsheet.italic",I="spreadsheet.underline",E="spreadsheet.openFile",w="spreadsheet.textColor",S="spreadsheet.background",R="spreadsheet.addRowAbove",N="spreadsheet.addRowBelow",A="spreadsheet.addColumnLeft",D="spreadsheet.addColumnRight",L="spreadsheet.deleteRow",K="spreadsheet.deleteColumn",F="spreadsheet.undo",T="spreadsheet.redo",z="spreadsheet.fontSize",P="spreadsheet.fontSizeIncrease",B="spreadsheet.fontSizeDecrease",O="spreadsheet.fontName",M="spreadsheet.cleanFormatting",j="spreadsheet.format",H="spreadsheet.alignHorizontally",W="spreadsheet.alignVertically",U="spreadsheet.align",q="spreadsheet.alignLeft",V="spreadsheet.alignRight",J="spreadsheet.alignCenter",_="spreadsheet.center",G="spreadsheet.alignJustify",$="spreadsheet.justify",X="spreadsheet.alignTop",Q="spreadsheet.alignMiddle",Y="spreadsheet.alignBottom",Z="spreadsheet.increaseDecimal",ee="spreadsheet.decreaseDecimal",te="spreadsheet.textWrap",ne="spreadsheet.gridLines",ae="spreadsheet.exportToExcel",oe="spreadsheet.nameBox",re="spreadsheet.defaultSheetName",le="spreadsheet.home",se="spreadsheet.file",ce="spreadsheet.insert",ie="spreadsheet.formatTab",de="spreadsheet.addNewSheet",ue="spreadsheet.error",me="spreadsheet.ok",pe="spreadsheet.modifyMerged",ge="spreadsheet.cannotModifyDisabled",fe="spreadsheet.openUnsupported",be="spreadsheet.duplicateSheetName",ve={[C]:"Bold",[x]:"Italic",[I]:"Underline",[F]:"Undo",[T]:"Redo",[z]:"Font size",[P]:"Increase Font size",[B]:"Decrease Font size",[O]:"Font",[M]:"Clean formatting",[j]:"Custom format...",[H]:"Align horizontally",[W]:"Align vertically",[U]:"Align",[q]:"Align left",[V]:"Align right",[J]:"Align center",[G]:"Align justify",[_]:"Center",[$]:"Justify",[X]:"Align top",[Q]:"Align middle",[Y]:"Align bottom",[Z]:"Increase decimal",[ee]:"Decrease decimal",[w]:"Text Color",[S]:"Background color",[R]:"Add row above",[N]:"Add row below",[A]:"Add column left",[D]:"Add column right",[L]:"Delete row",[K]:"Delete column",[E]:"Open...",[ae]:"Export to Excel",[te]:"Text Wrap",[ne]:"Toggle gridlines",[oe]:"Name Box",[re]:"Sheet",[le]:"Home",[se]:"File",[ce]:"Insert",[de]:"Add new sheet",[ie]:"Format",[pe]:"Cannot change part of a merged cell.",[ge]:"Cannot modify disabled cells.",[fe]:"Unsupported format. Please select an .xlsx file.",[be]:"There is an existing sheet with this name. Please enter another name.",[ue]:"Error",[me]:"OK"},he={bold:C,italic:x,underline:I,undo:F,redo:T,fontSize:z,fontSizeIncrease:P,fontSizeDecrease:B,fontName:O,cleanFormatting:M,format:j,alignHorizontally:H,alignVertically:W,align:U,alignLeft:q,alignRight:V,alignCenter:J,center:_,alignJustify:G,justify:$,alignTop:X,alignMiddle:Q,alignBottom:Y,increaseDecimal:Z,decreaseDecimal:ee,textColor:w,background:S,addRowAbove:R,addRowBelow:N,addColumnLeft:A,addColumnRight:D,deleteRow:L,deleteColumn:K,open:E,exportToExcel:ae,textWrap:te,gridLines:ne,nameBox:oe,defaultSheetName:re,file:se,home:le,insert:ce,addNewSheet:de,error:ue,ok:me,modifyMerged:pe,cannotModifyDisabled:ge,openUnsupported:fe,duplicateSheetName:be,formatTab:ie},ye=h.forwardRef((e,t)=>{const n=h.useRef(null),a=h.useRef(null),[o,r]=h.useState([]),[l,u]=h.useState(!1),[m,p]=h.useState(""),g=h.useMemo(()=>({}),[]);g.data=o,h.useImperativeHandle(n,()=>({value:e=>{if(void 0===e){const e=a.current&&a.current.value;return e&&(e.name||e)}p(e||"")}}),[]),h.useImperativeHandle(t,()=>n.current,[]);const f=h.useCallback(t=>{const n=e.nameEditor();n&&n.trigger("delete",{name:t})},[]),b=h.useCallback((e,t)=>{const n=h.createElement(h.Fragment,null,e.props.children,h.createElement("span",{role:"button",className:"k-button-delete",onClick:()=>f(t.dataItem[t.textField]),onMouseDown:e=>e.preventDefault(),onPointerDown:e=>e.preventDefault(),"data-role":"delete"},h.createElement(s.IconWrap,{name:"x",icon:c.xIcon})));return h.cloneElement(e,e.props,n)},[]),v=h.useCallback(e=>h.cloneElement(e,{...e.props},h.createElement("div",null)),[]),y=h.useCallback(t=>{if(t.syntheticEvent&&"change"===t.syntheticEvent.type)return;const n=e.nameEditor();n&&(r(n.readData()),u(!0))},[]),k=h.useCallback(()=>{u(!1)},[]),C=h.useCallback(t=>{if(t.syntheticEvent.target.closest("[data-role]"))return;const n=e.nameEditor();if(n&&t.value){const e=t.value.name;e!==m&&(n.trigger("select",{name:e}),p(e))}},[m]),x=h.useCallback(t=>{const n=e.nameEditor();if(n)if("Enter"===t.key){const e=t.target.value;n.trigger("enter",{value:e}),p(e)}else"Escape"===t.key&&(n.trigger("cancel"),p(g.prevValue))},[]),I=h.useCallback(e=>{g.prevValue=e.value.name},[]),E=d.useLocalization().toLanguageString(he.nameBox,ve[he.nameBox]);return h.createElement("div",{className:"k-spreadsheet-name-editor",onKeyDown:x},h.createElement(i.ComboBox,{ref:a,title:E,popupSettings:{className:"k-spreadsheet-names-popup"},fillMode:"flat",clearButton:!1,dataItemKey:"name",textField:"name",itemRender:b,data:o,value:m?o.find(e=>e.name===m)||{name:m}:null,onChange:C,opened:l,onOpen:y,onClose:k,onFocus:I,listNoDataRender:v,allowCustom:!0,ariaLabel:E}))});ye.displayName="NameBox",ye.propTypes={};const ke=h.createContext({onSelect:()=>{},onDelete:()=>{},onEnterEdit:()=>{},onCancelEdit:()=>{},onExitEdit:()=>{},onEdit:()=>{}}),Ce=e=>{const t=e.dataItem,{onSelect:n,onDelete:o,onEnterEdit:r,onExitEdit:l,onCancelEdit:i,onEdit:d}=h.useContext(ke),u=h.useCallback(e=>{e.target instanceof HTMLElement&&"INPUT"===e.target.nodeName||n.call(void 0,t,e)},[t,n]),m=h.useCallback(e=>{o.call(void 0,t,e)},[t,o]),p=h.useCallback(e=>{e.target instanceof HTMLElement&&"INPUT"===e.target.nodeName||r.call(void 0,t,e)},[t,r]),g=h.useCallback(e=>{l.call(void 0,t,e)},[t,l]),f=h.useCallback(e=>{"Enter"===e.key?l.call(void 0,t,e):"Escape"===e.key&&i.call(void 0,t,e)},[t,l,i]),b=h.useCallback(e=>{d.call(void 0,{...t,text:e.target.value},e)},[t,d]);return h.createElement("li",{style:e.style,...e.attributes,ref:e.forwardRef,role:"tab",className:s.classNames("k-item k-tabstrip-item",{"k-disabled":e.isDisabled,"k-active k-state-tab-on-top k-spreadsheet-sheets-bar-active":t.active,"k-spreadsheet-sheets-bar-inactive":!t.active,"k-first":t.first,"k-last":t.last}),onClick:u,onDoubleClick:p},t.inEdit?h.createElement("input",{type:"text",className:"k-textbox k-spreadsheet-sheets-editor",value:t.text,onChange:b,maxLength:50,autoFocus:!0,onBlur:g,onKeyDown:f}):h.createElement(h.Fragment,null,h.createElement("span",{className:"k-link"},t.text),t.first&&t.last?null:h.createElement(a.Button,{fillMode:"flat",size:"xs",icon:"x",svgIcon:c.xIcon,className:"k-link k-spreadsheet-sheets-remove",onClick:m})))},xe=h.forwardRef((e,t)=>{const{children:n,className:a,...o}=e;return h.createElement("ul",{className:s.classNames("k-tabstrip-items k-reset",a),role:"tablist",...o,ref:t},n)});xe.displayName="TabsList";const Ie=e=>{const{sheets:t,setSheets:n,onSheetSelect:a,onSheetDelete:o,onSheetEdit:r,onSheetReorderEnd:l}=e,[s,c]=h.useState(null),i=h.useRef(!1),d=h.useRef(-1),m=h.useCallback(e=>{n(e.map((e,t,n)=>({...e,first:0===t,last:t===n.length-1})))},[]),p=h.useCallback(e=>{m(e.newState)},[m,l]),g=h.useCallback(e=>{l.call(void 0,e)},[l]),f=h.useCallback(e=>{i.current=!0,d.current=e.prevIndex},[]),b=h.useCallback(e=>{setTimeout(()=>{i.current=!1},50),l.call(void 0,{...e,prevIndex:d.current})},[]),v=h.useCallback((e,t)=>{i.current||a.call(void 0,e,t)},[a]),y=h.useCallback((e,t)=>{t.stopPropagation(),o.call(void 0,e)},[t,o]),k=h.useCallback((e,a)=>{a.stopPropagation(),a.preventDefault();const o=t.map(t=>({...t,active:t.id===e.id,inEdit:t.id===e.id}));n(o),c({...e})},[t]),C=h.useCallback((e,a)=>{a.stopPropagation(),a.preventDefault();const o=t.map(e=>({...e,inEdit:!1,text:e.inEdit&&s?s.text:e.text}));n(o),c(null)},[t,s]),x=h.useCallback((e,a)=>{a.stopPropagation(),a.preventDefault();const o=t.map(e=>({...e,inEdit:!1})),l=t.findIndex(t=>t.id===e.id);n(o),c(null),r.call(void 0,e,l)},[t,r]),I=h.useCallback((e,a)=>{a.stopPropagation(),a.preventDefault();const o=t.map(t=>({...t,text:e.id===t.id?e.text:t.text}));n(o)},[t]);return h.createElement("div",{className:"k-spreadsheet-sheets-items k-tabstrip k-floatwrap k-tabstrip-bottom"},h.createElement("div",{className:"k-tabstrip-items-wrapper k-hstack"},h.createElement(ke.Provider,{value:{onSelect:v,onDelete:y,onEnterEdit:k,onCancelEdit:C,onExitEdit:x,onEdit:I}},h.createElement(u.Sortable,{idField:"id",data:t,itemUI:Ce,itemsWrapUI:xe,onDragOver:p,onNavigate:g,onDragStart:f,onDragEnd:b,navigatable:!0}))))},Ee=e=>{const{spreadsheetRef:t}=e,[n,o]=h.useState([]),r=h.useRef((n.find(e=>e.active)||{}).text),l=s.useId(),i=h.useCallback(()=>{t.current&&(t.current.view.sheetsbar.onSheetSelect(r.current),o(((e,t,n)=>e.map((e,a,o)=>({text:e.name(),id:n+"-sheet-"+a,first:0===a,last:a===o.length-1,active:e.name()===t})))(t.current.sheets(),r.current,l)))},[]),u=h.useCallback(()=>{if(t.current){const e=t.current.sheets();e.find(e=>e.name()===r.current)||(r.current=e[e.length-1].name()),i()}},[]);h.useEffect(()=>(t.current&&(t.current.sheets().length&&(r.current=t.current.sheets()[0].name(),i()),t.current.view.bind("update",u)),()=>{t.current&&t.current.view.unbind("update",u)}),[t.current]);const m=h.useCallback(e=>{r.current!==e.text&&(r.current=e.text,i())},[]),p=h.useCallback(()=>{if(t.current){t.current.view.sheetsbar.onAddSelect();const e=t.current.sheets();r.current=e[e.length-1].name(),i()}},[]),g=h.useCallback(e=>{if(t.current){if(r.current===e.text){const n=t.current.sheets(),a=n.findIndex(t=>t.name()===e.text),o=n[a+1]||n[a-1];r.current=o?o.name():""}t.current.view.sheetsbar.onSheetRemove(e.text),i()}},[]),f=h.useCallback((e,n)=>{if(t.current){let a=e.text;const o=t.current.sheets(),l=o[n];if(!a)return r.current=l.name(),void i();if(l&&l.name()===a)return;o.find(e=>e.name()===a)&&(a=l.name()),t.current.view.sheetsbar.onSheetRename(a,n),r.current=a,i()}},[]),b=h.useCallback(e=>{if(t.current){const{prevIndex:n,nextIndex:a}=e;r.current=t.current.sheets()[n].name(),t.current.view.sheetsbar.onSheetReorderEnd({oldIndex:n,newIndex:a}),i()}},[]);return h.createElement("div",{className:"k-spreadsheet-sheets-bar k-header"},h.createElement(a.Button,{fillMode:"flat",size:"xs",icon:"plus",className:"k-spreadsheet-sheets-bar-add",title:d.useLocalization().toLanguageString(he.addNewSheet,ve[he.addNewSheet]),svgIcon:c.plusIcon,onClick:p}),h.createElement(Ie,{sheets:n,setSheets:o,onSheetSelect:m,onSheetDelete:g,onSheetEdit:f,onSheetReorderEnd:b}))},we=e=>{const{spreadsheetRef:t}=e,n=h.useCallback(()=>{t.current&&t.current.saveAsExcel({...t.current.options.excel,saveAs:p.saveAs,Workbook:g.Workbook})},[]);return h.createElement(a.Button,{className:"k-toolbar-button",title:"Export...",icon:"download",fillMode:"flat",svgIcon:c.downloadIcon,onClick:n})};we.displayName="ExcelExport";const Se=e=>{const{spreadsheetRef:t}=e,n=h.useCallback(e=>{const t=e.target;if(t instanceof Element&&t.parentNode){const e=t.closest(".k-toolbar"),n=e&&e.querySelector(".k-upload input");n&&n.click()}},[]),o=h.useCallback(e=>{const n=e.newState;if(n[0]&&n[0].getRawFile){const e=n[0].getRawFile();t.current&&t.current.executeCommand({command:"OpenCommand",options:{file:e}})}},[]);return h.createElement(h.Fragment,null,h.createElement(a.Button,{className:"k-toolbar-button",title:d.useLocalization().toLanguageString(he.open,ve[he.open]),icon:"folder-open",svgIcon:c.folderOpenIcon,fillMode:"flat",onClick:n}),h.createElement("div",{style:{display:"none"}},h.createElement(f.Upload,{restrictions:{allowedExtensions:[".xlsx"]},onAdd:o,autoUpload:!1,defaultFiles:[],multiple:!1,accept:".xlsx,.XLSX",withCredentials:!1})))};Se.displayName="Open";const Re=["Arial","Courier New","Georgia","Times New Roman","Trebuchet MS","Verdana"],Ne=[8,9,10,11,12,13,14,16,18,20,22,24,26,28,36,48,72],Ae=[{text:"Automatic",value:null},{text:"Text",value:"@"},{text:"Number",value:"#,0.00"},{text:"Percent",value:"0.00%"},{text:"Financial",value:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)'},{text:"Currency",value:"$#,##0.00;[Red]$#,##0.00"},{text:"Date",value:"m/d/yyyy"},{text:"Time",value:"h:mm:ss AM/PM"},{text:"Date time",value:"m/d/yyyy h:mm"},{text:"Duration",value:"[h]:mm:ss"}],De=e=>t=>{const{property:n,icon:o,svgIcon:r,titleKey:l}=e,{spreadsheetRef:s,value:c}=t,i=h.useCallback(()=>{if(s.current){const e={command:"PropertyChangeCommand",options:{property:n,value:!c}};s.current.executeCommand(e)}},[c]);return h.createElement(a.Button,{type:"button",icon:o,svgIcon:r,fillMode:"flat",togglable:!0,onClick:i,selected:!!c,title:d.useLocalization().toLanguageString(l,ve[l])})},Le=e=>t=>{const{property:n,titleKey:a,...o}=e,{spreadsheetRef:r,value:l}=t,s=h.useCallback(e=>{if(r.current){const t={command:"PropertyChangeCommand",options:{property:n,value:e.value||null}};r.current.executeCommand(t)}},[n]);return h.createElement(b.ColorPicker,{onChange:s,onActiveColorClick:s,fillMode:"flat",...o,title:d.useLocalization().toLanguageString(a,ve[a]),value:l})},Ke=e=>t=>{const{spreadsheetRef:n}=t,o=h.useCallback(()=>{n.current&&n.current.workbook.undoRedoStack[e.action]()},[]);return h.createElement(a.Button,{type:"button",icon:e.icon,svgIcon:e.svgIcon,fillMode:"flat",title:d.useLocalization().toLanguageString(e.titleKey,ve[e.titleKey]),onClick:o,togglable:!0})},Fe=De({property:"bold",icon:"bold",svgIcon:c.boldIcon,titleKey:he.bold});Fe.displayName="Bold";const Te=De({property:"italic",icon:"italic",svgIcon:c.italicIcon,titleKey:he.italic});Te.displayName="Italic";const ze=De({property:"underline",icon:"underline",svgIcon:c.underlineIcon,titleKey:he.underline});ze.displayName="Underline";const Pe=e=>{const{spreadsheetRef:t,value:n}=e,a=h.useCallback(e=>{if(t.current){const n={command:"PropertyChangeCommand",options:{property:"fontFamily",value:e.value||null}};t.current.executeCommand(n)}},[]);return h.createElement(i.DropDownList,{onChange:a,value:n,data:Re,defaultValue:"Arial",fillMode:"flat",title:d.useLocalization().toLanguageString(he.fontName,ve[he.fontName]),leftRightKeysNavigation:!1})};Pe.displayName="FontFamily";const Be=e=>"string"==typeof e?parseFloat(e):e,Oe=e=>{const{spreadsheetRef:t}=e,n=Be(e.value),a=h.useCallback(e=>{var a;let o=e.value?Be(e.value):n;o=isNaN(o)?n:o,o=Math.min(409,Math.max(1,o));const r={command:"PropertyChangeCommand",options:{property:"fontSize",value:o}};"keydown"===e.nativeEvent.type||"focusout"===e.nativeEvent.type?null==(a=t.current)||a.executeCommand(r):setTimeout(()=>{var e;null==(e=t.current)||e.executeCommand(r)},0)},[n]),o=d.useLocalization().toLanguageString(he.fontSize,ve[he.fontSize]);return h.createElement(i.ComboBox,{onChange:a,value:n,data:Ne,defaultValue:12,allowCustom:!0,fillMode:"flat",title:o,tabIndex:-1,clearButton:!1,ariaLabel:o})};Oe.displayName="FontSize";const Me=e=>{const t=t=>{const{property:n,icon:o,svgIcon:r,titleKey:l,step:s}=e,{spreadsheetRef:c}=t,i=Be(t.value),u=h.useCallback(()=>{var e;const t={command:"PropertyChangeCommand",options:{property:n,value:Math.min(409,Math.max(1,i+s))}};null==(e=c.current)||e.executeCommand(t)},[i]);return h.createElement(a.Button,{type:"button",icon:o,svgIcon:r,fillMode:"flat",onClick:u,disabled:i+s<1||i+s>409,title:d.useLocalization().toLanguageString(l,ve[l])})};return t.displayName=e.displayName,t},je=Me({property:"fontSize",icon:"font-grow",svgIcon:c.fontGrowIcon,titleKey:he.fontSizeIncrease,displayName:"IncreaseFontSize",step:1}),He=Me({property:"fontSize",icon:"font-shrink",svgIcon:c.fontShrinkIcon,titleKey:he.fontSizeDecrease,displayName:"DecreaseFontSize",step:-1}),We=Le({icon:"foreground-color",svgIcon:c.foregroundColorIcon,view:"palette",property:"color",titleKey:he.textColor,ariaLabel:"Text Color"});We.displayName="TextColor";const Ue=Le({icon:"droplet",svgIcon:c.dropletIcon,view:"palette",property:"background",titleKey:he.background,ariaLabel:"Background"});Ue.displayName="BackgroundColor";const qe=[{icon:"align-left",svgIcon:c.alignLeftIcon,textKey:he.alignLeft,commandName:"textAlign",value:"left",selected:!1},{icon:"align-center",svgIcon:c.alignCenterIcon,textKey:he.alignCenter,commandName:"textAlign",value:"center",selected:!1},{icon:"align-right",svgIcon:c.alignRightIcon,textKey:he.alignRight,commandName:"textAlign",value:"right",selected:!1},{icon:"align-justify",svgIcon:c.alignJustifyIcon,textKey:he.alignJustify,commandName:"textAlign",value:"justify",selected:!1},{icon:"align-top",svgIcon:c.alignTopIcon,textKey:he.alignTop,commandName:"verticalAlign",value:"top",selected:!1},{icon:"align-middle",svgIcon:c.alignMiddleIcon,textKey:he.alignMiddle,commandName:"verticalAlign",value:"center",selected:!1},{icon:"align-bottom",svgIcon:c.alignBottomIcon,textKey:he.alignBottom,commandName:"verticalAlign",value:"bottom",selected:!1}],Ve=[qe[0],{...qe[1],textKey:he.center},qe[2],{...qe[3],textKey:he.justify}],Je=qe.filter(e=>"verticalAlign"===e.commandName),_e=e=>{const{value:t,spreadsheetRef:n}=e,{textAlign:o,verticalAlign:r}=t||{},l=d.useLocalization(),i=h.useCallback(e=>{if(n.current){const t=e.item,a={command:"PropertyChangeCommand",options:{property:t.commandName,value:t.value||null}};n.current.executeCommand(a)}},[]);let u=qe.slice();return u=u.map(e=>({...e,text:l.toLanguageString(e.textKey,ve[e.textKey])})),o&&(u=u.map(e=>"textAlign"===e.commandName?{...e,selected:e.value===o}:e)),r&&(u=u.map(e=>"verticalAlign"===e.commandName?{...e,selected:e.value===r}:e)),h.createElement(a.DropDownButton,{icon:"align-left",svgIcon:c.alignLeftIcon,items:u,fillMode:"flat",onItemClick:i,title:l.toLanguageString(he.align,ve[he.align]),text:h.createElement(s.IconWrap,{name:"chevron-down",icon:c.chevronDownIcon})})};_e.displayName="Alignment";const Ge={items:Ve,icon:{icon:"align-left",svgIcon:c.alignLeftIcon},displayName:"AlignHorizontally",titleKey:he.alignHorizontally},$e={items:Je,icon:{icon:"align-bottom",svgIcon:c.alignBottomIcon},displayName:"AlignVertically",titleKey:he.alignVertically},Xe=e=>{const t=t=>{const{value:n,spreadsheetRef:o}=t,r=d.useLocalization(),l=h.useCallback(e=>{if(o.current){const t=e.item,n={command:"PropertyChangeCommand",options:{property:t.commandName,value:t.value||null}};o.current.executeCommand(n)}},[]);let i=e.items.slice();i=i.map(e=>({...e,text:r.toLanguageString(e.textKey,ve[e.textKey])})),i=i.map(e=>({...e,selected:e.value===n}));const u={...e.icon},m=i.find(e=>e.selected);return m&&(u.icon=m.icon,u.svgIcon=m.svgIcon),h.createElement(a.DropDownButton,{...u,items:i,fillMode:"flat",onItemClick:l,title:r.toLanguageString(e.titleKey,ve[e.titleKey]),text:h.createElement(s.IconWrap,{name:"chevron-down",icon:c.chevronDownIcon})})};return t.displayName=e.displayName,t},Qe=Xe(Ge),Ye=Xe($e),Ze=e=>{const{value:t,spreadsheetRef:n}=e,o=h.useCallback(()=>{if(n.current){const e=n.current.activeSheet();if(e){const t={command:"TextWrapCommand",options:{property:"wrap",value:!e.range(e.activeCell()).wrap()}};n.current.executeCommand(t)}}},[]);return h.createElement(a.Button,{type:"button",togglable:!0,icon:"text-wrap-arrow",svgIcon:c.textWrapArrowIcon,fillMode:"flat",title:d.useLocalization().toLanguageString(he.textWrap,ve[he.textWrap]),onClick:o,selected:t})};Ze.displayName="TextWrap";const et=e=>{const{value:t,spreadsheetRef:n}=e,o=h.useCallback(()=>{if(n.current){const e=n.current.activeSheet();if(e){const t={command:"GridLinesChangeCommand",options:{property:"gridLines",value:!e.showGridLines()}};n.current.executeCommand(t)}}},[]);return h.createElement(a.Button,{type:"button",togglable:!0,icon:"borders-none",svgIcon:c.bordersNoneIcon,fillMode:"flat",title:d.useLocalization().toLanguageString(he.gridLines,ve[he.gridLines]),onClick:o,selected:t})};et.displayName="GridLines";const tt=e=>{const{spreadsheetRef:t}=e,n=h.useCallback(e=>{const n=e.item.value||null;setTimeout(()=>{if(t.current){const e={command:"PropertyChangeCommand",options:{property:"format",value:n}};t.current.executeCommand(e)}},0)},[]);return h.createElement(a.DropDownButton,{icon:"custom-format",svgIcon:c.customFormatIcon,fillMode:"flat",onItemClick:n,items:Ae,title:d.useLocalization().toLanguageString(he.format,ve[he.format]),text:h.createElement(s.IconWrap,{name:"chevron-down"})})};tt.displayName="Format";const nt=e=>t=>{const{spreadsheetRef:n,value:o}=t,r=h.useCallback(()=>{if(n.current){const t={command:e.command,options:{value:e.value}};n.current.executeCommand(t)}},[]);return h.createElement(a.Button,{type:"button",icon:e.icon,svgIcon:e.svgIcon,fillMode:"flat",title:d.useLocalization().toLanguageString(e.titleKey,ve[e.titleKey]),onClick:r,disabled:o&&e.disabled(o)})},at={command:"AddColumnCommand",value:"left",icon:"table-column-insert-left",svgIcon:c.tableColumnInsertLeftIcon,titleKey:he.addColumnLeft,disabled:e=>e.allCols,displayName:"AddColumnLeft"},ot={command:"AddColumnCommand",value:"right",icon:"table-column-insert-right",svgIcon:c.tableColumnInsertRightIcon,titleKey:he.addColumnRight,disabled:e=>e.allCols,displayName:"AddColumnRight"},rt={command:"AddRowCommand",value:"below",icon:"table-row-insert-below",svgIcon:c.tableRowInsertBelowIcon,titleKey:he.addRowBelow,disabled:e=>e.allRows,displayName:"AddRowBelow"},lt={command:"AddRowCommand",value:"above",icon:"table-row-insert-above",svgIcon:c.tableRowInsertAboveIcon,titleKey:he.addRowAbove,disabled:e=>e.allRows,displayName:"AddRowAbove"},st={command:"DeleteColumnCommand",icon:"table-column-delete",svgIcon:c.tableColumnDeleteIcon,titleKey:he.deleteColumn,disabled:e=>e.allCols,displayName:"DeleteColumn"},ct={command:"DeleteRowCommand",icon:"table-row-delete",svgIcon:c.tableRowDeleteIcon,titleKey:he.deleteRow,disabled:e=>e.allRows,displayName:"DeleteRow"},it=nt(at),dt=nt(ot),ut=nt(rt),mt=nt(lt),pt=nt(st),gt=nt(ct);it.displayName="AddColumnLeft",dt.displayName="AddColumnRight",ut.displayName="AddRowBelow",mt.displayName="AddRowAbove",pt.displayName="DeleteColumn",gt.displayName="DeleteRow";const ft=Ke({action:"undo",icon:"reset",svgIcon:c.arrowRotateCcwIcon,titleKey:he.undo});ft.displayName="Undo";const bt=Ke({action:"redo",icon:"reload",svgIcon:c.arrowRotateCwIcon,titleKey:he.redo});bt.displayName="Redo";const vt=e=>t=>{const{icon:n,svgIcon:o,titleKey:r,value:l}=e,{spreadsheetRef:s}=t,c=h.useCallback(()=>{if(s.current){const e={command:"AdjustDecimalsCommand",options:{value:l}};s.current.executeCommand(e)}},[]);return h.createElement(a.Button,{type:"button",icon:n,svgIcon:o,fillMode:"flat",onClick:c,title:d.useLocalization().toLanguageString(r,ve[r])})},ht=vt({icon:c.decimalIncreaseIcon.name,svgIcon:c.decimalIncreaseIcon,value:1,titleKey:he.increaseDecimal});ht.displayName="IncreaseDecimal";const yt=vt({icon:c.decimalDecreaseIcon.name,svgIcon:c.decimalDecreaseIcon,value:-1,titleKey:he.decreaseDecimal});yt.displayName="DecreaseDecimal";const kt=[{textKey:he.file,tools:[Se,we]},{textKey:he.home,selected:!0,tools:[[ft,bt],a.ToolbarSeparator,Pe,Oe,je,He,a.ToolbarSeparator,[Fe,Te,ze],We,a.ToolbarSeparator,Ue,a.ToolbarSeparator,Qe,Ye,Ze,a.ToolbarSeparator,et]},{textKey:he.insert,tools:[[it,dt,ut,mt],a.ToolbarSeparator,[pt,gt]]},{textKey:he.formatTab,tools:[tt,[yt,ht]]}],Ct=Object.freeze({name:"@progress/kendo-react-spreadsheet",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate:1683639393,version:"15.0.0-develop.2",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning"}),xt=["bold","italic","underline","fontFamily","fontSize","color","background","textAlign","verticalAlign","wrap","gridLines"],It={Bold:e=>e.bold,Italic:e=>e.italic,Underline:e=>e.underline,FontFamily:e=>e.fontFamily,FontSize:e=>e.fontSize,IncreaseFontSize:e=>e.fontSize,DecreaseFontSize:e=>e.fontSize,TextColor:e=>e.color,BackgroundColor:e=>e.background,Alignment:e=>({textAlign:e.textAlign,verticalAlign:e.verticalAlign}),AlignHorizontally:e=>e.textAlign,AlignVertically:e=>e.verticalAlign,TextWrap:e=>e.wrap,GridLines:e=>e.gridLines,AddColumnLeft:e=>e.selectedHeaders,AddColumnRight:e=>e.selectedHeaders,AddRowBelow:e=>e.selectedHeaders,AddRowAbove:e=>e.selectedHeaders,DeleteColumn:e=>e.selectedHeaders,DeleteRow:e=>e.selectedHeaders},Et=":not(.k-dropdownlist button):not(.k-combobox button):not(.k-upload-button):not(.k-colorpicker button):not(.k-split-button .k-split-button-arrow)",wt=["button"+Et,".k-button-group > button"+Et,".k-dropdownlist",".k-combobox",".k-colorpicker"],St=h.forwardRef((e,t)=>{const n=!s.validatePackage(Ct,{component:"Spreadsheet"}),l=s.getLicenseMessage(Ct),{toolbar:i=kt}=e,u=[];"boolean"==typeof i?u.push(...i?kt:[]):u.push(...i);const[f,b]=h.useState(null),[v,y]=h.useState(u.findIndex(e=>e.selected)||0),[C,x]=h.useState(!1),I=h.useRef(null),E=h.useRef(null),w=h.useRef(null),S=h.useRef(null),R=h.useRef(null),[N,A]=h.useState({}),D=h.useRef({});D.current=N;const L=h.useRef({});L.current=e;const K=d.useLocalization(),F=h.useCallback(e=>{L.current.onSelect&&L.current.onSelect.call(void 0,e)},[]),T=h.useCallback(e=>{L.current.onChange&&L.current.onChange.call(void 0,e)},[]),z=h.useCallback(e=>{L.current.onChangeFormat&&L.current.onChangeFormat.call(void 0,e)},[]),P=h.useCallback(e=>{L.current.onExcelImport&&L.current.onExcelImport.call(void 0,e)},[]),B=h.useCallback(e=>{L.current.onExcelExport&&L.current.onExcelExport.call(void 0,e)},[]),O=h.useRef(null);h.useImperativeHandle(O,()=>({element:I.current,get instance(){return R.current},props:e,get view(){return R.current.view},get workbook(){return R.current.workbook},executeCommand(e){var t;null==(t=R.current)||t.executeCommand(e)},fromJSON(e){var t;return null==(t=R.current)?void 0:t.fromJSON(e)},toJSON:()=>R.current.toJSON(),saveJSON:()=>R.current.saveJSON(),fromFile:e=>R.current.fromFile(e),saveAsExcel(e){var t;null==(t=R.current)||t.saveAsExcel({...R.current.options.excel,saveAs:p.saveAs,Workbook:g.Workbook,...e})},activeSheet(e){var t;return null==(t=R.current)?void 0:t.activeSheet(e)},sheets:()=>R.current.sheets(),refresh(){var e;return null==(e=R.current)?void 0:e.refresh()}}),[e]),h.useImperativeHandle(t,()=>O.current),s.useWebMcpRegister("spreadsheet",O,e,e.webMcp);const M=h.useCallback(()=>R.current&&R.current.view.nameEditor,[]),j=h.useCallback(e=>{const t={};xt.forEach(n=>{"function"==typeof e.range[n]?t[n]=e.range[n]():"gridLines"===n&&(t[n]=e.range.sheet().showGridLines())}),t.selectedHeaders=e.range.sheet().selectedHeaders(),(xt.some(e=>t[e]!==D.current[e])||t.selectedHeaders.allCols!==D.current.selectedHeaders.allCols||t.selectedHeaders.allRows!==D.current.selectedHeaders.allRows)&&A(t)},[]),H=h.useCallback(e=>{const t=e.name,n=he[t];b({title:"Error"===e.title?K.toLanguageString(he.error,ve[he.error]):e.title,message:n?K.toLanguageString(n,ve[n]||e.text):e.text,close:e.close})},[]),W=h.useCallback(()=>{b(null),null==f||f.close()},[f]),U=d.useInternationalization(),q=d.useLocalization();h.useEffect(()=>{var t;const n={...e.defaultProps,sheets:null==window?void 0:window.structuredClone(null==(t=e.defaultProps)?void 0:t.sheets),messages:{workbook:{defaultSheetName:q.toLanguageString(he.defaultSheetName,ve[he.defaultSheetName])}},intl:{localeInfo:()=>U.localeInfo(),localeCurrency:()=>U.localeCurrency(),parseDate:(e,t)=>U.parseDate(e,t),toString:(e,t)=>U.toString(e,t),format:(e,...t)=>U.format(e,...t)},formulaBarInputRef:E,formulaCellInputRef:w,nameBoxRef:S},a=new m.SpreadsheetWidget(I.current,n);R.current=a,a.bind("select",F),a.bind("change",T),a.bind("changeFormat",z),a.bind("excelImport",P),a.bind("excelExport",B),a.view.bind("update",j),a.view.bind("message",H);const o=a.activeSheet();return o&&j({range:o.range(o.activeCell())}),x(!0),()=>{a.destroy()}},[]);const V=h.useCallback((e,t)=>{const n=h.createElement(e,{spreadsheetRef:R,value:It[e.displayName]?It[e.displayName](N):void 0,key:t});return n.type===a.ToolbarSeparator?h.createElement(e,{key:t}):n},[N]);let J=null;return u.length&&(J=h.createElement(o.TabStrip,{selected:v,animation:!1,className:"k-floatwrap k-spreadsheet-tabstrip",style:{minHeight:"auto"},onSelect:e=>y(e.selected)},u.map(e=>{const t=e.textKey?q.toLanguageString(e.textKey,ve[e.textKey]):e.text;return h.createElement(o.TabStripTab,{key:e.textKey||e.text,title:t},h.createElement(a.Toolbar,{buttons:wt,className:"k-spreadsheet-toolbar"},e.tools.map((e,t)=>Array.isArray(e)?h.createElement(a.ButtonGroup,{key:t},e.map((e,t)=>V(e,t))):V(e,t))))}))),h.createElement("div",{ref:I,style:e.style,className:s.classNames("k-widget k-spreadsheet",e.className),role:"application"},J,h.createElement("div",{className:"k-spreadsheet-action-bar"},h.createElement(ye,{ref:S,nameEditor:M}),h.createElement("div",{className:"k-spreadsheet-formula-bar"},h.createElement(s.IconWrap,{name:"formula-fx",icon:c.formulaFxIcon}),h.createElement(k,{ref:E}))),h.createElement("div",{className:"k-spreadsheet-view"},h.createElement("div",{className:"k-spreadsheet-fixed-container"}),h.createElement("div",{className:"k-spreadsheet-scroller"},h.createElement("div",{className:"k-spreadsheet-view-size"})),h.createElement("div",{tabIndex:0,className:"k-spreadsheet-clipboard",contentEditable:"true"}),h.createElement(k,{ref:w,className:"k-spreadsheet-cell-editor"})),h.createElement(Ee,{spreadsheetRef:R}),f&&h.createElement(r.Dialog,{title:f.title,onClose:W},h.createElement("div",null,f.message),h.createElement(r.DialogActionsBar,{layout:"start"},h.createElement(a.Button,{themeColor:"primary",onClick:W,autoFocus:!0},K.toLanguageString(he.ok,ve[he.ok])))),n&&h.createElement(s.WatermarkOverlay,{message:l}))});St.displayName="KendoReactSpreadsheet",St.propTypes={className:n.string,defaultProps:n.any,toolbar:n.oneOfType([n.bool,n.arrayOf(n.any)]),style:n.object,onSelect:n.func,onChange:n.func,onChangeFormat:n.func,onExcelImport:n.func,onExcelExport:n.func};Object.defineProperty(e,"CalcError",{enumerable:!0,get:function(){return m.CalcError}}),Object.defineProperty(e,"CellRef",{enumerable:!0,get:function(){return m.CellRef}}),Object.defineProperty(e,"Context",{enumerable:!0,get:function(){return m.Context}}),Object.defineProperty(e,"Matrix",{enumerable:!0,get:function(){return m.Matrix}}),Object.defineProperty(e,"NULLREF",{enumerable:!0,get:function(){return m.NULLREF}}),Object.defineProperty(e,"NameRef",{enumerable:!0,get:function(){return m.NameRef}}),Object.defineProperty(e,"Range",{enumerable:!0,get:function(){return m.Range}}),Object.defineProperty(e,"RangeRef",{enumerable:!0,get:function(){return m.RangeRef}}),Object.defineProperty(e,"Ref",{enumerable:!0,get:function(){return m.Ref}}),Object.defineProperty(e,"Sheet",{enumerable:!0,get:function(){return m.Sheet}}),Object.defineProperty(e,"SpreadsheetWidget",{enumerable:!0,get:function(){return m.SpreadsheetWidget}}),Object.defineProperty(e,"UnionRef",{enumerable:!0,get:function(){return m.UnionRef}}),Object.defineProperty(e,"View",{enumerable:!0,get:function(){return m.View}}),Object.defineProperty(e,"Workbook",{enumerable:!0,get:function(){return m.Workbook}}),Object.defineProperty(e,"dateToSerial",{enumerable:!0,get:function(){return m.dateToSerial}}),Object.defineProperty(e,"defineAlias",{enumerable:!0,get:function(){return m.defineAlias}}),Object.defineProperty(e,"defineFunction",{enumerable:!0,get:function(){return m.defineFunction}}),Object.defineProperty(e,"packDate",{enumerable:!0,get:function(){return m.packDate}}),Object.defineProperty(e,"packTime",{enumerable:!0,get:function(){return m.packTime}}),Object.defineProperty(e,"serialToDate",{enumerable:!0,get:function(){return m.serialToDate}}),Object.defineProperty(e,"unpackDate",{enumerable:!0,get:function(){return m.unpackDate}}),Object.defineProperty(e,"unpackTime",{enumerable:!0,get:function(){return m.unpackTime}}),e.AddColumnLeft=it,e.AddColumnRight=dt,e.AddRowAbove=mt,e.AddRowBelow=ut,e.AlignHorizontally=Qe,e.AlignVertically=Ye,e.Alignment=_e,e.BackgroundColor=Ue,e.Bold=Fe,e.CleanFormatting=e=>{const{spreadsheetRef:t}=e,n=h.useCallback(()=>{t.current&&t.current.executeCommand({command:"PropertyCleanCommand"})},[]);return h.createElement(a.Button,{type:"button",icon:"clean-css",svgIcon:c.clearCssIcon,fillMode:"flat",onClick:n,title:d.useLocalization().toLanguageString(he.cleanFormatting,ve[he.cleanFormatting])})},e.DecreaseDecimal=yt,e.DecreaseFontSize=He,e.DeleteColumn=pt,e.DeleteRow=gt,e.ExcelExport=we,e.FontFamily=Pe,e.FontSize=Oe,e.Format=tt,e.GridLines=et,e.IncreaseDecimal=ht,e.IncreaseFontSize=je,e.Italic=Te,e.Open=Se,e.Redo=bt,e.Spreadsheet=St,e.TextColor=We,e.TextWrap=Ze,e.Underline=ze,e.Undo=ft,e.defaultTabs=kt,e.toolsValueMap=It});
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=Object.freeze({name:"@progress/kendo-react-spreadsheet",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1778599708,version:"14.5.0-develop.9",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning"});exports.packageMetadata=e;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=Object.freeze({name:"@progress/kendo-react-spreadsheet",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1779253396,version:"15.0.0-develop.2",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning"});exports.packageMetadata=e;
@@ -6,8 +6,8 @@ export const packageMetadata = Object.freeze({
6
6
  productName: 'KendoReact',
7
7
  productCode: 'KENDOUIREACT',
8
8
  productCodes: ['KENDOUIREACT'],
9
- publishDate: 1778599708,
10
- version: '14.5.0-develop.9',
9
+ publishDate: 1779253396,
10
+ version: '15.0.0-develop.2',
11
11
  licensingDocsUrl:
12
12
  'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'
13
13
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-react-spreadsheet",
3
- "version": "14.5.0-develop.9",
3
+ "version": "15.0.0-develop.2",
4
4
  "description": "KendoReact Spreadsheet package",
5
5
  "author": "Progress",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -32,17 +32,17 @@
32
32
  "@progress/kendo-file-saver": "^1.1.1",
33
33
  "@progress/kendo-licensing": "^1.7.2",
34
34
  "@progress/kendo-ooxml": "^1.7.0",
35
- "@progress/kendo-react-buttons": "14.5.0-develop.9",
36
- "@progress/kendo-react-common": "14.5.0-develop.9",
37
- "@progress/kendo-react-dialogs": "14.5.0-develop.9",
38
- "@progress/kendo-react-dropdowns": "14.5.0-develop.9",
39
- "@progress/kendo-react-inputs": "14.5.0-develop.9",
40
- "@progress/kendo-react-intl": "14.5.0-develop.9",
41
- "@progress/kendo-react-layout": "14.5.0-develop.9",
42
- "@progress/kendo-react-popup": "14.5.0-develop.9",
43
- "@progress/kendo-react-sortable": "14.5.0-develop.9",
44
- "@progress/kendo-react-upload": "14.5.0-develop.9",
45
- "@progress/kendo-spreadsheet-common": "^1.2.7",
35
+ "@progress/kendo-react-buttons": "15.0.0-develop.2",
36
+ "@progress/kendo-react-common": "15.0.0-develop.2",
37
+ "@progress/kendo-react-dialogs": "15.0.0-develop.2",
38
+ "@progress/kendo-react-dropdowns": "15.0.0-develop.2",
39
+ "@progress/kendo-react-inputs": "15.0.0-develop.2",
40
+ "@progress/kendo-react-intl": "15.0.0-develop.2",
41
+ "@progress/kendo-react-layout": "15.0.0-develop.2",
42
+ "@progress/kendo-react-popup": "15.0.0-develop.2",
43
+ "@progress/kendo-react-sortable": "15.0.0-develop.2",
44
+ "@progress/kendo-react-upload": "15.0.0-develop.2",
45
+ "@progress/kendo-spreadsheet-common": "^1.2.12",
46
46
  "@progress/kendo-svg-icons": "^4.9.0 || ^5.0.0",
47
47
  "react": "^18.0.0 || ^19.0.0",
48
48
  "react-dom": "^18.0.0 || ^19.0.0"
@@ -68,7 +68,7 @@
68
68
  "package": {
69
69
  "productName": "KendoReact",
70
70
  "productCode": "KENDOUIREACT",
71
- "publishDate": 1778599708,
71
+ "publishDate": 1779253396,
72
72
  "licensingDocsUrl": "https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning"
73
73
  }
74
74
  },